一、为什么需要 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); }