DeepSeek接入Spring AI:国产大模型完整实战指南
2026/4/30大约 3 分钟
DeepSeek接入Spring AI:国产大模型完整实战指南
适读人群:想用国产大模型替代OpenAI的Java工程师
文章价值:DeepSeek接入全流程 + 与OpenAI性能对比 + 成本分析
为什么选择DeepSeek?
DeepSeek R1/V3在多个基准测试上已超越GPT-4o,而价格仅为OpenAI的1/20到1/50。对于企业级应用,这意味着相同预算下可以处理50倍的请求量。
DeepSeek vs OpenAI 2026年对比:
| 维度 | DeepSeek V3 | GPT-4o | GPT-4o Mini |
|---|---|---|---|
| 输入价格 | ¥1/M tokens | $15/M tokens | $0.15/M |
| 中文能力 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 代码能力 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 推理能力(R1) | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| 数据合规 | 国内服务器 | 境外服务器 | 境外服务器 |
接入方式一:OpenAI兼容API(最快方案)
DeepSeek提供OpenAI格式的API,Spring AI可以直接通过OpenAI Starter接入:
# application.yml - DeepSeek通过OpenAI兼容API接入
spring:
ai:
openai:
api-key: ${DEEPSEEK_API_KEY}
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat # 或 deepseek-reasoner(R1推理模型)
temperature: 0.7
max-tokens: 4096// 无需修改任何业务代码!
@Service
public class DeepSeekService {
private final ChatClient chatClient; // 自动注入DeepSeek
public String analyze(String code) {
return chatClient.prompt()
.system("你是一位资深Java代码审查专家")
.user("请审查以下代码:\n```java\n" + code + "\n```")
.call()
.content();
}
}接入方式二:多模型并存(推荐生产)
生产环境推荐同时接入多个模型,按场景智能路由:
@Configuration
public class MultiModelConfig {
// DeepSeek V3:高性价比通用场景
@Bean("deepSeekClient")
public ChatClient deepSeekClient(
@Value("${deepseek.api-key}") String apiKey
) {
OpenAiApi deepSeekApi = OpenAiApi.builder()
.baseUrl("https://api.deepseek.com")
.apiKey(apiKey)
.build();
OpenAiChatModel deepSeekModel = OpenAiChatModel.builder()
.openAiApi(deepSeekApi)
.defaultOptions(OpenAiChatOptions.builder()
.model("deepseek-chat")
.temperature(0.7f)
.build())
.build();
return ChatClient.builder(deepSeekModel)
.defaultSystem("你是专业的AI助手")
.build();
}
// DeepSeek R1:复杂推理场景
@Bean("deepSeekReasonerClient")
public ChatClient deepSeekReasonerClient(
@Value("${deepseek.api-key}") String apiKey
) {
// 配置同上,model改为 deepseek-reasoner
...
return ChatClient.builder(reasonerModel).build();
}
// OpenAI:对标最高质量场景(作为兜底)
@Bean("openAiClient")
public ChatClient openAiClient(OpenAiChatModel openAiModel) {
return ChatClient.builder(openAiModel).build();
}
}智能路由服务
@Service
@RequiredArgsConstructor
public class SmartRoutingService {
@Qualifier("deepSeekClient") private final ChatClient deepSeekClient;
@Qualifier("deepSeekReasonerClient") private final ChatClient reasonerClient;
@Qualifier("openAiClient") private final ChatClient openAiClient;
public String chat(String message, RequestContext context) {
return switch (context.getScenario()) {
// 代码、推理类任务:用R1
case CODE_REVIEW, MATH_REASONING, COMPLEX_ANALYSIS ->
reasonerClient.prompt().user(message).call().content();
// 普通对话、RAG:用DeepSeek V3(成本最优)
case GENERAL_CHAT, RAG_QA, DOCUMENT_SUMMARY ->
deepSeekClient.prompt().user(message).call().content();
// 高价值用户/VIP:用OpenAI(质量最优)
case VIP_SERVICE ->
openAiClient.prompt().user(message).call().content();
default -> deepSeekClient.prompt().user(message).call().content();
};
}
}DeepSeek R1的Chain of Thought特性
DeepSeek R1会输出完整的推理过程(<think>...</think>),这是它在复杂任务上表现优异的关键:
@Service
public class R1ReasoningService {
@Qualifier("deepSeekReasonerClient")
private final ChatClient reasonerClient;
public ReasoningResult solveComplex(String problem) {
String rawResponse = reasonerClient.prompt()
.user(problem)
.call()
.content();
// 解析思维链和最终答案
String thinkingProcess = extractBetweenTags(rawResponse, "<think>", "</think>");
String finalAnswer = rawResponse.replaceAll("<think>[\\s\\S]*?</think>", "").trim();
return ReasoningResult.builder()
.thinkingProcess(thinkingProcess) // 推理过程(可选展示给用户)
.finalAnswer(finalAnswer)
.build();
}
private String extractBetweenTags(String text, String start, String end) {
int s = text.indexOf(start);
int e = text.indexOf(end);
if (s == -1 || e == -1) return "";
return text.substring(s + start.length(), e).trim();
}
}本地部署:Ollama + DeepSeek
不想将数据发给云端?可以用Ollama本地运行DeepSeek:
# 下载并运行DeepSeek模型(本地部署)
ollama pull deepseek-r1:7b # 7B版本,需要8GB内存
ollama pull deepseek-r1:14b # 14B版本,需要16GB内存
ollama serve# Spring AI接入本地Ollama
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
options:
model: deepseek-r1:7b
temperature: 0.7
num-predict: 2048成本优化实战
一个每日10万次请求的应用,使用不同方案的月成本对比:
| 方案 | 月成本估算 |
|---|---|
| 全部GPT-4o | ~$45,000 |
| 全部GPT-4o Mini | ~$450 |
| 全部DeepSeek V3 | ~$180 |
| 智能路由(本文方案) | ~$120 |
| 本地Ollama(14B) | GPU成本约$200/月 |
