eepseek4j 是专为 DeepSeek 设计的 Java 开发 SDK,全面支持 DeepSeek R1 和 V3 系列模型。该 SDK 提供了对话推理、函数调用、JSON 结构化输出以及基于 OpenAI 兼容 API 协议的嵌入向量生成功能。通过 Spring Boot Starter 模块,开发者可以轻松将 AI 能力集成到 Spring Boot 2.x/3.x 和 Solon 等主流 Java Web 框架中,享受开箱即用的配置体系、自动装配的客户端实例以及便捷的流式响应支持。
主要特性
- 
完整的 DeepSeek API 支持:支持返回思维链和会话账单。 
- 
WebSearch 联网搜索:提供联网搜索功能。 
- 
高度可定制:支持自定义连接参数、代理配置、超时设置以及请求响应日志。 
- 
Reactor 响应式支持:简化流式返回的开发流程。 
快速开始
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);
}进阶配置示例
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", "");同步输出 (非实时响应流)
不推荐使用同步阻塞调用方式,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();
}2. 前端调试
双击运行根目录下的 sse.html 文件,即可打开调试页面。在页面中输入后端 SSE 接口地址,点击发送后可实时查看推理过程和最终结果。页面提供了完整的前端实现代码,可作为集成参考。

© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    ![[开源] Java AI的集成 DeepSeek Java SDK - 阿噜噜小栈](https://qn.arlulu.com/2025/02/20250227153144594.png)





![[镜像] Windows11 24H2 LTSC 26100.1742 - 阿噜噜小栈](https://qcdn.doraera.com/2024/10/20241111144514582.jpg?imageMogr2/format/webp)






暂无评论内容