Context-Minimization Pattern
Nikola Balic (@nibzard)· emerging
问题
用户提供或受污染(tainted)的文本会残留在对话上下文中,从而影响后续生成。
方案
清除或脱敏不可信片段,在其完成用途后:
- 将输入转换为安全中间形式(查询、结构化对象)后,从上下文中移除原始提示。
- 后续推理仅看到可信数据,消除潜在注入。
sql = LLM("to SQL", user_prompt)
remove(user_prompt) # 污染 token 已移除
rows = db.query(sql)
answer = LLM("summarize rows", rows)
如何使用
客服对话、医疗问答,以及任何首轮文本不应主导后续步骤的多轮流程。
权衡
- 优点:实现简单;无需额外模型;通过减少整体上下文用量有助于缓解上下文窗口焦虑。
- 缺点:后续轮次会失去对话上的细微差别,可能影响体验;过度激进的最小化可能删掉有用上下文。
参考文献
关键词:
Beurer-Kellner 等人论文中关于上下文最小化的小节;Claude 博客强调消除提示中矛盾的重要性。
直译:
Beurer-Kellner et al., §3.1 (6) Context-Minimization.
该小节讨论在 Agent 与多步提示流程中,如何在使用完用户输入或不可信内容后将其从上下文中移除,仅保留可信的中间表示(如结构化查询、抽取结果),从而降低提示注入与上下文污染风险;论文将此类做法归纳为「上下文最小化」模式。
Building Companies with Claude Code(链接)
文中强调消除提示与上下文中矛盾的重要性,并指出:若提示里存在矛盾,模型将产出更低质量的结果。因此在实际构建基于 Claude 的产品时,应保持上下文一致、及时移除已失效或与当前目标冲突的片段,与上下文最小化思路一致。
来源摘要
正在获取来源并生成中文摘要…