接入deepseek
This commit is contained in:
parent
fb8b9d8ad7
commit
d09e81d59b
|
|
@ -155,6 +155,12 @@
|
||||||
<artifactId>langchain4j-ollama</artifactId>
|
<artifactId>langchain4j-ollama</artifactId>
|
||||||
<version>1.11.0</version>
|
<version>1.11.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- OpenAI 集成(用于DeepSeek API) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.langchain4j</groupId>
|
||||||
|
<artifactId>langchain4j-open-ai</artifactId>
|
||||||
|
<version>1.11.0</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package cn.qihangerp.erp.serviceImpl;
|
package cn.qihangerp.erp.serviceImpl;
|
||||||
|
|
||||||
import dev.langchain4j.model.ollama.OllamaChatModel;
|
import dev.langchain4j.model.ollama.OllamaChatModel;
|
||||||
|
import dev.langchain4j.model.openai.OpenAiChatModel;
|
||||||
import dev.langchain4j.service.AiServices;
|
import dev.langchain4j.service.AiServices;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -38,6 +40,16 @@ public class AiService {
|
||||||
// 页面规则列表
|
// 页面规则列表
|
||||||
private List<PageRule> pageRules = new ArrayList<>();
|
private List<PageRule> pageRules = new ArrayList<>();
|
||||||
|
|
||||||
|
// DeepSeek API 配置
|
||||||
|
@Value("${deepseek.api.key:}")
|
||||||
|
private String deepSeekApiKey;
|
||||||
|
|
||||||
|
@Value("${deepseek.api.endpoint:https://api.deepseek.com/v1/chat/completions}")
|
||||||
|
private String deepSeekApiEndpoint;
|
||||||
|
|
||||||
|
@Value("${deepseek.api.model:deepseek-chat}")
|
||||||
|
private String deepSeekModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造方法,加载页面规则
|
* 构造方法,加载页面规则
|
||||||
*/
|
*/
|
||||||
|
|
@ -134,7 +146,42 @@ public class AiService {
|
||||||
// 替换消息中的"今天"为具体日期
|
// 替换消息中的"今天"为具体日期
|
||||||
message = message.replace("今天", today);
|
message = message.replace("今天", today);
|
||||||
|
|
||||||
// 根据模型名称创建对应的ChatModel
|
// 创建订单工具服务
|
||||||
|
OrderToolService orderToolService = new OrderToolService();
|
||||||
|
|
||||||
|
// 执行AI服务,添加今天的日期信息
|
||||||
|
String enhancedMessage = "今天的日期是:" + today + "\n" + message;
|
||||||
|
System.out.println("发送给AI的消息: " + enhancedMessage);
|
||||||
|
|
||||||
|
// 根据模型名称选择使用Ollama还是DeepSeek API
|
||||||
|
OrderAiService aiService;
|
||||||
|
if (model.startsWith("deepseek")) {
|
||||||
|
// 使用DeepSeek API
|
||||||
|
if (deepSeekApiKey == null || deepSeekApiKey.isEmpty()) {
|
||||||
|
return "错误: DeepSeek API密钥未配置,请在application.yml中设置deepseek.api.key";
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 尝试创建DeepSeek模型实例
|
||||||
|
OpenAiChatModel deepSeekModelInstance = OpenAiChatModel.builder()
|
||||||
|
.baseUrl(deepSeekApiEndpoint)
|
||||||
|
.apiKey(deepSeekApiKey)
|
||||||
|
.modelName(deepSeekModel)
|
||||||
|
.temperature(0.7)
|
||||||
|
.timeout(Duration.ofSeconds(300))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
aiService = AiServices.builder(OrderAiService.class)
|
||||||
|
.chatModel(deepSeekModelInstance)
|
||||||
|
.tools(orderToolService)
|
||||||
|
.build();
|
||||||
|
System.out.println("使用DeepSeek API处理消息");
|
||||||
|
} catch (Exception e) {
|
||||||
|
// 如果DeepSeek依赖不可用,返回错误消息
|
||||||
|
return "错误: DeepSeek API依赖未配置,请检查Maven依赖是否正确";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 使用Ollama
|
||||||
OllamaChatModel modelInstance = OllamaChatModel.builder()
|
OllamaChatModel modelInstance = OllamaChatModel.builder()
|
||||||
.baseUrl("http://localhost:11434") // Ollama默认端口
|
.baseUrl("http://localhost:11434") // Ollama默认端口
|
||||||
.modelName(model) // 使用指定的模型
|
.modelName(model) // 使用指定的模型
|
||||||
|
|
@ -142,18 +189,13 @@ public class AiService {
|
||||||
.timeout(Duration.ofSeconds(300)) // 超时时间设置为300秒(5分钟)
|
.timeout(Duration.ofSeconds(300)) // 超时时间设置为300秒(5分钟)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// 创建订单工具服务
|
aiService = AiServices.builder(OrderAiService.class)
|
||||||
OrderToolService orderToolService = new OrderToolService();
|
|
||||||
|
|
||||||
// 使用AiServices创建AI服务,自动处理工具调用
|
|
||||||
OrderAiService aiService = AiServices.builder(OrderAiService.class)
|
|
||||||
.chatModel(modelInstance)
|
.chatModel(modelInstance)
|
||||||
.tools(orderToolService)
|
.tools(orderToolService)
|
||||||
.build();
|
.build();
|
||||||
|
System.out.println("使用Ollama处理消息,模型: " + model);
|
||||||
|
}
|
||||||
|
|
||||||
// 执行AI服务,添加今天的日期信息
|
|
||||||
String enhancedMessage = "今天的日期是:" + today + "\n" + message;
|
|
||||||
System.out.println("发送给AI的消息: " + enhancedMessage);
|
|
||||||
String result = aiService.chat(enhancedMessage);
|
String result = aiService.chat(enhancedMessage);
|
||||||
System.out.println("AI返回的结果: " + result);
|
System.out.println("AI返回的结果: " + result);
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,6 @@ mybatis-plus:
|
||||||
|
|
||||||
deepseek:
|
deepseek:
|
||||||
api:
|
api:
|
||||||
key:
|
key: sk-8318ebe8e9d049d2b2a8bf506ba9b5ff
|
||||||
endpoint: https://api.deepseek.com/chat/completions
|
endpoint: https://api.deepseek.com/v1
|
||||||
model: deepseek-chat
|
model: deepseek-chat
|
||||||
|
|
@ -11,6 +11,7 @@
|
||||||
<el-select v-model="selectedModel" size="mini" style="width: 120px; margin-right: 10px;">
|
<el-select v-model="selectedModel" size="mini" style="width: 120px; margin-right: 10px;">
|
||||||
<el-option label="qwen3.5:2b" value="qwen3.5:2b"></el-option>
|
<el-option label="qwen3.5:2b" value="qwen3.5:2b"></el-option>
|
||||||
<el-option label="Llama 3" value="llama3"></el-option>
|
<el-option label="Llama 3" value="llama3"></el-option>
|
||||||
|
<el-option label="DeepSeek" value="deepseek"></el-option>
|
||||||
<el-option label="Gemini" value="gemini"></el-option>
|
<el-option label="Gemini" value="gemini"></el-option>
|
||||||
<el-option label="Claude" value="claude"></el-option>
|
<el-option label="Claude" value="claude"></el-option>
|
||||||
<el-option label="Gemma" value="gemma"></el-option>
|
<el-option label="Gemma" value="gemma"></el-option>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue