admin管理员组文章数量:1034225
使用Spring AI调用AI模型
简介
Spring AI是Spring框架对人工智能和机器学习的支持模块,它提供了一套简单易用的API来集成各种AI服务和模型。
主要功能
- 集成主流AI模型服务(如OpenAI、Azure、 Baidu千帆等)
- 提供统一的API接口
- 支持提示词工程
- 内置向量存储功能
- 支持文本嵌入和文本生成
核心概念
- AI Client统一的客户端接口,用于调用AI服务
- Prompt Template提示词模板系统,支持变量替换和格式化
- Vector Store向量数据存储,用于相似度搜索和文本匹配
使用步骤
添加依赖
Spring AI 1.0 M6之后的版本已经可以直接从中央仓库下载了,添加如下BOM
代码语言:javascript代码运行次数:0运行复制xml 体验AI代码助手 代码解读复制代码 <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- openAI 服务 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- 百度千帆 服务 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-qianfan-spring-boot-starter</artifactId>
</dependency>
</dependencies>
对接Chat Model
代码语言:javascript代码运行次数:0运行复制java 体验AI代码助手 代码解读复制代码@RestController
public class ChatController {
private final OpenAiChatModel chatModel;
@Autowired
public ChatController(OpenAiChatModel 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);
}
@GetMapping("/ai/tool/calling")
public Map toolCalling(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
//目前会循环调用工具方法, 应该跟deepseek自身有关
String response = ChatClient.create(chatModel).prompt(message).tools(new IdiomsTools()).call().content();
return Map.of("generation", response);
}
}
application.properties需要配置对应api key 信息
代码语言:javascript代码运行次数:0运行复制sh 体验AI代码助手 代码解读复制代码
spring.ai.openai.api-key=youkey
spring.ai.openai.base-url=
spring.ai.openai.chat.options.model=deepseek-chat
# 千帆
spring.ai.qianfan.api-key=you api key
spring.ai.qianfan.secret-key=you secret key
使用Advisors API增强AI交互
代码语言:javascript代码运行次数:0运行复制java 体验AI代码助手 代码解读复制代码@RestController
@RequestMapping("/qianfan/advisor")
public class QianfanAdvisorController {
private final QianFanChatModel chatModel;
private final ChatClient chatClient;
@Autowired
public QianfanAdvisorController(QianFanChatModel chatModel) {
this.chatModel = chatModel;
this.chatClient = ChatClient.builder(chatModel)
.defaultAdvisors(
new MessageChatMemoryAdvisor(new InMemoryChatMemory()) // chat-memory advisor
)
.build();
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", this.chatClient.prompt().advisors(new LoggingAdvisor()).user(message).call().content());
}
}
上面示例中通过InMemroyChatMemory实现每次会话过程将之前的上下文一起代入每次会话中。
对接阿里大模型
Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。
使用Spring AI调用AI模型
简介
Spring AI是Spring框架对人工智能和机器学习的支持模块,它提供了一套简单易用的API来集成各种AI服务和模型。
主要功能
- 集成主流AI模型服务(如OpenAI、Azure、 Baidu千帆等)
- 提供统一的API接口
- 支持提示词工程
- 内置向量存储功能
- 支持文本嵌入和文本生成
核心概念
- AI Client统一的客户端接口,用于调用AI服务
- Prompt Template提示词模板系统,支持变量替换和格式化
- Vector Store向量数据存储,用于相似度搜索和文本匹配
使用步骤
添加依赖
Spring AI 1.0 M6之后的版本已经可以直接从中央仓库下载了,添加如下BOM
代码语言:javascript代码运行次数:0运行复制xml 体验AI代码助手 代码解读复制代码 <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- openAI 服务 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- 百度千帆 服务 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-qianfan-spring-boot-starter</artifactId>
</dependency>
</dependencies>
对接Chat Model
代码语言:javascript代码运行次数:0运行复制java 体验AI代码助手 代码解读复制代码@RestController
public class ChatController {
private final OpenAiChatModel chatModel;
@Autowired
public ChatController(OpenAiChatModel 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);
}
@GetMapping("/ai/tool/calling")
public Map toolCalling(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
//目前会循环调用工具方法, 应该跟deepseek自身有关
String response = ChatClient.create(chatModel).prompt(message).tools(new IdiomsTools()).call().content();
return Map.of("generation", response);
}
}
application.properties需要配置对应api key 信息
代码语言:javascript代码运行次数:0运行复制sh 体验AI代码助手 代码解读复制代码
spring.ai.openai.api-key=youkey
spring.ai.openai.base-url=
spring.ai.openai.chat.options.model=deepseek-chat
# 千帆
spring.ai.qianfan.api-key=you api key
spring.ai.qianfan.secret-key=you secret key
使用Advisors API增强AI交互
代码语言:javascript代码运行次数:0运行复制java 体验AI代码助手 代码解读复制代码@RestController
@RequestMapping("/qianfan/advisor")
public class QianfanAdvisorController {
private final QianFanChatModel chatModel;
private final ChatClient chatClient;
@Autowired
public QianfanAdvisorController(QianFanChatModel chatModel) {
this.chatModel = chatModel;
this.chatClient = ChatClient.builder(chatModel)
.defaultAdvisors(
new MessageChatMemoryAdvisor(new InMemoryChatMemory()) // chat-memory advisor
)
.build();
}
@GetMapping("/ai/generate")
public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", this.chatClient.prompt().advisors(new LoggingAdvisor()).user(message).call().content());
}
}
上面示例中通过InMemroyChatMemory实现每次会话过程将之前的上下文一起代入每次会话中。
对接阿里大模型
Spring AI Alibaba 开源项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。
本文标签: 使用Spring AI调用AI模型
版权声明:本文标题:使用Spring AI调用AI模型 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748127854a2257547.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论