集成 DeepSeek
集成 DeepSeek 有 2 种方案,一种是本地通过 Ollama 部署开源的 R1 版本,一种是直接调用 DeepSeek 的在线 API 的方式。相对来说,第二种更加简单。
集成在线 API
首先要去 DeepSeek 官网去申请 API Key,然后修改项目后台配置文件。
application.yml
yml
spring:
ai:
openai:
api-key: #你申请的api key
base-url: https://api.deepseek.com
chat:
options:
model: deepseek-chat
修改代码ChatController
,注销函数调用相关声明。
java
@OperationLog("发起对话")
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> stream(@RequestParam String message,
@RequestParam String conversationId,
@RequestParam(required = false) String files,
@RequestHeader("Authorization") String authHeader) throws JsonProcessingException {
...
// 注销函数调用
return chatClient.prompt()
// .functions("currentTasks", "sendMail", "getNewMails", "getDepartments")
.toolContext(Map.of("username", username))
.advisors(advisor -> advisor.param("chat_memory_conversation_id", conversationId)
.param("chat_memory_response_size", 100))
.user(prompt)
.stream()
.content()
.filter(Objects::nonNull)
.map(content -> "'" + content); // 添加结束标识符
}
通过 Ollama 集成
首先需要在本地使用 Ollama 部署 DeepSeek r1 版本,如果需要可以远程访问,开启 Ollama 的远程访问设置。
确保可以访问到 Ollama 部署的 DS 大模型后。就可以在项目中进行集成了。
首先需要下载 Ollama 依赖: pom.xml
xml
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
在application.yml
中配置 Ollama:
yml
spring:
ai:
ollama:
base-url: http://localhost:11434
chat:
model: deepseek-r1:32b
修改ChatController.java
代码,注入 OllamaChatModel。
java
// private final OpenAiChatModel chatModel;
private final OllamaChatModel ollamaChatModel;
private final ChatClient chatClient;
public ChatController(OllamaChatModel ollamaChatModel) {
this.ollamaChatModel = ollamaChatModel;
String systemPrompt = """
你是一个非常有帮助的智能助手.
""";
this.chatClient = ChatClient.builder(ollamaChatModel)
.defaultSystem(systemPrompt)
.defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory()))
.build();
}
在使用的时候,同样需要删除掉函数调用相关的声明,因为 DeepSeek 目前对函数调用(Function Call)支持不好。