LangChain4j ChatMemory:为Java AI应用赋予对话记忆能力
ChatMemory是LangChain4j中的一个核心组件,它负责存储和管理对话历史。通过ChatMemory,AI模型能够:记住对话的上下文理解用户的后续问题提供更加连贯和个性化的回复环境搭建首先,让我们创建一个Spring Boot项目并添加必要的依赖<parent></parent></project>创建service接口/** @Param userId 用户id* @Param me
·
在构建对话式AI应用时,一个常见的挑战是如何让AI记住之前的对话内容。想象一下,如果你每次与助手交谈时,它都会忘记你之前说过的话,这样的体验是多么令人沮丧!今天,我们将深入探讨如何使用LangChain4j的ChatMemory功能为Java AI应用实现强大的对话记忆能力。
什么是ChatMemory?
ChatMemory是LangChain4j中的一个核心组件,它负责存储和管理对话历史。通过ChatMemory,AI模型能够:
记住对话的上下文
理解用户的后续问题
提供更加连贯和个性化的回复
环境搭建
首先,让我们创建一个Spring Boot项目并添加必要的依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.springai</groupId>
<artifactId>Ai</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>langchain4j-chatmemory</artifactId>
<packaging>jar</packaging>
<name>langchain4j-chatmemory</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
创建service接口
package com.springai.service;
import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.UserMessage;
public interface ChatAssistant {
/*
* @Param userId 用户id
* @Param message 用户消息
* */
String chat(@MemoryId Long userId, @UserMessage String message);
}
编写配置类创建模块元信息
package com.springai.config;
import com.springai.service.ChatAssistant;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration(proxyBeanMethods = false)
public class LLMConfig {
@Bean
public ChatLanguageModel chatLanguageModel() {
ChatLanguageModel chatLanguageModel = OpenAiChatModel.builder()
//apiKey
.apiKey("sk-3dbcd881d8db42ddb24e1b095539f72e")
//模型名称
.modelName("qwen3-max")
//baseUrl
.baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
//是否记录请求
.logRequests(true)
//是否记录响应
.logResponses(true)
.build();
return chatLanguageModel;
}
@Bean
public ChatAssistant chatAssistant(ChatLanguageModel chatLanguageModel) {
return AiServices.builder(ChatAssistant.class)
//语言模型
.chatLanguageModel(chatLanguageModel)
//聊天记忆
.chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10))
.build();
}
}
更多推荐



所有评论(0)