Documentation Index
Fetch the complete documentation index at: https://javaai.pig4cloud.com/llms.txt
Use this file to discover all available pages before exploring further.
Spring AI 中的聊天记忆提供了维护 AI 聊天应用程序的对话上下文和历史的机制。
聊天记忆使 AI 应用程序能够:
- 维护对话历史
- 提供上下文感知的响应
- 实现不同的记忆策略
- 管理对话状态
记忆类型
基本配置
@Configuration
public class ChatMemoryConfig {
@Bean
public ChatMemory chatMemory() {
return new InMemoryChatMemory();
}
}
使用聊天记忆
@Service
public class ChatService {
private final ChatClient chatClient;
private final ChatMemory chatMemory;
public ChatService(ChatClient chatClient, ChatMemory chatMemory) {
this.chatClient = chatClient;
this.chatMemory = chatMemory;
}
public String chat(String message, String sessionId) {
// 将消息添加到记忆中
chatMemory.addMessage(sessionId, message);
// 获取对话历史
List<Message> history = chatMemory.getMessages(sessionId);
// 使用上下文生成响应
String response = chatClient.generate(history);
// 将响应存储在记忆中
chatMemory.addMessage(sessionId, response);
return response;
}
}
记忆策略
1. 固定窗口记忆
@Bean
public ChatMemory fixedWindowMemory() {
return new FixedWindowChatMemory(10); // 保留最后10条消息
}
2. 基于令牌的记忆
@Bean
public ChatMemory tokenBasedMemory() {
return new TokenBasedChatMemory(1000); // 在令牌限制内保留消息
}
3. 摘要记忆
@Bean
public ChatMemory summaryMemory() {
return new SummaryChatMemory(summarizer);
}
配置属性
spring.ai.chat.memory.type=in-memory
spring.ai.chat.memory.max-messages=100
spring.ai.chat.memory.max-tokens=1000
spring.ai.chat.memory.ttl=3600
最佳实践
- 记忆大小:根据您的用例选择适当的记忆大小
- 持久化:在生产环境中使用持久化存储
- 清理:为旧对话实现适当的清理机制
- 安全性:确保适当的数据保护和隐私措施
- 可扩展性:考虑为高规模应用程序使用分布式记忆
高级功能
自定义记忆实现
@Component
public class CustomChatMemory implements ChatMemory {
@Override
public void addMessage(String sessionId, String message) {
// 自定义实现
}
@Override
public List<Message> getMessages(String sessionId) {
// 自定义实现
return messages;
}
}
记忆监控
监控记忆使用情况和性能:
management.endpoints.web.exposure.include=chat-memory
management.endpoint.chat-memory.enabled=true
故障排除
常见问题和解决方案:
-
内存泄漏
- 实现适当的清理
- 设置适当的 TTL
- 监控内存使用情况
-
性能问题
-
可扩展性
文档有误?请协助编辑
发现文档问题?点击此处直接在 GitHub 上编辑并提交 PR,帮助我们改进文档!