LangChain4j 错误:In order to use @MemoryId, please configure the ChatMemoryProvider on the xxx

AI
本文将介绍如何解决“In order to use @MemoryId, please configure the ChatMemoryProvider on the xxx”错误。

环境说明

  • LangChain4j 1.10.0

错误描述

通过 @MemoryId 传递聊天记忆 ID 时,出现 In order to use @MemoryId, please configure the ChatMemoryProvider on the 'com.hxstrive.langchain4j.aiServices.RewriteChatRequestDemo2$Assistant' 错误。

详细错误如下:

Exception in thread "main" dev.langchain4j.service.IllegalConfigurationException: In order to use @MemoryId, please configure the ChatMemoryProvider on the 'com.hxstrive.langchain4j.aiServices.RewriteChatRequestDemo2$Assistant'.
	at dev.langchain4j.service.IllegalConfigurationException.illegalConfiguration(IllegalConfigurationException.java:18)
	at dev.langchain4j.service.AiServiceValidation.validateMethod(AiServiceValidation.java:67)
	at dev.langchain4j.service.AiServiceValidation.lambda$validate$0(AiServiceValidation.java:28)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
	at dev.langchain4j.service.AiServiceValidation.validate(AiServiceValidation.java:27)
	at dev.langchain4j.service.DefaultAiServices.validate(DefaultAiServices.java:87)
	at dev.langchain4j.service.DefaultAiServices.build(DefaultAiServices.java:101)
	at com.hxstrive.langchain4j.aiServices.RewriteChatRequestDemo2.main(RewriteChatRequestDemo2.java:49)

关键代码:

// 定义业务接口
interface Assistant {
    // userMessage 是用户输入的消息
    // 返回值是 AI 回复的内容呢
    @UserMessage("{{userMessage}}")
    String chat(@MemoryId String memoryId, @V("userMessage") String userMessage);
}
// 使用 AiServices 创建服务
Assistant assistant = AiServices.builder(Assistant.class)
        .chatModel(chatModel)
        .build();

// 发起对话
String answer = assistant.chat(myMemoryId, "你好! 我的名字是张三。");
System.out.println(answer);

根据错误信息和上述代码可知,使用 @MemoryId,需要在使用 AiServices 类创建 AI 服务实例时配置 ChatMemoryProvider,获取聊天记忆 ID 对应的 ChatMemory。

修改后的代码如下:

// 使用 AiServices 创建服务
Assistant assistant = AiServices.builder(Assistant.class)
        .chatModel(chatModel)
        .chatMemoryProvider((chatMemoryId) -> chatMemory) // 【关键点】看这里
        .build();

// 发起对话
String answer = assistant.chat(myMemoryId, "你好! 我的名字是张三。");
System.out.println(answer);

注意,即使你通过 chatMemory() 设置了默认的 ChatMemory 也会抛出该错误。

  

我们愈是学习,愈觉得自己的贫乏。 —— 雪莱
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号