提示词注入
Prompt Injection
高级通用提示词注入(Prompt Injection)是把指令藏进网页、文件或工具结果等低信任内容,诱使 AI 把它当成任务命令执行。理解它能帮你在做检索或 Agent 产品时划清数据与指令的边界,避免摘要任务被页面文字带偏。
你可能会说:「我想让 AI 读网页和文件时只提取有用信息,别照着里面夹带的命令做事。」
动手看看总结竞品定价页
产品经理请 AI 总结竞品定价页,想快速看清套餐差异。这个请求才是 AI 要完成的任务。
要点提示词注入是怎么发生的?
- 1
入口是模型读取的外部内容
你让 AI 总结网页时,网页正文是它要处理的数据,不是你给它的命令。攻击者如果能修改正文,就可能在其中写入看似针对 AI 的指示。邮件、仓库文件和工具返回结果也可能成为入口。
- 2
关键是数据越过指令边界
问题不在于页面里出现了祈使句,而在于 AI 是否把页面的话当成了新的任务要求。比如你要它概括公告,它却按照公告里夹带的文字修改回答格式或改变任务目标,数据就影响了指令。
- 3
防护要覆盖工具调用环节
如果 Agent 还能发邮件或改文件,影响就不只是答错一句话。我们可以在应用层限制工具权限、核对操作对象,并让高风险操作经过确认;单靠提示词提醒模型忽略注入,难以保证每次都有效。
容易混淆的地方
提示词注入和正常的用户指令,区别在于指令来自哪里:用户直接要求 AI 改摘要格式,是在提出需求;被摘要的网页要求 AI 改格式,则是数据试图指挥 AI。它也不等于 AI 幻觉:幻觉可能是模型自己编错信息,注入则涉及外部内容诱导模型偏离原任务。两者都可能让结果不可靠,但排查入口不同。
什么时候用
适合用
- 做网页摘要或 RAG 问答时,检查检索到的内容能否改变 AI 的回答规则,而不只是提供事实。
- 做客服邮件助手时,评估陌生邮件能否诱使 Agent 调用发信、退款等工具。
- 让编程 Agent 阅读仓库文件时,检查文件中的文字能否诱导它执行无关命令。
不适合用
- 你只是想告诉 AI 摘要要短一些,直接写清提示词即可;这不是来自低信任内容的注入。
- 网站表单只把数据交给普通后端处理,没有模型读取并遵循文本指令;此时重点是输入校验和权限控制。
- 你担心 AI 凭空编造产品功能,却没有可疑外部内容;先用事实核对和测试来处理幻觉问题。
练一练选一个答案,看看解释
你做了一个读取供应商公告并生成摘要的 Agent。公告里写着让 AI 跳过摘要、改为调用工具删除本地报表。你会怎样判断和处理?
让 AI 帮你做复制给 AI Agent 直接用
请检查这个读取网页和仓库文件的 Agent 是否存在提示词注入风险。把外部内容当作任务数据,找出它可能诱导模型改变目标或调用工具的位置;给出可复现的测试输入,并建议应用层的工具权限和操作确认措施。