DeepSeek R1 集成難題完美解決:Deepseek4j 已開源
一、為什么需要 deepseek4j?
1.1 現(xiàn)有框架的局限性
- 思維鏈內(nèi)容丟失:R1 最核心的推理過(guò)程完全被忽略
- 響應(yīng)模式不兼容:無(wú)法處理"思考在前、結(jié)論在后"的輸出模式
- 參數(shù)限制:temperature、top_p 等關(guān)鍵參數(shù)設(shè)置失效
- 流式處理不完善:用戶體驗(yàn)欠佳
雖然筆者上篇博客介紹了如何使用 WebFlux 直接調(diào)用 DeepSeek API,但這種方式存在一些問(wèn)題:開發(fā)成本高:直接調(diào)用 API 或改造現(xiàn)有框架需要處理大量細(xì)節(jié),包括請(qǐng)求構(gòu)建、響應(yīng)解析、錯(cuò)誤處理等。
一不做二不休,為了徹底解決這些問(wèn)題,筆者基于 OpenAI4J[1] 項(xiàng)目的優(yōu)秀架構(gòu),打造了一個(gè)專門面向 DeepSeek 的開箱即用方案 DeepSeek4J[2]
- 增強(qiáng)支持 DeepSeek 獨(dú)有的思維鏈和賬單特性
- 增加 Project Reactor 的全面響應(yīng)式支持
- 提供集成 Spring Boot Starter,提供自動(dòng)配置
二、核心特性
- ? 完整保留思維鏈能力、賬單
- ?? 響應(yīng)式流式處理
- ?? 簡(jiǎn)單優(yōu)雅的 API 設(shè)計(jì)
- ?? 開箱即用的 Spring Boot 集成,同時(shí)支持 2.x / 3.x
- ?? 內(nèi)置調(diào)試頁(yè)面
- ?? 詳細(xì)的請(qǐng)求響應(yīng)日志
- ?? 靈活的代理配置
- ?? 響應(yīng)式編程支持
三、快速開始
3.1 添加依賴
<dependency>
<groupId>io.github.pig-mesh.ai</groupId>
<artifactId>deepseek-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>
3.2 配置參數(shù)
deepseek:
api-key: your-api-key-here
base-url: https://api.deepseek.com/v1 # 可選,默認(rèn)為官方 API 地址,支持火山、gitee、硅基流動(dòng)
3.3 基礎(chǔ)使用
@Autowired
private DeepSeekClient deepSeekClient;
// sse 流式返回
@GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ChatCompletionResponse> chat(String prompt) {
return deepSeekClient.chatFluxCompletion(prompt);
}
3.4 進(jìn)階配置
public Flux<ChatCompletionResponse> chat(String prompt) {
ChatCompletionRequest request = ChatCompletionRequest.builder()
// 模型選擇,支持 DEEPSEEK_CHAT、DEEPSEEK_REASONER 等
.model(ChatCompletionModel.DEEPSEEK_CHAT)
// 添加用戶消息
.addUserMessage(prompt)
// 添加助手消息,用于多輪對(duì)話
.addAssistantMessage("上輪結(jié)果")
// 添加系統(tǒng)消息,用于設(shè)置角色和行為
.addSystemMessage("你是一個(gè)專業(yè)的助手")
// 設(shè)置最大生成 token 數(shù),默認(rèn) 2048
.maxTokens(1000)
// 設(shè)置響應(yīng)格式,支持 JSON 結(jié)構(gòu)化輸出
.responseFormat()
.tools() // function calling
.build();
return deepSeekClient.chatFluxCompletion(request);
}