大家好,我是R哥。
DeepSeek 是国内研发的一款大语言模型(LLM),在代码理解和生成方面表现突出,甚至在一些测试中超过了 GPT-4。相比其他模型,它的本地化适配更好,最重要的是,它提供的 API 无需复杂网络环境。
更多介绍:DeepSeek 是什么?
前段时间我分享一个《王炸!Spring 宣布接入 DeepSeek!!》
这篇我要分享的是,如何使用 Spring Boot 集成 DeepSeek 搭建一个 AI 智能问答服务,让用户可以输入问题,然后调用 DeepSeek API 进行智能回答。
首先创建一个标准的 Spring Boot 项目,你可以用 Spring Initializr 生成,也可以用 IDEA 等开发工具创建。
Spring Boot 基础就不介绍了,推荐看这个实战项目:
项目创建完成后,先修改 pom.xml
添加必要的依赖:
org.springframework.ai
spring-ai-bom
1.0.0-M5
pom
import
spring-milestones
Spring Milestones
https://repo.spring.io/milestone
true
spring-snapshots
Spring Snapshots
https://repo.spring.io/snapshot
true
org.springframework.ai
spring-ai-openai-spring-boot-starter
主要添加 spring-ai-bom
和 spring-ai-openai-spring-boot-starter
依赖,前者可以放在父项目中,后者放在子项目中继承即可。
需要注意的是:
因为目前 Spring AI 还没有发布正式版,在 Maven 中央仓库中还找不到正式依赖,所以需要再添加
spring-milestones
和spring-snapshots
仓库。
然后,在 application.yml
配置 DeepSeek API:
spring:
ai:
openai:
api-key: "sk-xxxxxx" # 安全起见,从系统环境变量读取
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat
temperature: 0.5
安全起见,API KEY 可以设置从系统环境变量读取:
export SPRING_AI_OPENAI_API_KEY="sk-xxxxxx" # 真实 API KEY
如果从系统环境变量读取,不要忘记使用 source
命令生效。
聊天配置项解释如下表:
配置参数 | 说明 |
---|---|
spring.ai.openai.api-key |
OpenAI API 的密钥,用于身份验证和访问权限。 |
spring.ai.openai.base-url |
OpenAI API 的基础 URL,用于指定 API 请求的端点。 |
spring.ai.openai.chat.options.model |
指定使用的聊天模型。 |
spring.ai.openai.chat.options.temperature |
控制生成文本的随机性。值越低,生成的文本越确定和一致;值越高,生成的文本越随机。 |
以上只是文本生成的几个核心参数,更多配置参数可以参考以下几个参数配置类:
完整的类结构图如下:
在《王炸!Spring 宣布接入 DeepSeek!!》一文中说了,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的:
所以,以上 OpenAI 配置参数也是和 DeepSeek 兼容的。
上面提到,Spring AI 中的 DeepSeek API 目前还是走的 OpenAI 客户端,所以,要使用 DeepSeek,只需要在 API 中需要注入一个 OpenAiChatModel
客户端实例来发起请求。
参考代码如下:
/**
* 微信公众号:Java技术栈
*/
@Slf4j
@RestController
@RequiredArgsConstructor
public class ChatController {
private final OpenAiChatModel chatModel;
/**
* 聊天接口
* @param message
* @return
*/
@GetMapping("/ds/chat")
public String generate(@RequestParam(value = "message", defaultValue = "hello") String message) {
return this.chatModel.call(message);
}
/**
* 流式聊天接口
* @param message
* @return
*/
@GetMapping("/ds/chatStream")
public Flux generateStream(@RequestParam(value = "message", defaultValue = "hello") String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return this.chatModel.stream(prompt);
}
}
普通聊天和流式聊天的区别是:
普通聊天是一次性返回结果,流式聊天是几个字几个字的返回,流式聊天返回的结果需要前端框架进行封装。
这样,我们的 Spring Boot + DeepSeek API 智能问答接口就完成了。
启动 Spring Boot 项目后,我们可以通过 Postman 或浏览器访问:
如果配置没问题,你会收到 DeepSeek 生成的回答。
测试示例如下:
Spring Boot + DeepSeek 完美运行!真的太香了!
用 Spring Boot 处理 HTTP 请求,再通过 DeepSeek API 进行 AI 交互,轻松打造一个 AI 智能问答系统,整个接入流程和 API 使用非常轻松。
以上只是简单的接入,你也可以进一步扩展,比如增加前端用户界面、增加用户会话记录,甚至接入微信、钉钉机器人,让 AI 真正赋能企业业务。
本文完整示例代码已上传 Github:
https://github.com/javastacks/spring-boot-best-practice/tree/master/spring-boot-ai
赶紧试试吧,感受 AI 的魅力吧!
最后,推荐下我的《Spring Boot 核心技术课》,基于最新 Spring Boot 3.x 主版本,持续更新,包括底层实现原理及代码实战,知识点非常齐全,16 个模块,助你快速打通 Spring Boot 的各个环节。
程序员 + AI 编程是必然的趋势了,也是必备的技能,后面我会在《Spring Boot 核心技术课》课程中加一个 AI 模块,更新更多的 Spring Boot + AI 实战教程,课程加量不加价。
版权声明: 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。
更多文章推荐:
觉得不错,别忘了随手点赞+转发哦!
参与评论
手机查看
返回顶部