Skip to main content

快速开始

本指南介绍如何开始使用 Promptfoo 的生成式 AI 红队工具。

前提条件

初始化项目

npx promptfoo@latest redteam init my-project cd my-project

init 命令创建了一些占位符,包括一个 promptfooconfig.yaml 文件。我们将使用此配置文件进行大部分设置。

攻击 API 端点

编辑配置以设置目标端点。例如:

targets:
- id: 'https://example.com/generate'
config:
method: 'POST'
headers:
'Content-Type': 'application/json'
body:
myPrompt: '{{prompt}}'

purpose: '预算旅行代理'

设置 purpose 是可选的,但它会显著提高生成的测试用例的质量(尽量具体)。

有关配置 HTTP 目标的更多信息,请参阅 HTTP 请求

替代方案:测试特定提示和模型

如果您没有实时端点,可以编辑配置以设置要测试的特定提示和 LLM:

prompts:
- '扮演旅行代理并帮助用户规划他们的旅行。用户查询:{{query}}'
# 提示路径也有效:
# - file://path/to/prompt.txt

targets:
- openai:gpt-4o-mini
- anthropic:messages:claude-3.5-sonnet-20240620

有关支持的目标的更多信息,请参阅 自定义提供者。有关支持的提示格式的更多信息,请参阅 提示

替代方案:直接与您的应用对话

Promptfoo 可以直接挂钩到您现有的 LLM 应用,通过 Python、Javascript、RAG 或代理工作流、HTTP API 等攻击目标。有关设置的详细信息,请参阅 自定义提供者

运行评估

现在我们已经生成了测试用例,准备运行对抗性评估。

npx promptfoo@latest redteam run

此命令将生成数百个跨多种潜在危害类别的对抗性输入,并将它们保存在 redteam.yaml 中。然后,它将针对目标运行测试用例。

查看结果

npx promptfoo@latest redteam report

Promptfoo 提供了一个报告视图,让您深入了解特定的红队失败案例:

llm 红队报告

该视图包括与评估视图相关的特定测试类型的细分:

llm 红队修复

点击进入特定测试用例以查看日志将显示原始输入和输出:

llm 红队评估

理解报告视图

红队测试结果提供了关于您的LLM应用程序行为的各个方面的见解:

  1. 漏洞类别:识别发现的漏洞类型,如提示注入、上下文中毒或意外行为。
  2. 严重性级别:根据潜在影响和发生可能性对漏洞进行分类。
  3. 日志:提供触发漏洞的具体输入实例。
  4. 建议的缓解措施:针对已识别漏洞的建议解决方案,可能包括提示工程、额外的安全措施或架构变更。

持续改进

红队测试不是一次性活动,而是一个持续的过程。随着您开发和完善LLM应用程序,定期进行红队评估有助于确保:

  1. 新功能或变更不会引入意外的漏洞
  2. 您的应用程序能够抵御不断演变的攻击技术
  3. 您可以量化并展示安全性和可靠性的随时间改进

查看CI/CD集成文档获取更多信息。

资源