AI Agent多轮对话:别让用户每次都说一遍

📘 AI教程 💬 🔥 Trending

🩺 摘要

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")

这些信息单独存储,不被压缩掉。