将摘要作为压缩方式
定期用持续更新的摘要替换较早的对话轮次,以精确回忆换取上下文窗口空间。
将摘要作为压缩方式 是 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 轮一份总结(高层)
- 生命周期总结(极端情况)
只将适当层级的内容注入上下文。
细节丢失
总结会丢失具体引语和准确措辞。如果用户问“我之前关于定价到底说了什么?”,模型就无法回答。
如果需要逐字回忆,您要么使用更大的上下文,要么使用向量搜索归档。
总结与向量归档并用
兼顾两者的最佳方案:
- 将较早的轮次总结到系统消息中
- ALSO 将每一轮嵌入向量存入向量存储
- 如果用户询问具体细节,就从向量存储中检索原文
总结质量很重要
糟糕的总结比没有总结更糟。请使用成本低但能力足够的模型(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 反馈 — 无需本地设置。
此课程中的所有课时
- 上下文窗口中的短期记忆
- 长上下文为何无法扩展
- 将摘要作为压缩方式
- 简单记忆存储(键值)