资源 · 44
提示注入:测试 AI 代理的信任边界
检查文档、搜索结果或消息是否不能代表用户授权操作。
已更新 · 3 min
本指南有助于实现的目标
- 将数据与指令分离。
- 将可用操作限制在任务范围内。
- 测试响应背后的真实效果。
- 记录局限性和回归。
快速检查
- 代理读取哪些外部内容?
- 代理无需审批即可触发哪些操作?
- 授权是否在模型外部强制执行?
- 口头拒绝是否真的能阻止工具调用?
- 如何阻止出现偏差场景?
分步指南
- 1
清点边界
列出消息、网页、文档、搜索结果、附件和工具输出。 将它们视为数据,无需权限即可进行解读。 包括承载文本或多模态内容的渠道。
交付成果:输入和可用操作的映射。
- 2
定义禁止的影响
描述需要防止的危害:超出范围的访问、未经批准的发布、数据传输或帐户更改。 为每个场景设定可观察的结果;仅判断答案文本可能会遗漏已执行的操作。
交付成果:威胁场景和不变式。
- 3
隔离测试环境
使用带有测试标记和模拟工具的清晰标记的虚拟帐户、文档和目标位置。 禁用真实发送和生产环境访问。 保留模型、配置、语料库和连接器版本以重现案例。
交付成果:版本化的环境和测试集。
- 4
重放对抗性输入
在测试源中放置一条与任务相矛盾、请求超出范围的操作或声称具有虚假权限的指令。 改变语言、位置、格式和源组合。 测量工具调用、参数和实际效果。
交付成果:成功案例、被阻塞案例和未解决案例的跟踪记录。
- 5
加强外部控制
在工具中强制执行最小权限、参数验证、读/写分离和允许的目标位置。 要求对敏感操作进行上下文批准。 仅使用 RAG 和拒绝指令无法消除注入风险。
交付成果:可执行规则和绕过测试。
- 6
跟踪变更
在模型、语料库、工具或规则发生变更后重放案例。 同时跟踪被阻塞的合法任务。 公布测试范围和已知限制;在小型测试集上取得成功并不能证明不存在漏洞。
交付成果:回归分析报告和部署决策。
虚构示例
示例情境
示例:助手对一个测试文档进行摘要,该文档请求将信息发送到外部目标。
决策及预期证据
该工具会拒绝该目标,而与生成的文本无关。 测试检查确认没有发送任何内容,并且合法的摘要仍然有效。
区分机制
| 机制 | 目的 | 验证或限制 |
|---|---|---|
| 输入过滤器 | 检测一些可疑模式 | 可能遗漏新措辞 |
| 建模指令 | 描述预期边界 | 不是访问控制 |
| 工具强制执行 | 拒绝未经授权的操作 | 必须检查身份、对象和参数 |
管理指标
| 指标 | 衡量内容 | 首要行动 |
|---|---|---|
| 禁止的操作 | 导致超出范围影响的情况 | 阻止并调查每个影响 |
| 错误拒绝 | 阻止合法任务 | 修改而不扩大权限 |
| 覆盖面 | 实际测试的通道和工具 | 声明盲点 |
常见错误
- 在测试提示中放置密钥
- 仅测试可见答案
- 假设内部文档始终可信
- 在几次测试后声称绝对保护
常见问题解答
执行 RAG 能防止注入吗?
否。检索到的文档本身可能携带恶意指令。 源数据仍需在受控边界内处理。
是否应该阻止所有可疑文档?
这取决于具体任务;代理通常可以在不遵循文档指令或没有写入工具的情况下分析文档。
结果应该如何发布?
说明版本、范围、测试效果、局限性和修复方案。 排除测试中使用的机密信息和客户文档。
官方参考文献
参考文献支持该方法。 请根据您的实际情况调整检查;它们并非认证。 原始参考文献标题和源文档可能使用其他语言。






