Spring AI是AI工程师的一个应用框架,它提供了一个友好的API和开发AI应用的抽象,旨在简化AI应用的开发工序,例如开发一款基于ChatGPT的对话应用程序。通过使用Spring Ai使我们更简单直接使用chatgpt
jdk17

引入依赖

配置spring仓库
spring-milestones Spring Milestones https://repo.spring.io/milestone false spring-snapshots Spring Snapshots https://repo.spring.io/snapshot false 整个pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 3.2.5 com.example springai-test 0.0.1-SNAPSHOT springai-test Demo project for Spring Boot 17 0.8.1 org.springframework.boot spring-boot-starter-web org.springframework.ai spring-ai-openai-spring-boot-starter 0.8.1 org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.springframework.ai spring-ai-openai 0.8.1 org.springframework.ai spring-ai-bom ${spring-ai.version} pom import org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok spring-milestones Spring Milestones https://repo.spring.io/milestone false spring-snapshots Spring Snapshots https://repo.spring.io/snapshot false 因为阿里仓库暂时还没有对应的spring-ai-openai-spring-boot-
starter 依赖,所以Maven的仓库源需要使用Maven默认的仓库
源,在Maven的settings.xml中进行修改即可
maven-default-http-blocker external:http:* Pseudo repository to mirror external repositories initially using HTTP . http://0.0.0.0/ true 如果依赖还没引入成功,可以下载jar包,地址repo.spring.io
将jar包安装至本地仓库后使用pom文件直接引入
mvn install:install-file -Dfile=你的jar包路径/你的jar包名字 -DgroupId=org.springframework.ai -DartifactId=spring-ai-openai-spring-boot-starter -Dversion=0.8.1 -Dpackaging=jar
application.properties
spring.application.name=demo server.port=8080 spring.ai.openai.api-key=你的api-key #最好找一个中转url,不然得配置代理 spring.ai.openai.base-url=http://api.openai.com spring.ai.openai.chat.options.model=gpt-3.5-turbo controller
一个直接返回结果,一个流式返回
package com.example.demo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ai.chat.ChatResponse; import org.springframework.ai.chat.messages.UserMessage; import org.springframework.ai.chat.prompt.Prompt; import org.springframework.ai.openai.OpenAiChatClient; 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 static Logger Log = LoggerFactory.getLogger(ChatController.class); //注入OpenAiChatClient @Autowired private OpenAiChatClient chatClient; @GetMapping("/ai/generate") public Map generate(@RequestParam(value = "message", defaultValue = "给我讲个笑话") String message) { Log.info("发送的消息是:{}", message); String result = chatClient.call(message); Log.info("返回的消息是:{}", result); return Map.of("generation", result); } @GetMapping(value = "/ai/generateStream", produces = "text/event-stream") public Flux generateStream(@RequestParam(value = "message", defaultValue = "给我讲个笑话") String message) { Log.info("发送的消息是:{}", message); Prompt prompt = new Prompt(new UserMessage(message)); System.out.println(chatClient.stream(prompt)); return chatClient.stream(prompt); } } 

最后附上代码
https://github.com/smx1024/springai-demo