用途
RL Env From Description 用于把用户对强化学习训练环境的英文自然描述,转换成可运行的代码,覆盖 OpenEnv、OpenReward(ORS)、Verifiers、NeMo Gym 四个目标框架。另有两个次级框架变体 SkyRL Gym 与 GEM,仅在用户明确要求且环境属于“文本动作加标签解析”类型时才生成。
适用情形包括:用户用自然语言描述环境(目标、动作面或奖励形态)并想要代码;用户要求“为 X 构建环境”“搭建一个 RL 环境”“把该环境移植到 OpenEnv/ORS/Verifiers/NeMo Gym”;用户已在一个框架中有可运行环境,希望在其他框架复现同一环境;用户询问“这个任务该怎么设计奖励/状态/工具面”,此时先做访谈再实现。
不适用于:训练运行(TRL/GRPO 配置)、评估框架工作,或不以产生新环境代码结尾的一般智能体设计问题。
推荐目录结构
建议但非强制的布局:环境目录下放共享的纯逻辑文件 <domain>.py、可选的任务列表 tasks.py,以及四个框架子目录 openenv、ors、verifiers、nemo_gym。每个框架目录内的公开契约包括:框架相关依赖的 pyproject.toml、init.py、一个实现文件(ORS 为 server.py,OpenEnv 为 server/<env>_environment.py,Verifiers 为 env.py,NeMo Gym 为 server.py)、rollout.py(端到端运行 LLM)、README.md(一页使用指南)。需先询问用户希望文件写入何处,若无偏好则建议上述布局,不强加。
四步流程
第一步:访谈用户
只问决定架构的问题,完整题库见 references/interview.md,必答项包括:智能体做什么(一句话描述目标与循环);动作面是结构化工具调用(多数情况)还是带标签解析的自由文本(仅在模型不支持工具调用时);状态是否跨轮持久(每会话沙箱、内存字典或无);奖励何时触发(逐步、终止时或回合后)及成功标准;外部后端(沙箱 E2B、Web 服务或无);终止条件(固定轮次上限、模型发出终止或派生条件);文件存放位置。若描述已提供足够信号(如引用了要模仿的现有环境),可跳过答案明显的问题;架构存疑时给出一行理由的默认方案,允许用户否决。
第二步:选择最接近的原型
原型包括:纯 Python 游戏(确定性、单工具、无外部服务、多轮,奖励为终止奖励或按游戏状态逐步给);有状态沙箱(真实后端如 E2B 代码解释器、浏览器、数据库,结构化工具调用,状态跨调用持久,由外部评分器如字符串匹配、单元测试、LLM 评判);视觉/计算机使用(截图加鼠标键盘,参照 Anthropic computer_20251124 的 19 工具动作面,通过 terminate(status) 工具给终止奖励);文本动作加解析(模型输出含标签的自由文本,环境解析,仅在无工具调用支持时使用,按解析结果逐步给奖励)。需告知用户使用了哪个原型及原因。
第三步:按依赖顺序实现
先写共享模块:<env_dir>/<domain>.py(唯一包含领域逻辑的文件,纯 Python,无框架导入)与 tasks.py,各框架仅作包装。随后实现各框架变体,顺序无关:OpenEnv 使用 MCPEnvironment + @mcp.tool + create_app(...);ORS 使用 Environment + @tool 方法 + ToolOutput(blocks=[...], reward=..., finished=...),每次工具调用给奖励是该框架的标志性特性;Verifiers 在工具类上写普通 Python 工具函数,用 vf.ToolEnv + vf.Rubric;NeMo Gym 使用 SimpleResourcesServer,每个工具一个 app.post("/<tool>"),采用 cookie 会话,回合后 /verify 给奖励。
第四步:端到端验证
每个框架目录做一次针对小型 LLM 的冒烟 rollout(默认 HF Router 的 Qwen,或设置了 OPENAI_API_KEY 时用 OpenAI)。rollout 须发现环境暴露的工具(不硬编码名称,NeMo Gym 除外,因其无 list_tools()),驱动 3 至 5 轮循环并打印每次工具调用与结果,工具调用出错须显式失败(冒烟测试 MAX_TURNS=3)。若环境需要外部后端(如 E2B),检查 .env 中相关密钥,缺失时给出清晰错误并停止。
成功标准
用户输入“在 path/to/connect_four/ 做一个让智能体下四子棋的环境”,应产出:共享引擎 game.py、tasks.py(若干起始局面)、四个框架目录均可运行、4 个通过的 rollout 冒烟测试(本地 Ray 初始化失败时 NeMo Gym 通过已部署 Space 测试)、按项目约定更新 README,全过程用户只需回答 5 至 7 个问题。
参考文档
references/interview.md(完整题库与示例答案)、references/openenv.md、references/ors.md、references/verifiers.md、references/nemo_gym.md(均为规划级,分别让位于 generate-openenv-env、generate-ors-env、generate-verifiers-env、generate-nemo-gym-env)。仅需单一框架变体时,直接触发对应框架技能。
硬性约束
不强加目录布局,只建议一次并尊重用户选择;不跳过共享领域模块,各框架变体必须包装同一个 <domain>.py,绝不复制逻辑;不运行训练,技能止于 rollout;不臆造 API,不确定调用形态时先读对应框架的 references/architecture.md;视觉环境的坐标空间需在提示中声明约定(像素或归一化 0–1000),Qwen2.5-VL 输出 0–1000 归一化值,rollout 适配器须重新缩放。
官方文档
OpenEnv:huggingface/OpenEnv · docs;OpenReward (ORS):openrewardstandard.io · docs.openreward.ai · openreward on PyPI;Verifiers:PrimeIntellect-ai/verifiers · docs;NeMo Gym:NVIDIA-NeMo/Gym · docs。