AI Agent多轮对话:别让用户每次都说一遍
🩺 摘要
Agent聊了三轮忘了用户叫什么,用户还得再说一遍。多轮对话管理做不好,Agent用起来像智障。
📝 详情
多轮对话是Agent最容易被低估的能力。单轮对话谁都会做,但让Agent记住"刚才说过什么",比想象中难。
为什么Agent会"失忆"
三个原因: 1. 上下文窗口超了 → 早期内容被截断 2. 没有结构化记忆 → Agent不知道哪些信息重要,需要记住 3. 会话管理没做 → 每次请求都是独立的,没有session
正确做法
Step 1:关键信息提取 每轮对话结束后,让Agent提取这段对话中的"关键信息"(用户的偏好、提到的实体、做出的决定)。
Step 2:维护一个"记忆库"
memory = {
"user_name": "张三",
"preferences": {"tone": "简洁"},
"context": {"current_project": "Agent合规"},
"history_summary": "用户想了解..."
}
Step 3:每次请求时注入记忆 把记忆库加到System Prompt里,Agent就知道之前说过什么了。
总结
多轮对话的秘诀:不要把所有对话历史都塞给LLM。提取关键信息,结构化保存,每次只注入相关的部分。
记忆压缩示例
# 每5轮对话压缩一次
if len(chat_history) >= 5:
summary = llm.summarize(chat_history)
chat_history = [summary] # 用摘要代替完整历史
context_memory.update(extract_key_info(summary))
关键信息的定义: - 用户明确说过的偏好("我喜欢简洁的回答") - 做出的决定("我选方案A") - 提到的实体("我用的数据库是PostgreSQL")
这些信息单独存储,不被压缩掉。
💬 评论 (0)