Spring AI 集成 DeepSeek Chat 技术详解与最佳实践
注册拿密钥,配置用变量,依赖加 BOM,参数随需变,模型按场景,代码多示例,安全记心间,官方查文档。
Spring AI 集成 DeepSeek Chat 技术详解与最佳实践
一、概述
随着 AIGC(AI Generated Content)技术飞速发展,企业和开发者越来越多地需要将强大的大语言模型(LLM)能力融入自己的业务系统。Spring AI 作为 Spring 生态下的 AI 集成框架,为 Java 开发者提供了统一、简洁的接口,便于快速接入如 DeepSeek Chat 这类主流大模型服务。
本文将系统讲解如何在 Spring Boot 项目中集成 DeepSeek Chat,涵盖从环境准备、依赖配置、核心参数详解、代码示例到常见问题排查,并结合 mermaid 图表优化结构说明,帮助你高效上手并深入理解原理。
二、名词解释
| 名词 | 释义 |
|---|---|
| LLM(大语言模型) | Large Language Model,能理解和生成自然语言的大型神经网络 |
| Spring AI | Spring 官方推出的 AI 框架,统一接入多种主流 AI 模型及服务 |
| DeepSeek Chat | DeepSeek 推出的高性能对话模型,支持通用对话和推理能力 |
| API Key | 用于鉴权访问云端服务的密钥,务必妥善保管 |
| BOM | Bill of Materials,依赖版本统一管理配置 |
| Prompt | 向 AI 模型输入的文本(或消息序列),决定生成内容 |
| Reasoner | 推理模型,能输出链式思考过程并给出最终答案 |
三、项目背景与发展历史
Spring AI 诞生于 2023 年,由 Spring 团队发起,目标是让 Java 世界与 AIGC 技术无缝衔接。它抽象了多种 AI 服务的接入方式,支持 OpenAI、DeepSeek、百度文心等主流模型,并且保持 Spring 风格的配置、自动装配和依赖管理。
DeepSeek 成立于 2023 年,专注于大模型研发,致力于提供高性价比的推理与生成服务。2024 年,DeepSeek Chat 和 Reasoner 模型发布,支持高质量对话、链式推理、代码生成等场景,API 设计简洁易用。
Spring AI + DeepSeek 结合,赋能 Java 企业级场景,极大提升了开发效率和智能化水平。
四、集成流程结构(Mermaid Flowchart)
五、核心配置项与代码实践
1. 环境准备
- 注册 DeepSeek 官网,获取 API Key
- 推荐用环境变量存储 API Key,增强安全性
2. 依赖配置
- Maven/Gradle 添加
spring-ai-starter-model-deepseek依赖 - 推荐引入 Spring AI BOM 统一管理版本
3. application.properties 核心参数
spring.ai.deepseek.api-key=${DEEPSEEK_API_KEY}
spring.ai.deepseek.chat.options.model=deepseek-chat
spring.ai.deepseek.chat.options.temperature=0.8
4. 主要代码示例
普通文本生成
@RestController
public class ChatController {
@Autowired
private DeepSeekChatModel chatModel;
@GetMapping("/ai/generate")
public Map<String, Object> generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatModel.call(message));
}
}
流式输出
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam("message") String message) {
var prompt = new Prompt(new UserMessage(message));
return chatModel.stream(prompt);
}
代码生成(前缀补全)
@GetMapping("/ai/generatePythonCode")
public String generate(@RequestParam("message") String message) {
UserMessage userMessage = new UserMessage(message);
Message assistantMessage = DeepSeekAssistantMessage.prefixAssistantMessage("```python\n");
Prompt prompt = new Prompt(
List.of(userMessage, assistantMessage),
ChatOptions.builder().stopSequences(List.of("```")).build()
);
ChatResponse response = chatModel.call(prompt);
return response.getResult().getOutput().getText();
}
推理模型调用
public void deepSeekReasonerExample() {
DeepSeekChatOptions promptOptions = DeepSeekChatOptions.builder()
.model(DeepSeekApi.ChatModel.DEEPSEEK_REASONER.getValue())
.build();
Prompt prompt = new Prompt("9.11 和 9.8 哪个大?", promptOptions);
ChatResponse response = chatModel.call(prompt);
DeepSeekAssistantMessage msg = (DeepSeekAssistantMessage) response.getResult().getOutput();
String reasoningContent = msg.getReasoningContent(); //链式推理内容
String text = msg.getText(); //最终答案
}
六、状态机流程解析(Mermaid stateDiagram-v2)
说明:不同请求类型均从 Ready 状态启动,分别进入文本、代码、推理分支,最终返回结果。
七、请求响应流程(Mermaid sequenceDiagram)
八、常见问题与注意事项
- API Key安全:务必用环境变量或密钥管理系统,不要硬编码在代码中。
- 模型选择:
deepseek-chat适合通用对话,deepseek-reasoner适合链式推理场景。 - 参数动态设置:可在 Prompt 构造时传递不同 options,灵活控制每次请求行为。
- 多轮对话:注意推理模型返回的 reasoning_content 字段不能作为后续输入,否则会报错。
- 流式输出:使用
chatModel.stream()实现 Token 级别流式响应,适合实时交互。
九、权威资料和参考文献
十、速记口总结 & 系统性认知
速记口诀
“注册拿密钥,配置用变量,依赖加 BOM,参数随需变,模型按场景,代码多示例,安全记心间,官方查文档。”
系统性认知
- Spring AI 是 Java 接入 AI 的统一桥梁,极大降低了模型接入门槛。
- DeepSeek Chat 提供高性能对话和推理能力,为企业级应用注入智能。
- 通过环境变量管理密钥,确保安全合规。
- 自动装配+手动实例化两种方式,满足不同项目需求。
- Prompt 构造和参数动态设置,实现灵活业务定制。
- Mermaid 图表帮助梳理集成流程、状态、请求响应,优化知识结构。
结论:Spring AI 集成 DeepSeek Chat 是 Java 智能化升级的最佳实践之一。只需按本文步骤操作即可快速高效接入,建议多参考官方文档和源码,结合具体业务场景灵活应用!
你整理得很详细,下面我用中文给你提炼一下 Spring AI 集成 DeepSeek Chat 的核心用法和注意点,方便开发者快速上手。
一、准备工作
-
注册 DeepSeek 并获取 API Key
- 注册、登录 DeepSeek官网。
- 在“API Keys”页面生成你的 API Key。
-
配置 API Key 到 Spring Boot 项目
- 推荐用环境变量增强安全性。
- 在
application.properties或application.yml中配置:spring.ai.deepseek.api-key=你的APIKey # 或用环境变量 spring.ai.deepseek.api-key=${DEEPSEEK_API_KEY} - 在你的系统环境或
.env文件中:export DEEPSEEK_API_KEY=你的APIKey
二、依赖配置
-
添加 Maven 依赖
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-deepseek</artifactId> </dependency>- 推荐引入 Spring AI BOM(版本管理)。
-
Gradle 用法
implementation 'org.springframework.ai:spring-ai-starter-model-deepseek'
三、核心配置项(application.properties)
常用配置示例:
spring.ai.deepseek.api-key=你的APIKey
spring.ai.deepseek.chat.options.model=deepseek-chat
spring.ai.deepseek.chat.options.temperature=0.8
更多配置项可参考文档,比如模型选择、生成长度、采样温度、惩罚参数等。
四、代码示例
1. 普通文本生成
@RestController
public class ChatController {
private final DeepSeekChatModel chatModel;
@Autowired
public ChatController(DeepSeekChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map<String, Object> generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
return Map.of("generation", chatModel.call(message));
}
}
2. 流式输出
@GetMapping("/ai/generateStream")
public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
var prompt = new Prompt(new UserMessage(message));
return chatModel.stream(prompt);
}
3. 代码生成(前缀补全)
@GetMapping("/ai/generatePythonCode")
public String generate(@RequestParam(value = "message", defaultValue = "请写一个快速排序代码") String message) {
UserMessage userMessage = new UserMessage(message);
Message assistantMessage = DeepSeekAssistantMessage.prefixAssistantMessage("```python\n");
Prompt prompt = new Prompt(
List.of(userMessage, assistantMessage),
ChatOptions.builder().stopSequences(List.of("```")).build()
);
ChatResponse response = chatModel.call(prompt);
return response.getResult().getOutput().getText();
}
4. 推理模型(deepseek-reasoner)
public void deepSeekReasonerExample() {
DeepSeekChatOptions promptOptions = DeepSeekChatOptions.builder()
.model(DeepSeekApi.ChatModel.DEEPSEEK_REASONER.getValue())
.build();
Prompt prompt = new Prompt("9.11 和 9.8 哪个大?", promptOptions);
ChatResponse response = chatModel.call(prompt);
DeepSeekAssistantMessage msg = (DeepSeekAssistantMessage) response.getResult().getOutput();
String reasoningContent = msg.getReasoningContent(); //链式推理内容
String text = msg.getText(); //最终答案
}
五、手动创建 DeepSeekChatModel
如果不使用自动配置,可以手动创建:
DeepSeekApi deepSeekApi = DeepSeekApi.builder()
.apiKey(System.getenv("DEEPSEEK_API_KEY"))
.build();
DeepSeekChatOptions options = DeepSeekChatOptions.builder()
.model(DeepSeekApi.ChatModel.DEEPSEEK_CHAT.getValue())
.temperature(0.4)
.maxTokens(200)
.build();
DeepSeekChatModel chatModel = DeepSeekChatModel.builder()
.deepSeekApi(deepSeekApi)
.defaultOptions(options)
.build();
ChatResponse response = chatModel.call(new Prompt("生成5个著名海盗的名字"));
六、常见问题与注意事项
- API Key安全:建议用环境变量,不要硬编码在代码中。
- 模型选择:
deepseek-chat(通用对话)与deepseek-reasoner(链式推理),根据场景选择。 - 参数动态设置:可以在 Prompt 时动态传递 options,灵活控制每次请求参数。
- 多轮对话:推理模型返回的 reasoning_content 字段不能作为输入,否则会报 400 错。
七、更多资料
- Spring AI 官方文档
- DeepSeek API 文档
- 代码接口和参数可参考 spring-ai-deepseek 源码或 Javadoc。
如需详细功能或问题排查,欢迎补充具体需求或报错信息!
更多推荐


所有评论(0)