🚀 PIG AI 新版来袭:AI能力全面升级! 点击了解一下?
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 地址
@Autowired private DeepSeekClient deepSeekClient; @GetMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux<ChatCompletionResponse> chat(String prompt) { return deepSeekClient.chatFluxCompletion(prompt); }
@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", "");
@GetMapping(value = "/sync/chat") public ChatCompletionResponse syncChat(String prompt) { ChatCompletionRequest request = ChatCompletionRequest.builder() // 根据渠道模型名称动态修改这个参数 .model(deepSeekProperties.getModel()) .addUserMessage(prompt).build(); return deepSeekClient.chatCompletion(request).execute(); }