有些技术就像咖啡,刚入口有点苦,但越喝越上头。今天就让我们来试一杯刚出炉的「Spring AI + DeepSeek 聊天」特调,看看怎么用 Spring AI 和 DeepSeek 聊天模型愉快地玩耍起来~
前言:某天,我在项目组体验到了“ChatGPT 平替”
那天项目组在 Review 的时候,Leader 忽然说:“小米,你试下这个 DeepSeek 聊天模型,听说能挂 Spring AI,用起来跟 ChatGPT 差不多。”
我一听,心中一激灵:“真的假的?咱 Spring Boot 能直接接 DeepSeek?那不就是白嫖版的 ChatGPT?”
说干就干,我立马开了个新的项目,准备试试 DeepSeek + Spring AI 这一对组合到底能不能擦出火花。
于是就有了这篇文章:一边踩坑,一边撸代码,一边分享。
第一步:前提条件先备好
你得准备好这些基础设施,才能愉快地玩耍:
- Java 17+
- Spring Boot 3.2.x+
- Spring AI 版本推荐:1.0.0-M2 或更高
- Maven 或 Gradle 构建工具
- DeepSeek 的 API Key(记得先注册)
如果你还没注册 DeepSeek,可以用邮箱注册一个免费的开发者账户,然后拿到 API Key,后面要配置进去的!
第二步:添加仓库和 BOM
让我们打开 pom.xml,先把 Spring AI 的依赖拉进来。
别看名字写着 “openai”,其实它支持 DeepSeek,因为 DeepSeek 是兼容 OpenAI API 协议的(聪明的朋友已经看出来门道了)。
第三步:自动配置有多香
Spring AI 的 starter 组件简直贴心到家。我们只要配置好 application.yml 里的参数,它就能自动装配好整个 ChatClient,直接注入使用。
注意这里的 base-url 必须写成 DeepSeek 提供的地址,否则会默认走 OpenAI 的地址就悲剧啦。
配置完之后,Spring AI 会自动注入一个 ChatClient 给你,我们等下可以直接用它来聊天!
第四步:聊天属性详解(含进阶)
我们来看看 Spring AI 提供的一些实用聊天属性配置:
1. 重试属性
如果网络不稳定或者接口偶尔抽风,Spring AI 内置了重试机制:
比如最多重试 3 次,每次间隔 2 秒,乘以 2 翻倍。
2. 连接属性
你还可以配置连接超时、读取超时等:
这对于线上环境非常重要,避免因为卡在网络上挂掉整个线程池。
3. 配置属性
Spring AI 的每次聊天请求都可以加上一些“默认背景”:
- model:模型名,这里用的是 deepseek-chat。
- system-message:给模型设定“人格”。
- temperature:值越大回答越随机,值越小越“保守”。
第五步:运行时选项怎么玩
虽然我们配置好了默认值,但你也可以在代码中动态传入:
运行时自定义,让你的聊天逻辑更灵活多变,非常适合做插件、对话流程控制。
第六步:一个完整的控制器示例
贴上一个简单的 REST 控制器,你可以直接用 Postman 测试:
只要运行你的 Spring Boot 项目,发个 POST 请求到 /chat,你就能看到 DeepSeek 给你回复啦!
第七步:聊天前缀补全有妙用
Spring AI 还有个“前缀补全”(Prompt Template)的功能,让我们像写文章一样拼接 prompt,很适合做固定角色或场景模板。
它的底层其实就是在帮你动态生成 system + user 的 messages,然后再发给模型。
配合业务系统场景特别香,比如生成代码、写文档、答题库。
第八步:别忘了 DeepSeek 的 Reasoner 模型!
如果你对 DeepSeek 的聊天模型还不过瘾,它们还有个进阶版:推理模型(deepseek-reasoner) ,适合高阶逻辑推理、数学、编码任务。
你只需要在配置中改一下 model 名:
然后就可以使用更强的逻辑推理能力啦!据我实测,它在解释复杂算法、逻辑谜题时,比普通聊天模型更靠谱一些。
一句话总结
Spring AI + DeepSeek 是一个“高性价比”的搭配组合,适合构建各种轻量 AI 功能,比如:
- 智能客服
- 问答机器人
- 编程助手
- 教育问答平台
- 自动文案生成
而且接入方式和 OpenAI 几乎无缝切换,写一套代码,可以自由切换不同厂商,非常适合中小企业或开发者个人项目。
END
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
你的一键三连,是我继续更新的最大动力!