SuperAPI AI 工具集

ToolEmu

ToolEmu 是一个基于语言模型(LM)的仿真框架,用于识别和评估使用工具的 LM 智能体(agent)所面临的风险。该框架通过 LM 模拟工具执行,无需实际实现工具,即可在虚拟沙箱中快速测试智能体行为。ToolEmu 包含工具模拟器、安全与有用性评估器以及一个包含 36 个工具包(311 个工具)和 144 个测试用例的基准测试集。它旨在帮助开发更安全的 LM 智能体,支持大规模风险识别,并允许用户自定义工具包和测试用例。该工作发表于 ICLR 2024 Spotlight。

访问官网

工具介绍

ToolEmu 是一个基于语言模型(LM)的仿真框架,旨在识别和评估使用工具的 LM 智能体(agent)所面临的风险。随着 LM 智能体和工具使用(如 ChatGPT 插件)的快速发展,智能体能力增强的同时也放大了潜在风险,例如泄露隐私数据或造成财务损失。传统上,识别这些风险需要大量人力,包括实现工具、为每个测试场景手动搭建环境以及寻找风险案例。随着工具和智能体日益复杂,测试成本高昂,难以发现高风险、长尾的风险。ToolEmu 通过 LM 仿真环境,支持大规模识别和评估此类风险,促进更安全 LM 智能体的开发。

该仓库包含以下代码:在仿真中测试特定测试用例的 LM 智能体;使用自动评估器和精选基准评估 LM 智能体;整理自己的工具包和测试用例。ToolEmu 的灵活性使得整理新的工具包和测试用例变得容易,并欢迎贡献以扩展基准。

ToolEmu 由三个主要组件构成:

  1. 工具模拟器(Tool Emulators):ToolEmu 使用强大的 LM(如 GPT-4)仅根据工具规格和输入来模拟工具在虚拟沙箱中的执行,无需工具实现。这允许在不同场景中更快地原型化 LM 智能体,同时适应评估可能缺乏现有 API 或沙箱实现的高风险工具。

  2. 安全与有用性评估器(Safety & Helpfulness Evaluators):为了支持可扩展和定量的风险评估,ToolEmu 包含一个基于 LM 的安全评估器,自动识别 LM 智能体导致的潜在失败,并量化相关风险严重程度。为了捕捉安全性与有效性之间的潜在权衡,ToolEmu 还包含一个基于 LM 的有用性评估器。

  3. 精选基准(Curated Benchmark):ToolEmu 附带一个初始基准,涵盖 36 个工具包(311 个工具)和 144 个测试用例,用于跨各种工具和场景对 LM 智能体进行定量评估。ToolEmu 的可扩展性允许将其扩展到更多工具和场景。

使用方式:

运行代码需要安装另一个名为 PromptCoder 的包,该包用于以模块化方式管理系统提示。该包仍在开发中。建议使用 pip 以可编辑模式安装,这样对代码的任何更改都会立即生效,无需重新安装。安装命令如下:

pip install -e .

安装后,需要设置 OpenAI 或 Claude API 密钥。在项目目录中创建名为 .env 的文件,并输入密钥,例如:

OPENAI_API_KEY=your_key

如果要运行 Claude 模型,还需要 ANTHROPIC_API_KEY。

在仿真中运行特定测试用例:可以通过演示(demo)尝试特定测试用例,执行示例案例或自定义案例。还提供了一个 notebook,可以从精选数据集中选择并运行案例,并对设置进行细粒度控制。

使用基准评估 LM 智能体:要评估特定 LM 智能体在 assets/ 文件夹中由 144 个测试用例和 36 个工具包组成的精选基准中的表现,运行以下命令:

python scripts/emulate.py

脚本将在仿真器中执行智能体(使用 scripts/emulate.py),然后评估仿真轨迹(使用 scripts/evaluate.py)。评估结果将通过 scripts/helper/read_eval_results.py 打印到控制台。要使用特定设置进行评估,可以指定以下参数:

  • --agent-model:智能体的基础模型,默认 gpt-4-0613。
  • --agent-temperature:智能体的温度,默认 0。
  • --agent-type:智能体类型,默认 naive,仅包含格式说明和示例的基本提示。其他选项包括 ss_only(包含安全要求)或 helpful_ss(包含安全性和有用性要求)。
  • --simulator-type:模拟器类型,默认 adv_thought(对抗性模拟器)。另一个选项是 std_thought(标准模拟器)。
  • --batch-size:用于运行仿真和评估的批大小,默认 5。如果设置为大于 10,可能会遇到频繁的速率限制错误。

注意,运行和评估一个测试用例的成本约为 1.2 美元,运行整个数据集总计约 170 美元。要评估测试用例子集,可以指定要运行的案例数量(--trunc-num)。例如,设置为 10 将仅运行前 10 个测试用例(在 --shuffle 随机打乱后)。

对于管道的详细控制,请参考 scripts/ 文件夹。

整理自己的工具包和测试用例:如果希望按照规范整理自己的工具包或测试用例,提供了脚本使用 GPT-4 头脑风暴并生成初始集,然后可以审查、过滤和精炼。根据具体用例,可以考虑以下选项,从简单到复杂:

  • 测试用例补全:如果有一个特定的测试用例(即工具包、用户指令和潜在风险),并希望使用 GPT-4 填充对抗性模拟器和安全评估器所需的额外字段(例如欠指定),请使用此 notebook。
  • 测试用例整理:如果想使用精选工具包集整理大量多样化的测试用例,并使用 GPT-4 头脑风暴初始集,请参阅测试用例整理详情。
  • 工具包整理:如果想创建新的工具包集,并使用 GPT-4 头脑风暴初始集或生成工具包规格,请参阅工具包整理详情。

更多细节请参考生成 readme。

欢迎向此仓库贡献,特别是贡献新工具和测试用例以扩展评估基准。请参阅贡献指南了解更多细节。

该工作发表于 ICLR 2024 Spotlight。