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模型的交互。

本文完

相关推荐
工业互联网专业15 小时前
基于python的内蒙古旅游景点数据分析系统-Flask+spider+vue
vue.js·python·flask·毕业设计·源码·课程设计·内蒙古旅游景点数据分析系统
Leinwin21 小时前
Microsoft Azure 马来西亚区域正式上线
microsoft·azure
运维行者_21 小时前
Azure数据库监控:如何在2025年选择合适的工具
运维·服务器·网络·数据库·flask·自动化·azure
ZHOU_WUYI1 天前
Flask RESTful 示例
python·flask·restful
面朝大海,春不暖,花不开1 天前
Spring AI与Spring Modulith核心技术解析
人工智能·spring·flask
Blossom.1181 天前
基于区块链的供应链溯源系统:构建与实践
人工智能·python·深度学习·机器学习·计算机视觉·flask·区块链
RunsenLIu1 天前
基于Flask前后端分离智慧安防小区系统
后端·python·flask
ReadThroughLife2 天前
【已解决】MACOS M4 芯片使用 Docker Desktop 工具安装 MICROSOFT SQL SERVER
microsoft·macos·docker·容器
Blue桃之夭夭2 天前
深入理解Optional:处理空指针异常
linux·windows·microsoft
伍六星2 天前
Flask和Django,你怎么选?
数据库·django·flask