AI Agent做任务时,经常把很多内容塞进同一个上下文:用户指令、系统规则、网页搜索结果、RAG召回片段、历史记忆、工具返回值、错误日志。上下文越丰富,越容易出现一个问题:模型分不清哪些内容可信,哪些只是资料。
上下文投毒不是只发生在RAG系统里。任何会把外部内容带进模型的AI工具,都需要来源标记。
不同来源要分层
最基本的做法,是给每段上下文标注来源类型:用户输入、系统规则、内部知识库、外部网页、工具结果、历史记忆、模型自我总结。系统规则和授权策略应该永远高于网页内容;外部网页和用户上传文件默认不可信。
如果所有内容都拼成一段纯文本,模型更容易把第三方资料里的命令当成真实指令。
可信等级要可见
来源标记还不够,还要有可信等级。公司制度、已审核知识库、实时数据库、用户上传文档、公开网页、历史记忆,可信度不同。工具执行前可以根据可信等级决定是否允许动作。
例如外部网页可以用于摘要和引用,但不应直接触发发邮件、改权限、上传文件等动作。
历史记忆要有过期策略
Agent记忆很方便,但旧记忆可能过期、被污染或不再适用于当前项目。记忆应有创建时间、来源、适用范围和过期条件。长期记忆进入生产前,最好经过人工确认或自动规则筛选。
把每次对话的模型总结直接当成长期事实,是很危险的省事。
中转站看调用异常
上下文投毒往往会带来调用侧异常:上下文突然变长、工具调用次数上升、模型切换到高成本路径、失败重试增多。通过 https://top-api.cc 这类统一API入口,可以按项目观察token、耗时、失败率和模型使用变化,帮助团队发现某个Agent任务是否被异常内容带偏。
落地清单
- 每段上下文标注来源
- 外部内容默认低可信
- 工具执行前检查来源等级
- 历史记忆设置过期和适用范围
- 召回片段保留文档ID和更新时间
- 异常长上下文触发告警或降级
结语
上下文越丰富,越需要秩序。来源、可信度、时间和适用范围标清楚,模型才更不容易把“资料里的话”误当成“必须执行的命令”。
Leave a Reply