SuperAPI AI 工具集

generate-verifiers-env

智能体与模型

查看项目

更新于 10-15 11:18

技能介绍

用途

generate-verifiers-env 用于为强化学习环境构建 Verifiers(PrimeIntellect)变体。当用户要求搭建 Verifiers 环境、将已有环境移植到 Verifiers、或构建进程内(in-process)环境时使用。

概念

PrimeIntellect Verifiers 是一个 Python 库,不是服务器框架。它提供 vf.ToolEnv(多轮 rollout)、vf.Rubric(可组合的异步评分器),以及到 TRL GRPOTrainer 的适配器。训练器或 rollout 拥有 LLM 客户端;环境拥有工具与评分器。

当用户已有共享领域模块(<domain>.py)并希望得到 Verifiers 变体时,将其包装为 toolkit 类加独立工具函数,不要重复领域逻辑。

原型

  • 纯 Python 游戏:一个 @tool 风格函数,通过 rubric 检查轨迹给出终端奖励。
  • 有状态进程内沙盒:Toolkit 拥有沙盒(E2B、浏览器);initialize() 惰性执行;cleanup() 必须在 finally 中调用。
  • 视觉环境:手动驱动 toolkit(跳过 vf.ToolEnv,因为视觉内容块在 verifiers 的 rollout 中不是一等公民)。每轮在用户消息中发送截图。

两种消费路径(始终同时提供)

路径 A — DesktopToolkit 风格类(供 TRL 适配器 + 手动 rollout 使用)。公开方法会被 TRL 适配器内省为工具,文档字符串成为工具描述。

路径 B — vf.ToolEnv,用于原生 verifiers env.evaluate(client, model)。TOOL_FUNCTIONS 是普通 Python 函数列表(非绑定方法),可通过模块级 toolkit 实例共享状态。

推荐文件布局

<env_dir>/verifiers/ 下包含 pyproject.toml(verifiers + e2b-* + datasets + python-dotenv + openai)、init.py、env.py(Toolkit 类 + 独立工具函数 + create_verifiers_env())、rollout.py(用 openai 客户端手动驱动 toolkit)、README.md。

实现顺序

  1. Toolkit 类:init 接收配置(api_key=""、app="firefox" 等),不在此创建沙盒。initialize() 是惰性创建钩子,每个工具方法都应调用它。cleanup() 销毁沙盒,rollout 中始终在 finally 调用。reset() 调用 cleanup() 并重新初始化,供 TRL 适配器在 episode 之间使用。每个工具方法:接受带类型注解的参数(用于通过 inspect 生成 OpenAI 工具 schema)、具有文档字符串(成为工具描述,仅用第一段)、先调用 self.initialize()、修改状态、返回字符串。

  2. 用于 vf.ToolEnv 的独立工具函数:模块级共享 toolkit,加薄包装函数。TRL 适配器需要 toolkit 类(每个 rollout 实例隔离状态),vf.ToolEnv 需要自由函数,两者都提供,不要只选其一。

  3. Rubric:评分器是可组合的,每个为 async def func(completion, answer, **kwargs) -> float。多个评分器通过 vf.Rubric(funcs=[...]) 组合后取平均(或加权,见 verifiers 文档)。单标准环境用一个评分器即可;多标准(例如同时需要 terminate(success) 和状态检查的计算机使用环境)用组合逻辑。

  4. Rollout — rollout.py:通过 inspect 从函数签名与文档字符串构建 OpenAI 工具 schema。该模式适用于任何 toolkit,可作为 Python 签名到 OpenAI 工具 schema 的标准适配器。对于多模态环境,手动驱动 toolkit(不使用 vf.ToolEnv),每轮在用户消息中发送最新截图。

验证关卡

  • Toolkit 可干净导入:uv run python -c "from env import DesktopToolkit, TOOL_FUNCTIONS"
  • vf.ToolEnv 可构建:uv run python -c "from env import create_verifiers_env; env = create_verifiers_env(); print(env)"
  • 手动 rollout:MAX_TURNS=3 uv run python rollout.py 端到端运行,并命中真实后端(E2B 或该环境使用的后端)。

注意事项

  • ModuleNotFoundError: attrs — e2b-desktop 传递性依赖 attrs 但未固定版本,需在依赖中加入 attrs>=23.0。
  • verifiers 数据结构多为 TypedDict,需按键访问而非属性访问(skyrl-gym 中也有同样陷阱,在 desktop_env 移植时遇到过)。
  • 工具 schema 禁止 **kwargs — 某些训练器使用的 vLLM 无法为 **kwargs 内省生成 JSON schema,需定义显式参数,即使为空。
  • 不要返回超大字符串 — verifiers 会将结果原样传给模型,100KB 的日志会撑爆上下文。在工具方法中截断或摘要。

参考

references/architecture.md — vf.ToolEnv 内部机制 + Rubric 组合 + TRL 适配器形态。

官方文档:PrimeIntellect-ai/verifiers 源码仓库;Prime Intellect Verifiers 文档;verifiers/docs/environments.md(ToolEnv / StatefulToolEnv / MultiTurnEnv 参考);verifiers on PyPI(最新为 0.1.9+,2026 年 1 月)。