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