前言
2024年5月30号Spring AI 的 1.0.0 里程碑 1 版本发布。表明版本已正在巩固,并且大部分主要错误和问题已经解决,API基本已确定,不会发生很大的变化。
Spring AI 是一个广泛的概念,结合了 Spring 框架和 人工智能(AI)技术。虽然 Spring 框架本身主要用于构建企业级 Java 应用程序,而 AI 则涉及机器学习、深度学习和其他智能技术,但通过将这两者结合,可以实现强大的应用功能。
在与大模型集成方面,继LangChain4j之后,又一重大的框架诞生。标志着在人工智能的浪潮中,Java不会因此被边缘化,让生成式人工智能应用程序不仅适用于Python,也适用于Java。
Spring Ai官网:Spring AI
前置准备
要集成 Spring AI,你需要准备以下内容:
-
API Key:根据你的需求,从 AI 开放平台申请 API Key。以下是一些常见的注册渠道:
- OpenAI:
- OpenAi-HK GPT4.0 API KEY By OPENAI HK 中转 ChatGPT
- AiCore API New API
- OpenAi 购买平台 首页 | OpenAI_GPT4_购买平台_OpenAI API - eylink 官网
- ZhiPu-AI:
- 官网 智谱 AI 开放平台
- OpenAI:
开发环境:确保你具备以下开发环境:
- Java JDK:使用 JDK 8 以上版本。
- IDE:推荐使用 IntelliJ IDEA 或 Eclipse。
- 构建工具:使用 Maven 或 Gradle。
概念和案例实践
新建SpringBoot工程,然后添加以下依赖:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.gorgor</groupId>
<artifactId>spring-ai-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<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>
</project>
2. 添加 application.yml
配置文件
在 src/main/resources
目录下创建 application.yml
文件,并添加以下配置:
需要配置api-key和openai api-key.
spring:
ai:
openai:
api-key: your-openai-api-key
zhipuai:
api-key: your-zhipuai-api-key
ChatClient 和 ChatModel
ChatConfig 类:
@Configuration
public class ChatConfig {
@Autowired
private OpenAiChatModel openAiChatModel;
@Bean
public ChatClient chatClient() {
return ChatClient
.builder(openAiChatModel)
.build();
}
}
ChatDemoController 类:
@RestController
public class ChatDemoController {
@Autowired
private ChatClient chatClient;
@Autowired
private ZhiPuAiChatModel chatModel;
@Autowired
private OpenAiChatModel openAiChatModel;
/**
* OpenAI 聊天
*
* @param message
* @return
*/
@GetMapping("/ai/openAiChat")
public Map<String, String> openAiChat(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", openAiChatModel.call(message));
}
/**
* ZhiPuAI 聊天
*
* @param message
* @return
*/
@GetMapping("/ai/zhipuAiChat")
public Map<String, String> zhipuAiChat(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatModel.call(message));
}
/**
* ChatClient 使用 (流式调用)
* @param message
* @param voice
* @return
*/
@GetMapping("/ai/chatClient")
public Map<String, String> chatClient(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message, @RequestParam(value = "voice", defaultValue = "default") String voice) {
return Map.of(
"completion",
chatClient.prompt()
.system(sp -> sp.param("voice", voice))
.user(message)
.call()
.content());
}
}
总结
通过以上步骤,你可以在 Spring Boot 应用程序中集成 Spring AI,并与 OpenAI 和 ZhiPu AI 进行交互。Spring AI 的强大功能使得 Java 开发者能够轻松构建生成式人工智能应用程序,不再局限于 Python。