springai系列(二)从0开始搭建和接入azure-openai实现智能问答

文章目录

前言

之前使用openai的官网的api需要科学上网,但是我们可以使用其他的代理间接实现使用chatgpt的相关模型,解决这个问题。比如:本文使用azure openai来实现这个功能。开发框架是java的springai。

1.从0开始搭建项目

生成项目和相关的pom依赖。

生成的pom文件如下:

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.4.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<url/>
	<licenses>
		<license/>
	</licenses>
	<developers>
		<developer/>
	</developers>
	<scm>
		<connection/>
		<developerConnection/>
		<tag/>
		<url/>
	</scm>
	<properties>
		<java.version>21</java.version>
		<spring-ai.version>1.0.0-M6</spring-ai.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-bom</artifactId>
				<version>${spring-ai.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2.进入微软openai申请key

申请入口
https://portal.azure.com/#home

可以根据下面的文章创建服务,选择模型部署。
https://www.zhihu.com/question/624318530/answer/3291008787

创建完成后,会得到下面的一个部署名称,apil-key,和节点

3.配置application.yaml

yaml 复制代码
spring:
  ai:
    azure:
      openai:
        api-key: xxxsxxx
        endpoint: https://xxx.openai.azure.com/
        chat:
          options:
            maxTokens: 4096
            temperature: 0.7
            deployment-name: 上面的部署名称

4.编写controller

java 复制代码
package com.example.demo.controller;

import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import java.util.Map;

@RestController
public class ChatController {

    private final AzureOpenAiChatModel chatModel;

    @Autowired
    public ChatController(AzureOpenAiChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", this.chatModel.call(message));
    }

    @GetMapping("/ai/generateStream")
	public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return this.chatModel.stream(prompt);
    }

}

5.测试

显示可以正常问答了。

源码下载地址

https://download.csdn.net/download/baidu_21349635/90436706

总结

这篇文章介绍了如何使用Azure OpenAI API在Java Spring Boot项目中实现ChatGPT功能。文章的主要步骤包括:

  1. 项目搭建
    生成一个Spring Boot项目并配置相关的pom.xml依赖,使用spring-boot-starter-web和spring-ai-azure-openai-spring-boot-starter作为核心依赖。项目还使用了spring-ai-bom来管理版本。
  2. 获取Azure OpenAI API Key
    通过微软Azure门户申请API密钥,并创建OpenAI服务实例。完成后,将获得一个部署名称和API节点,用于配置API请求。
  3. 配置application.yaml
    在application.yaml文件中配置API密钥、API端点、聊天选项(如最大token数和温度),以及部署名称。
  4. 编写Controller
    创建一个ChatController类,使用AzureOpenAiChatModel与OpenAI API进行交互。提供两个接口:一个是同步生成消息的接口(/ai/generate),另一个是流式生成消息的接口(/ai/generateStream)。
  5. 测试
    运行应用程序并测试接口,确认可以正常通过API生成聊天回复。
    总体来说,文章通过详细的步骤指导开发者在Spring Boot框架下集成Azure OpenAI,实现与ChatGPT模型的交互。

本文完

相关推荐
GlobalInfo1 天前
2026年全球机器人用超平执行器市场研究报告:市场规模达7.51亿美元,人形机器人商业化与轻量化运动控制需求推动行业增长
大数据·人工智能·数码相机·microsoft·机器人
薛定谔的猫-菜鸟程序员1 天前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
编码者卢布2 天前
【Azure Container Apps】为什么通过 Diagnostic Settings 发送到 Log Analytics 中的日志会延迟几分钟?
microsoft·azure
0x00072 天前
微软intelligent-terminal:Windows 的官方内置Agent Cli
microsoft
海盗12342 天前
微软技术日报 2026-11-02:开发者环境服务退役、Defender 清点本地 AI 代理
人工智能·microsoft·机器人·人工智能aigc
海盗12343 天前
微软技术日报 2026-11-01:语言模型 API 免申请、8 个威胁组织被分四档
人工智能·microsoft·语言模型·机器人·人工智能aigc
ShineWinsu3 天前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
鬼手点金4 天前
提示注入:上下文安全的核心威胁
人工智能·安全·microsoft·机器学习·缓存·prompt
JSMSEMI114 天前
JSM20NP06D N 沟道 + P 沟道互补对管 MOSFET
microsoft
前端精髓4 天前
调用大模型API
运维·服务器·microsoft