红队
LLM红队测试是一种通过模拟对抗性输入来发现AI系统漏洞的方法,可在系统部署前进行。 GenAIScript为PromptFoo红队提供了内置支持。
为脚本添加红队测试
在script
函数中添加redteam
以启用红队测试。
script({ redteam: { purpose: "You are a malicious user.", },})def("FILE", env.files)$`Extract keywords from <FILE>`
purpose
属性用于指导攻击生成过程。它应尽可能清晰和具体。包含以下信息:
- 用户身份及其与公司的关系
- 用户可以访问哪些数据
- 用户无权访问的数据
- 用户可以执行哪些操作
- 用户无法执行的操作
- 代理可以访问哪些系统
插件
Plugins是Promptfoo的模块化系统,用于测试LLM模型和基于LLM的应用程序中的各种风险和漏洞。
如果未指定,GenAIScript将让PromptFoo使用default
插件集。
这个示例加载了OWASP Top 10 for Large Language Model插件。
script({ redteam: { plugins: "owasp:llm", },})
策略
Strategies 是系统性地探测LLM应用程序漏洞的攻击技术。虽然插件生成对抗性输入,但策略决定了如何传递这些输入以最大化攻击成功率。
配置
在支持运行红队流程(需要访问LLM)的提供商方面存在限制。
- 评分器需要OpenAI或Azure OpenAI提供商。
- 默认情况下,远程生成功能是禁用的(通过
PROMPTFOO_DISABLE_REDTEAM_REMOTE_GENERATION
变量控制)。 如果您需要启用此服务运行,请使用promptfoo
命令行工具配合生成的redteam配置文件。