ToolEmu 是一个基于语言模型(LM)的仿真框架,旨在识别和评估使用工具的 LM 智能体(agent)所面临的风险。随着 LM 智能体和工具使用(如 ChatGPT 插件)的快速发展,智能体能力增强的同时也放大了潜在风险,例如泄露隐私数据或造成财务损失。传统上,识别这些风险需要大量人力,包括实现工具、为每个测试场景手动搭建环境以及寻找风险案例。随着工具和智能体日益复杂,测试成本高昂,难以发现高风险、长尾的风险。ToolEmu 通过 LM 仿真环境,支持大规模识别和评估此类风险,促进更安全 LM 智能体的开发。
该仓库包含以下代码:在仿真中测试特定测试用例的 LM 智能体;使用自动评估器和精选基准评估 LM 智能体;整理自己的工具包和测试用例。ToolEmu 的灵活性使得整理新的工具包和测试用例变得容易,并欢迎贡献以扩展基准。
ToolEmu 由三个主要组件构成:
-
工具模拟器(Tool Emulators):ToolEmu 使用强大的 LM(如 GPT-4)仅根据工具规格和输入来模拟工具在虚拟沙箱中的执行,无需工具实现。这允许在不同场景中更快地原型化 LM 智能体,同时适应评估可能缺乏现有 API 或沙箱实现的高风险工具。
-
安全与有用性评估器(Safety & Helpfulness Evaluators):为了支持可扩展和定量的风险评估,ToolEmu 包含一个基于 LM 的安全评估器,自动识别 LM 智能体导致的潜在失败,并量化相关风险严重程度。为了捕捉安全性与有效性之间的潜在权衡,ToolEmu 还包含一个基于 LM 的有用性评估器。
-
精选基准(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。