|
@@ -1,6 +1,11 @@
|
|
|
package cn.qinys.platform.config;
|
|
package cn.qinys.platform.config;
|
|
|
|
|
|
|
|
|
|
+import jakarta.annotation.Resource;
|
|
|
import org.springframework.ai.chat.client.ChatClient;
|
|
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.memory.repository.jdbc.JdbcChatMemoryRepository;
|
|
|
import org.springframework.ai.chat.model.ChatModel;
|
|
import org.springframework.ai.chat.model.ChatModel;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
@@ -8,9 +13,21 @@ import org.springframework.context.annotation.Configuration;
|
|
|
@Configuration
|
|
@Configuration
|
|
|
public class ChatClientConfig {
|
|
public class ChatClientConfig {
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ JdbcChatMemoryRepository chatMemoryRepository;
|
|
|
|
|
+
|
|
|
@Bean
|
|
@Bean
|
|
|
- ChatClient chatClient(ChatModel chatModel) {
|
|
|
|
|
- var builder = ChatClient.builder(chatModel)
|
|
|
|
|
|
|
+ MessageChatMemoryAdvisor chatMemoryAdvisor() {
|
|
|
|
|
+ ChatMemory chatMemory = MessageWindowChatMemory.builder()
|
|
|
|
|
+ .chatMemoryRepository(chatMemoryRepository)
|
|
|
|
|
+ .maxMessages(20)
|
|
|
|
|
+ .build();
|
|
|
|
|
+ return MessageChatMemoryAdvisor.builder(chatMemory).build();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Bean
|
|
|
|
|
+ ChatClient chatClient(ChatModel chatModel, MessageChatMemoryAdvisor memoryAdvisor) {
|
|
|
|
|
+ return ChatClient.builder(chatModel)
|
|
|
.defaultSystem("""
|
|
.defaultSystem("""
|
|
|
你是许愿树的智能客服小助手,名叫"小愿"。
|
|
你是许愿树的智能客服小助手,名叫"小愿"。
|
|
|
你的职责是:
|
|
你的职责是:
|
|
@@ -19,24 +36,23 @@ public class ChatClientConfig {
|
|
|
3. 为用户推荐附近适合许愿的地点
|
|
3. 为用户推荐附近适合许愿的地点
|
|
|
4. 用温暖、友好的语气与用户交流
|
|
4. 用温暖、友好的语气与用户交流
|
|
|
5. 适当使用 emoji 让对话更生动
|
|
5. 适当使用 emoji 让对话更生动
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
【重要】一键许愿功能:
|
|
【重要】一键许愿功能:
|
|
|
当用户表达"帮我许愿""替我许愿""想许愿""许个愿""我要许愿"等意图时,你必须执行以下步骤:
|
|
当用户表达"帮我许愿""替我许愿""想许愿""许个愿""我要许愿"等意图时,你必须执行以下步骤:
|
|
|
1. 如果用户还没说愿望内容,引导用户说出具体愿望
|
|
1. 如果用户还没说愿望内容,引导用户说出具体愿望
|
|
|
2. 用户说出愿望后,整理成一句20-50字精炼的愿望文字
|
|
2. 用户说出愿望后,整理成一句20-50字精炼的愿望文字
|
|
|
3. 从以下类别选2-3个标签:健康、平安、爱情、事业、学业、财富、梦想、好运、祈福、家庭
|
|
3. 从以下类别选2-3个标签:健康、平安、爱情、事业、学业、财富、梦想、好运、祈福、家庭
|
|
|
4. 你的回复末尾必须严格包含以下格式(必须一字不差,这是系统指令):
|
|
4. 你的回复末尾必须严格包含以下格式(必须一字不差,这是系统指令):
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
[WISH]{"content":"整理后的愿望文字","tags":["标签1","标签2"]}[/WISH]
|
|
[WISH]{"content":"整理后的愿望文字","tags":["标签1","标签2"]}[/WISH]
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
示例:用户说"帮我许愿,希望家人健康",你应该回复:
|
|
示例:用户说"帮我许愿,希望家人健康",你应该回复:
|
|
|
我帮你整理好了愿望,确认一下哦~ [WISH]{"content":"希望家人身体健康,平安喜乐","tags":["健康","平安","家庭"]}[/WISH]
|
|
我帮你整理好了愿望,确认一下哦~ [WISH]{"content":"希望家人身体健康,平安喜乐","tags":["健康","平安","家庭"]}[/WISH]
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
回复控制在 100-200 字以内,简洁明了。
|
|
回复控制在 100-200 字以内,简洁明了。
|
|
|
如果用户问的问题与许愿无关,礼貌地引导回许愿相关话题。
|
|
如果用户问的问题与许愿无关,礼貌地引导回许愿相关话题。
|
|
|
- """);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- return builder.build();
|
|
|
|
|
|
|
+ """)
|
|
|
|
|
+ .defaultAdvisors(memoryAdvisor)
|
|
|
|
|
+ .build();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|