diff --git a/src/main/java/com/ai/config/AssistantInit.java b/src/main/java/com/ai/config/AssistantInit.java new file mode 100644 index 0000000..d4da441 --- /dev/null +++ b/src/main/java/com/ai/config/AssistantInit.java @@ -0,0 +1,27 @@ +package com.ai.config; + +import com.ai.service.Assist; +import dev.langchain4j.community.model.dashscope.QwenChatModel; +import dev.langchain4j.memory.chat.MessageWindowChatMemory; +import dev.langchain4j.model.chat.ChatLanguageModel; +import dev.langchain4j.service.AiServices; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@RequiredArgsConstructor +public class AssistantInit { + + ChatLanguageModel qwenModel = QwenChatModel.builder() + .apiKey("sk-2f703a41fff0488e9b6888013d2ee58a") + .modelName("deepseek-v3") + .build(); + + @Bean + public Assist init() { + return AiServices.builder(Assist.class) + .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) + .chatLanguageModel(qwenModel).build(); + } +} diff --git a/src/main/java/com/ai/controller/LangChainController.java b/src/main/java/com/ai/controller/LangChainController.java index 3c38143..be07137 100644 --- a/src/main/java/com/ai/controller/LangChainController.java +++ b/src/main/java/com/ai/controller/LangChainController.java @@ -2,6 +2,11 @@ package com.ai.controller; import com.ai.service.Assist; import com.ai.service.LangChainService; +import dev.langchain4j.community.model.dashscope.QwenChatModel; +import dev.langchain4j.memory.ChatMemory; +import dev.langchain4j.memory.chat.MessageWindowChatMemory; +import dev.langchain4j.model.chat.ChatLanguageModel; +import dev.langchain4j.service.AiServices; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -34,4 +39,24 @@ public class LangChainController { System.out.println("start highlevel chat..."); return assist.chat(input); } + +// ChatLanguageModel qwenModel = QwenChatModel.builder() +// .apiKey("sk-2f703a41fff0488e9b6888013d2ee58a") +// .modelName("deepseek-v3") +// .build(); +// +// ChatMemory chatMemory = MessageWindowChatMemory.builder() +// .maxMessages(10) +// .build(); +// +// Assist assist = AiServices.builder(Assist.class) +// .chatLanguageModel(qwenModel) // the model +// .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) // memory +// .build(); + + @GetMapping("/high/memory-chat") + public String memoryChat(@RequestParam("memoryId") String memoryId, @RequestParam("input") String input) { + System.out.println("start highlevel memory chat..."); + return assist.memoryChat(memoryId, input); + } } diff --git a/src/main/java/com/ai/http/chat.http b/src/main/java/com/ai/http/chat.http index c4d6e95..dca7d85 100644 --- a/src/main/java/com/ai/http/chat.http +++ b/src/main/java/com/ai/http/chat.http @@ -3,3 +3,10 @@ GET http://localhost:8080/langchain/chat?input=今天天气如何 ### 测试 LangChainController 的 highlevel chat 接口 GET http://localhost:8080/langchain/high/chat?input=评价一下路飞 + +### 测试 LangChainController 的 highlevel memory chat 接口 +GET http://localhost:8080/langchain/high/memory-chat?memoryId=1&input=你好,我想要买电脑笔记本 +### 测试 LangChainController 的 highlevel memory chat 接口 +GET http://localhost:8080/langchain/high/memory-chat?memoryId=1&input=我想要性价比高的 +### 测试 LangChainController 的 highlevel memory chat 接口 +GET http://localhost:8080/langchain/high/memory-chat?memoryId=1&input=详细介绍一下 diff --git a/src/main/java/com/ai/service/Assist.java b/src/main/java/com/ai/service/Assist.java index 0bec53b..d48d6fc 100644 --- a/src/main/java/com/ai/service/Assist.java +++ b/src/main/java/com/ai/service/Assist.java @@ -1,11 +1,15 @@ package com.ai.service; +import dev.langchain4j.service.MemoryId; import dev.langchain4j.service.SystemMessage; +import dev.langchain4j.service.UserMessage; import dev.langchain4j.service.spring.AiService; -@AiService public interface Assist { - @SystemMessage("假设你是唐吉坷德多佛朗明哥") + @SystemMessage("假设你是多佛朗明哥,请你用多佛朗明哥的语气去回答问题") String chat(String userMessage); + + @SystemMessage("假设你是电商平台的客服,请你用电商平台客服的语气去回答问题") + String memoryChat(@MemoryId String memoryId, @UserMessage String userMessage); } diff --git a/src/main/java/com/ai/service/LangChainService.java b/src/main/java/com/ai/service/LangChainService.java index adef403..10fee54 100644 --- a/src/main/java/com/ai/service/LangChainService.java +++ b/src/main/java/com/ai/service/LangChainService.java @@ -1,8 +1,5 @@ package com.ai.service; -import dev.langchain4j.community.model.dashscope.QwenLanguageModel; -import dev.langchain4j.data.message.UserMessage; -import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.language.LanguageModel; import dev.langchain4j.model.output.Response; import org.springframework.beans.factory.annotation.Autowired;