综合介绍
promptfoo 是一个开源的命令行工具和库,专门用于评估和红队测试大语言模型(LLM)应用。它为开发者提供了一套完整的工具,用于构建可靠的提示、模型和基于检索的生成(RAGs),并通过自动化红队测试和渗透测试来确保应用的安全性。promptfoo 支持多种LLM API提供商,包括OpenAI、Anthropic、Azure、Google、HuggingFace等,甚至可以集成自定义API。该工具旨在通过测试驱动的开发方法,帮助开发者快速迭代和改进语言模型的性能。
功能列表
- 自动化红队测试:运行自定义扫描,检测安全、法律和品牌风险。
- 质量评估:通过特定于用例的基准测试,构建可靠的提示和模型。
- 并发和缓存:加速评估过程,支持实时重新加载。
- 命令行界面:无需SDK、云依赖或登录,快速上手。
- 开源社区支持:由活跃的开源社区支持,适用于生产环境中的数百万用户。
- 高层次漏洞和风险报告:生成详细的漏洞和风险报告,帮助开发者识别和修复问题。
- 多语言支持:支持Python、Javascript等多种编程语言。
- 私有化运行:所有评估在本地机器上运行,确保数据隐私。
使用帮助
安装流程
- 安装命令行工具:
npm install -g promptfoo
- 初始化项目:
npx promptfoo@latest init
- 配置测试用例: 打开
promptfooconfig.yaml
文件,添加你想要测试的提示和变量。例如:
targets:
- id: 'example'
config:
method: 'POST'
headers: 'Content-Type: application/json'
body:
userInput: '{{prompt}}'
使用指南
- 定义测试用例: 确定核心用例和失败模式,准备一组代表这些场景的提示和测试用例。
- 配置评估: 通过指定提示、测试用例和API提供商来设置评估。
- 运行评估: 使用命令行工具或库执行评估,并记录每个提示的模型输出。
promptfoo evaluate
- 分析结果: 设置自动化要求,或在结构化格式/网页UI中查看结果。使用这些结果选择最适合你用例的模型和提示。
- 反馈循环: 随着收集到更多示例和用户反馈,继续扩展你的测试用例。
详细操作流程
- 红队测试:
- 运行自定义扫描,检测常见的安全漏洞,如PII泄露、不安全的工具使用、跨会话数据泄露、直接和间接的提示注入等。
- 使用以下命令启动红队测试:
bash
npx promptfoo@latest redteam init
- 质量评估:
- 通过特定于用例的基准测试,构建可靠的提示和模型。
- 使用以下命令运行质量评估:
bash
promptfoo evaluate --config promptfooconfig.yaml