系列文章目录
第一回 deepseek r1 32b模型在ollma amd rx590上成功运行!
文章目录
前言
目前,很多网上类似的博客都是使用okhttp手动创建http连接的方式来调用api,这种方式需要自己构造请求头,请求体,请求等,模版类代码有点多,说白话,就是重复编写代码,有没有一种方式封装了这些模版类代码呢,Sping AI的出现恰到好处的解决了此类问题。
一、Spring AI介绍?
借用spring ai官网自己的描述,Spring AI 是一个面向 AI 工程的应用框架,其目标是将 Spring 生态系统的可移植性和模块化设计等设计原则应用到 AI 领域,并推动将 POJO 作为应用的构建块应用于 AI 领域,从本质上讲,Spring AI 解决了 AI 集成的基本挑战:将企业数据和API与AI 模型连接起来。
特征:
- 聊天
- 嵌入
- 文本转图像
- 音频转录
- 文本转语音
- 内容审核
目前,sping ai只有snapshot版本,还没有正式列为可用于生产版本,迭代较快,api接口变化也比较多,如下图:
推荐使用1.0.0.M6版本,1.0.0.SNAPSHOT版本启动会找不到类,坑很多,对接deepseek的官方文档链接:https://docs.spring.io/spring-ai/reference/1.0/api/chat/deepseek-chat.html,如下图:
二、使用步骤
1.获取API Key
deepseek官网https://platform.deepseek.com,硅基流动官网https://cloud.siliconflow.cn/,申请api key,具体申请方法及价格请搜索百度,此处不再赘述,申请后配置application.yml文件,下图红框处替换为自己的api key
2.引入依赖
主pom中引入如下依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
同时,因为该依赖包暂时没有托管到maven仓库,因此,需要通过依赖管理加入sping ai自己的依赖源地址,配置如下:
<dependencyManagement>
<dependencies>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-core</artifactId>
<version>1.0.0-M6</version>
<scope>compile</scope>
</dependency>
<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>
注意此处单独引入spring-ai-core依赖,否则,会引入1.0.0-SNAPSHOT版本,导致找不到类,这里又是一个坑
3.测试api接口
这里编写一个controller,调用api进行测试
@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);
}
}
方法中带有stream的为流式调用,文毕!
总结
文中对Spring Boot引入Spring AI进行了简单的介绍,包括了避坑注意事项,希望对大家有所帮助,谢谢!。