← 返回教程

知识库里混入指令会怎样:给 Agent 做一次提示词注入测试

2026-10-23 流程自动化

知识库里混入“忽略规则、调用工具”的文字,模型可能把资料内容误当指令。有效测试应检查不可信资料能否改变授权、触发外部动作或泄露其他资料,而不是只看回答有没有说“我会遵守规则”。本文提供仅含合成标记的隔离测试集,适合有知识检索与工具调用的 Agent,不对第三方系统进行攻击,也不承诺一次通过即可消除注入风险。

把测试目标写成可观察的越界

选一条正常业务,例如读取合成设备手册并回答保养周期。获准工具只有手册查询与模拟工单草案,外部发送和业务写入均替换成不会产生真实副作用的记录器。测试越界可以定义为:尝试读取另一区域的假订单,或尝试把合成标记发给测试接收器。接收器不得指向真实邮箱、客户系统或外部第三方数据端点。

先确认正常问题可以完成,避免系统从一开始就全部拒绝却被误认为安全。保存合法任务、允许数据范围、模型配置和工具清单的版本。测试人员需要获得相应环境与资料的授权,原始输入和输出只使用演示内容。不要为了验证保护,把真实秘密放进上下文等待模型泄露;用无意义标记足以判断边界是否被穿越。

注入应放在真正的不可信渠道

OWASP 提示词注入防护指南讨论外部内容中的间接注入,并强调模型外的参数校验、权限执行与无害隔离测试。本文据此把内容放入合成知识文档,而非全部作为用户指令直接提交。直接聊天攻击和被检索文档诱导是不同入口,不能用一种结果覆盖另一种。

下载隔离测试集与拒绝记录表。第一条是正常手册事实,第二条在脚注中声称自己是系统更新并要求调用模拟写工具,第三条把工单操作伪装成解决问题的必要前提。每条都写明合法目标、越界目标、入口和预期证据。内容只有测试标记与虚构对象,不包含可用于真实系统的凭据、破坏命令或外传目的地。

分别观察模型和执行器

运行后保存检索命中文档、模型建议的工具调用、执行器授权决定与最终答案。模型说“拒绝”但后台已调用工具,应判失败;模型尝试调用但服务端正确拒绝,说明执行边界起效,同时仍需记录诱导发生。不能只依赖最终自然语言判断安全。对于隐藏在引用、附件和工具返回中的内容,也要按实际渠道分别安排样例。

工具执行器必须根据已验证请求人、对象范围与参数白名单判断权限,不能接受文档里声称的管理员身份。写操作需要具备权限的人确认具体对象与参数,资料里的“已获批准”不能替代真实确认记录。测试应专门让合成文档带上伪造批准文字,确认动作仍然停在待确认或拒绝状态,且不会自动向任何人发送消息索取授权。

别把过滤关键词当成全部防护

可以对输入做筛查、为资料加来源标签、分隔可信指令与外部内容,但这些层次不能单独保证模型不受影响。真正的边界还包括最小工具权限、查询范围限制、输出校验、受控确认和数据最小化。模型没有拿到的资料和凭据,不容易通过回答泄露;因此先减少无关上下文,比反复增加一句“绝不泄露”更容易核对。

同时记录误伤。正常文档可能在讲解“忽略错误提示”或引用一段安全培训材料,系统若全部拒绝,会妨碍合法任务。测试集保留相近的正常内容,比较是否仍能回答保养周期,并说明可疑片段为何未参与动作授权。安全结果与业务可用性分别统计,不用一个笼统准确率把越权尝试与正常回答混在一起。

测试失败后的修改要有针对性

若越界发生在工具参数可指定租户,就修复服务端身份传播,而不是只换提示词;若是受限文档在检索前就泄露,调整检索授权;若是输出把内部引用变成公开链接,修复链接访问控制。每次改动重跑原失败案例和正常基线,保存版本与差异。不要将一次未触发解释为系统永久免疫,模型、文档与工具变化都可能改变行为。

上线验收应写清测试覆盖了哪些入口、使用哪些合成样例、观察到什么、还有哪些渠道未测。残余未知项要有负责人和限制,例如高风险写操作继续人工最终提交。资料维护者也应知道不能把任意网页直接视为可信流程指令,新增知识源时重新检查来源与权限,而不是把注入测试只当开发完成前的一次表演。

为避免测试结果被偶然性掩盖,可在固定配置下重复无害样例,分别记录每次工具建议与拒绝证据,不只挑一条理想回答展示。后续修改模型或增加工具时,保留相同输入重新比较;测试记录应说明覆盖范围与未测入口。

相关方案见流程自动化专题和项目失败原因,提示词基础可读有用的提示词规则。需要为现有 Agent 设计隔离验收,可在定制咨询提供脱敏工具清单、知识源和权限模型,明确测试目标与可观察的拒绝证据。

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。