|
|
@@ -0,0 +1,37 @@
|
|
|
+package space.anyi.springAiAlibabaLearn.controller;
|
|
|
+
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.ai.chat.client.ChatClient;
|
|
|
+import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
|
|
|
+import org.springframework.ai.chat.memory.ChatMemory;
|
|
|
+import org.springframework.ai.chat.memory.MessageWindowChatMemory;
|
|
|
+import org.springframework.ai.chat.model.ChatModel;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/chatMemory")
|
|
|
+public class ChatMemoryController {
|
|
|
+ private final Logger log = LoggerFactory.getLogger(ChatMemoryController.class);
|
|
|
+ private final ChatClient chatClient;
|
|
|
+
|
|
|
+ public ChatMemoryController(ChatModel chatModel) {
|
|
|
+ //存储消息的对象
|
|
|
+ MessageWindowChatMemory messageWindowChatMemory = MessageWindowChatMemory.builder().build();
|
|
|
+ //使用默认的MessageChatMemoryAdvisor进行消息存储
|
|
|
+ MessageChatMemoryAdvisor messageChatMemoryAdvisor = MessageChatMemoryAdvisor.builder(messageWindowChatMemory).build();
|
|
|
+ this.chatClient = ChatClient.builder(chatModel).defaultAdvisors(messageChatMemoryAdvisor).build();
|
|
|
+ }
|
|
|
+ @GetMapping("/chat")
|
|
|
+ public String chat(@RequestParam("message") String message){
|
|
|
+ return chatClient
|
|
|
+ .prompt(message)
|
|
|
+ //配置对话上下文,配置对话的ID
|
|
|
+ .advisors(advisorSpec -> advisorSpec.param(ChatMemory.CONVERSATION_ID,"yangyi"))
|
|
|
+ .call()
|
|
|
+ .content();
|
|
|
+ }
|
|
|
+}
|