Skip to content

对 LLM 应用做红队测试

Red teaming LLM apps

只从正确性、忠实度(faithfulness)或事实准确性这些维度来评估 LLM,能得到一个「不错」的模型,但不足以得到一个「理想」的模型。因为这些指标都没有告诉你:模型有多容易被人利用去做它本不该做的事。一段精心构造的提示词,即便面对最安全的模型,也可能诱使它泄露个人身份信息(PII)、生成有害内容,或者泄露内部数据。这也是为什么每一家主要的 AI 实验室,都把红队测试(red teaming)当作模型开发中不可或缺的一环。

llm evaluation p353 1

实际操作中,要解决这个问题,需要用上 SOTA 级别的对抗性策略,比如提示词注入(prompt injection)、越狱(jailbreak)、响应操纵等等。除了这些策略之外,你还需要一批精心设计、足够「狡猾」的提示词,去模拟真实黑客的行为。这能帮助你评估 LLM 在面对 PII 泄露、偏见、有害输出、未授权访问和有害内容生成时的表现。此外,单轮聊天机器人需要的测试,和多轮对话式 Agent 需要的测试并不一样:比如,单轮测试关注的是「一击即中」式的越狱,而多轮测试则会通过对话中的逐步引导和建立信任,一步步操纵 LLM。要把这一整套搭建起来工作量不小,但这些其实都已经在 DeepTeam 里实现好了——这是一个最近很热门的开源框架,只需几行代码,就能对 LLM 做端到端的红队测试。我们来实际看一下。先安装 DeepTeam:

llm evaluation p354 1

下面是我们要进行红队测试的这个 LLM 应用:

llm evaluation p354 2

为了简单起见,这里我们只用了一次简单的 LLM 调用,但实际上你可以换成任意的 LLM 应用(RAG、Agent 等等)。接下来,我们定义想要检测的漏洞(偏见 Bias 和毒性 Toxicity),以及用来检测它们的策略(这里用的是提示词注入 Prompt Injection,也就是说,偏见和毒性会被巧妙地注入到提示词中):

llm evaluation p355 1

偏见(Bias)还支持 “Gender”(性别)、“Politics”(政治)、“Religion”(宗教)这几种类型;毒性(Toxicity)支持 “profanity”(脏话)、“insults”(侮辱)、“threats”(威胁)和 “mockery”(嘲讽)这几种类型。在实例化时,你可以同时指定多种类型。完成!运行这段脚本(uv run llm_tests.py)之后,会生成一份详细报告,内容包括 DeepTeam 实际生成的提示词、LLM 的回复、测试是否通过,以及测试成功/失败的具体原因:

llm evaluation p356 1

你还可以像下面这样,生成一份 risk_assessment 对象的摘要:

llm evaluation p356 2

最后,你还可以把所有记录都同步到 Confident AI 的仪表盘中,进一步分析这份风险报告:

llm evaluation p357 1

这个框架还实现了来自最新研究的所有 SOTA 红队测试技术。一旦发现了漏洞,DeepTeam 还提供护栏(guardrails)机制,防止这些问题在生产环境中真正发生。最后,整套流程完全不需要任何数据集,因为对抗性攻击是根据指定的漏洞,在运行时动态模拟出来的。但无论你用的是哪个框架,这背后的核心洞察都是一样的:LLM 安全,本质上是一个红队测试问题,而不是一个基准测试问题。你需要从第一天起,就像攻击者一样思考。

本站内容仅供学习交流,版权归原作者所有。