主题
Spring AI
简介
Spring AI是一个基于Spring生态系统的AI工程应用框架,旨在将Spring的设计原则如可移植性和模块化引入AI领域,推广使用POJO作为构建模块。它支持主要AI模型提供商和向量数据库,提供可移植API、结构化输出、工具调用、可观测性等功能。通过Spring Boot的自动配置和启动器,开发者可以轻松集成AI模型和向量存储,实现如文档问答等常见用例。
版本 1.0.0-SNAPSHOT
文档地址 https://spring.io/projects/spring-ai
Maven依赖
如果你是 Maven 用户,可以通过将以下内容添加到 pom.xml 文件来使用
xml
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Add Milestone and Snapshot Repositories
To use the Milestone and Snapshot version, you need to add references to the Spring Milestone and/or Snapshot repositories in your build file.
截止2024/7, 该项目尚未上架到maven中心仓库, 需要添加以下仓库地址
xml
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
集成ChatGpt
登录后访问获取chatgptkey https://platform.openai.com/api-keys
spring boot配置如下:
yml
spring:
ai:
openai:
api-key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
base-url: https://api.openai.com
已经对ai进行了封装, 直接调用就行
java
import lombok.RequiredArgsConstructor;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RestController
@RequiredArgsConstructor
public class ChatGPTRest {
final OpenAiChatModel openAiChatModel;
@RequestMapping("chat")
public String chat(String question) {
return openAiChatModel.call(question);
}
// Spring AI 实现流式对话
@RequestMapping(value = "streamChat", produces = "text/event-stream")
public Flux<String> streamChat(String question) {
return openAiChatModel.stream(question);
}
}