写在最前:问题咨询请直接点击此处提交 ISSUE
- ⭐️ 请先 Star 本项目后再提问,作者精力有限,未 Star 直接 Close
- 🐞 GitHub ISSUE 需包含:问题截图 + SDK版本 + 配置代码
Maven 依赖
在你的 pom.xml
中添加以下依赖:
<dependency>
<groupId>io.github.pig-mesh.ai</groupId>
<artifactId>deepseek-spring-boot-starter</artifactId>
<version>1.4.3</version>
</dependency>
基础配置
在 application.yml
或 application.properties
中添加必要的配置:
deepseek:
api-key: your-api-key-here # 必填项:你的 API 密钥
model: deepseek-reasoner
base-url: https://api.deepseek.com # 可选,默认为官方 API 地址
基础使用示例
1. 流式返回示例
@Autowired
private DeepSeekClient deepSeekClient;
@GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chat(String prompt) {
return deepSeekClient.chatFluxCompletion(prompt);
}
2. 进阶配置示例
- ChatCompletionRequest 配置构造
@GetMapping(value = "/chat/advanced", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chatAdvanced(String prompt) {
ChatCompletionRequest request = ChatCompletionRequest.builder()
// 模型选择,支持 DEEPSEEK_CHAT、DEEPSEEK_REASONER 等
.model(ChatCompletionModel.DEEPSEEK_REASONER)
// 添加用户消息
.addUserMessage(prompt)
// 设置最大生成 token 数,默认 2048
.maxTokens(1000)
// 设置响应格式,支持 JSON 结构化输出
.responseFormat(...) // 可选
// function calling
.tools(...) // 可选
.build();
return deepSeekClient.chatFluxCompletion(request);
}
public final static HashMap<String, String> cache = new HashMap<>();
@GetMapping(value = "/chat/advanced", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chatAdvanced(String prompt, String cacheCode) {
log.info("cacheCode {}", cacheCode);
ChatCompletionRequest request = ChatCompletionRequest.builder().model(deepSeekProperties.getModel())
.addUserMessage(prompt)
.addAssistantMessage(elt.apply(cache.getOrDefault(cacheCode, "")))
.addSystemMessage("你是一个专业的助手").maxCompletionTokens(5000).build();
log.info("request {}", Json.toJson(request));
// 只保留上一次回答内容
cache.remove(cacheCode);
return deepSeekClient.chatFluxCompletion(request).doOnNext(i -> {
String content = choicesProcess.apply(i.choices());
// 其他ELT流程
cache.merge(cacheCode, content, String::concat);
}).doOnError(e -> log.error("/chat/advanced error:{}", e.getMessage()));
}
Function<List<ChatCompletionChoice>, String> choicesProcess = list -> list.stream().map(e -> e.delta().content())
.collect(Collectors.joining());
Function<String, String> elt = s -> s.replaceAll("<think>[\\s\\S]*?</think>", "").replaceAll("\n", "");
3. 同步输出 (非实时响应流)
不推荐使用同步阻塞调用方式,R1模型推理耗时较长易导致客户端连接超时,且响应延迟会影响用户体验
@GetMapping(value = "/sync/chat")
public ChatCompletionResponse syncChat(String prompt) {
ChatCompletionRequest request = ChatCompletionRequest.builder()
// 根据渠道模型名称动态修改这个参数
.model(deepSeekProperties.getModel())
.addUserMessage(prompt).build();
return deepSeekClient.chatCompletion(request).execute();
}
PIG AI应用开发平台 | 适合中大型企业构建自主可控的AI中台
为Java开发者提供全栈式AI工程化解决方案,强类型/高可维护性架构,内置30+主流大模型支持。
- 🔍 知识引擎体系:RAG 知识引擎全自动化多模态解决方案
- 📝 AI-OCR 中枢:复杂非标场景高精度识别
- ⚙️ 业务智能融合:函数编排 + Chat2SQL,无缝对接现有业务系统
- 🛡️ N维风控体系:敏感词/IP/Token/User 规则控制引擎
文档有误?请协助编辑
发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!