0Pricing
AI Agents · 课时

将摘要作为压缩方式

定期用持续更新的摘要替换较早的对话轮次,以精确回忆换取上下文窗口空间。

将摘要作为压缩方式 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。

作为记忆的压缩

对话变长后,请用一份简短总结替换较早的轮次。您需要用精确回忆换取上下文空间。

总结会保留要点(事实、决策和待处理事项),但原文已经不复存在。

何时进行总结

请在以下情况下触发总结:

  • 总令牌数超过阈值(例如 8k)
  • 轮次数超过 N(例如 20)
  • 用户开始新的主题

总结较早的轮次

保留最近的轮次原文;只总结已经被移出的内容:

def compact(messages, keep_recent=10):
    system = messages[0]
    old = messages[1:-keep_recent]
    recent = messages[-keep_recent:]
    if not old:
        return messages
    summary = summarise(old)
    return [
        system,
        {'role': 'system', 'content': f'Earlier conversation summary:\n{summary}'},
        *recent
    ]

总结提示词

请使用一次独立且成本较低的模型调用来生成总结:

def summarise(messages):
    text = '\n'.join(f'{m["role"]}: {m["content"]}' for m in messages)
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': 'Summarise this conversation in 5 bullet points. Preserve facts, decisions, and pending TODOs.'},
            {'role': 'user', 'content': text}
        ],
        max_tokens=300,
    )
    return response.choices[0].message.content

持续更新的总结

请维护一份不断增长的单一总结,而不是每次都从头重新总结:

running_summary = ''

def extend_summary(new_messages):
    global running_summary
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[
            {'role': 'system', 'content': 'Extend the existing summary with the new turns. Keep it under 200 words.'},
            {'role': 'user', 'content': f'Existing summary:\n{running_summary}\n\nNew turns:\n{format(new_messages)}'}
        ],
        max_tokens=500,
    )
    running_summary = response.choices[0].message.content

结构化总结

请强制总结提取特定字段:

summary_schema = {
    'topics_discussed': '...',
    'user_facts': {'name': '...', 'preferences': '...'},
    'open_questions': ['...'],
    'decisions_made': ['...']
}
# Use json_object response_format to enforce.
import json
print(json.dumps(summary_schema, indent=2))

分层总结

对于非常长的历史记录:

  • 每 100 轮一份总结(中层)
  • 每 1000 轮一份总结(高层)
  • 生命周期总结(极端情况)

只将适当层级的内容注入上下文。

细节丢失

总结会丢失具体引语和准确措辞。如果用户问“我之前关于定价到底说了什么?”,模型就无法回答。

如果需要逐字回忆,您要么使用更大的上下文,要么使用向量搜索归档。

总结与向量归档并用

兼顾两者的最佳方案:

  1. 将较早的轮次总结到系统消息中
  2. ALSO 将每一轮嵌入向量存入向量存储
  3. 如果用户询问具体细节,就从向量存储中检索原文

总结质量很重要

糟糕的总结比没有总结更糟。请使用成本低但能力足够的模型(gpt-4o-mini、haiku),而不是最便宜的层级来执行总结调用。

更新总结的成本很高

总结 8000 个对话令牌是真实的 LLM 调用——耗时 1–2 秒,成本 0.5 美分。请在轮次之间异步执行,而不是将其放在关键路径上。

总结的权衡

将总结用作记忆时,主要的权衡是什么?

回顾

总结是扩展记忆的低成本方式。请将其与向量检索结合,以便准确回忆原文引语。

常见问题解答

「将摘要作为压缩方式」课时是免费的吗?

是的 — 「将摘要作为压缩方式」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。

「将摘要作为压缩方式」这节课中我会学到什么?

定期用持续更新的摘要替换较早的对话轮次,以精确回忆换取上下文窗口空间。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Agents 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「将摘要作为压缩方式」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Agents 课中编写并运行代码吗?

能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 上下文窗口中的短期记忆
  2. 长上下文为何无法扩展
  3. 将摘要作为压缩方式
  4. 简单记忆存储(键值)
← 返回 AI Agents