Skip to content
🔗 分享本题
查看我的学习进度 →

多轮对话上下文由规则、近期对话、摘要、检索记忆、任务状态和工具结果构建图

🧠 记忆锚点:上下文管理不是盲目追加历史,而是围绕当前任务,在 Token 预算内选择、压缩和检索可溯源状态。

💡 答案要点

上下文管理策略:

策略说明适用场景
滑动窗口只保留最近 N 轮对话简单聊天
摘要压缩用 LLM 总结历史对话长对话
向量检索把历史存向量库,按需检索知识库问答
分层管理重要信息摘要 + 最近对话原文复杂任务

实现示例:

python
class ConversationManager:
    def __init__(self, max_tokens=4000):
        self.max_tokens = max_tokens
        self.history = []

    def add_message(self, role, content):
        self.history.append({"role": role, "content": content})

        # 如果超出限制,压缩历史
        if self.get_token_count() > self.max_tokens:
            self.compress()

    def compress(self):
        # 用 LLM 总结前 50% 的对话
        summary = llm.summarize(self.history[:len(self.history)//2])
        self.history = [
            {"role": "system", "content": f"历史对话摘要:{summary}"},
            *self.history[len(self.history)//2:]
        ]

面试话术:

"多轮对话的核心是平衡上下文完整性和成本。我用分层策略:最近 3 轮保留原文,更早的对话用 LLM 总结。同时加入向量检索,如果用户提到之前的内容,可以从向量库检索相关历史,而不是盲目压缩。"

📚 参考:LangGraph:Memory(多轮会话状态管理)