聊天记忆

**1.**测试对话是否有记忆

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Java package com.itguigu.java.ai.LangChain4j; import com.itguigu.java.ai.LangChain4j.assistant.Assistant; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class ChatMemoryTest { @Autowired private Assistant assistant; @Test public void testChatMemory() { String answer1 = assistant.chat("我是木鹅"); System.out .println(answer1); String answer2 = assistant.chat("我是谁"); System.out .println(answer2); } } |

我们发现并没有记忆

**2.**使用 ChatMemory 实现聊天记忆

这里用到前面学到的AIService,前面介绍,AISevice具有聊天记忆 Chat memory,现在我们使用Chat memory来实现聊天记忆

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Java @Autowired private QwenChatModel qwenChatModel; @Test public void testChatMemory2() { *//*创建Chat memory MessageWindowChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages (10); Assistant assistant = AiServices .builder (Assistant.class) .chatLanguageModel(qwenChatModel) .chatMemory(chatMemory) .build(); String answer1 = assistant.chat("我是木鹅"); System.out .println(answer1); String answer2 = assistant.chat("我是谁"); System.out .println(answer2); } |

出现的问题:

Cannot resolve method 'builder' in 'AiService'

错误原因:导错包

解决办法:

|-------------------------------------------------|
| Java import dev.langchain4j.service.AiServices; |

**3.**使用 AIService 实现聊天记忆

3.1****创建记忆对话智能体

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| TypeScript package com.itguigu.java.ai.LangChain4j.assistant; import dev.langchain4j.service.spring.AiService; import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT ; @AiService(wiringMode = EXPLICIT , chatModel = "qwenChatModel",chatMemory = "chatMemory") public interface ChatMemoryAssistant { String chat(String userMessage); } |

3.2****配置 ChatMemory

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Java package com.itguigu.java.ai.LangChain4j.config; import dev.langchain4j.memory.ChatMemory; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class ChatMemoryAssistantConfig { @Bean ChatMemory chatMemory() { return MessageWindowChatMemory.withMaxMessages (10); } } |

3.3****测试

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| TypeScript @Autowired private ChatMemoryAssistant chatMemoryAssistant; @Test public void testChatMemory3() { String answer1 = chatMemoryAssistant.chat("我是小王"); System.out .println(answer1); String answer2 = chatMemoryAssistant.chat("我是谁"); System.out .println(answer2); } |

**4.**对话隔离

4.1****创建记忆隔离对话智能体

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Java package com.itguigu.java.ai.LangChain4j.assistant; import dev.langchain4j.service.MemoryId; import dev.langchain4j.service.UserMessage; import dev.langchain4j.service.spring.AiService; import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT ; @AiService(wiringMode = EXPLICIT , chatModel = "qwenChatModel", chatMemoryProvider = "chatMemoryProvider") public interface SeparateChatAssistant { String chat(@MemoryId int memoryId, @UserMessage String userMessage); } |

chatMemoryProvider = "chatMemoryProvider"可以替代chatMemory = "chatMemory"

4.2****配置 chatMemoryProvider

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Java package com.itguigu.java.ai.LangChain4j.config; import com.itguigu.java.ai.LangChain4j.store.MongoChatMemoryStore; import dev.langchain4j.memory.chat.ChatMemoryProvider; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SeparateChatAssistantConfig { @Bean public ChatMemoryProvider chatMemoryProvider(){ return memoryId-> MessageWindowChatMemory .builder () .maxMessages(10) .id(memoryId) .chatMemoryStore(new MongoChatMemoryStore()) .build(); } } |

4.3****测试

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| TypeScript @Autowired private SeparateChatAssistant separateChatAssistant; @Test public void testChatMemory4() { String answer1 = separateChatAssistant.chat(1, "我是光头强"); System.out .println(answer1); String answer2 = separateChatAssistant.chat(1, "我是谁"); System.out .println(answer2); String answer3 = separateChatAssistant.chat(2, "我是谁"); System.out .println(answer3); } |

相关推荐
咩咩啃树皮9 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚9 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白10 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司11 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地12 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun31415912 小时前
TCP超时重传机制是为了解决什么问题?
java
莫逸风15 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898615 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112316 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
做个文艺程序员16 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus