MCPMark lite RFT示例
独立的、Docker打包的、多轮工具调用基准,与 eval-protocol 烟花RFT。
此回购是受MCP基准设计启发的实用子集:
- 针对可变状态(文件系统)的真实工具执行
- 部署后环境状态的确定性验证器
- 低基础设施开销(stdio上的单个本地FastMCP服务器)
为什么这个子集
对于端到端RFT示例,最干净的路径是仅文件系统的MCP任务:
MCPMark强调了验证驱动的真实性,并指出文件系统任务可以在快速启动路径中使用零API-key设置来运行。MCP-Universe是有价值的,但包括可选的互联网/API依赖域和更广泛的服务器矩阵。MCP-Bench是全面的,但设置繁重(多个提供者密钥+Docker堆栈+更丰富的线束要求)。
参考文献
包括什么
mcp_server/task_files_server.py:具有任务范围文件系统工具的本地FastMCP服务器。data/tasks.jsonl:8个确定性多回合任务。benchmark/test_mcp_filesystem_rft.py:@evaluation_test基准使用AgentRolloutProcessor+确定性验证器。benchmark/verifier.py:严格的文件状态检查(json_equals,text_equals,file_contains).Dockerfile:独立可运行容器。
工具模式
每次推出预计将:
- 呼叫
init_task(task_id) - 使用
list_files/read_file - 生成所需的输出文件
write_file - 通过以下方式在检查表中添加完成标记
append_file
奖励是根据真实的文件系统状态计算的,而不仅仅是辅助文本。
本地设置
uv sync设置Fireworks身份验证:
export FIREWORKS_API_KEY=...可选(默认为小型qwen模型):
export MCP_AGENT_MODEL=fireworks_ai/accounts/fireworks/models/qwen3-8b可选低成本旋钮:
export MCP_AGENT_STEPS=8
export MCP_AGENT_MAX_TOKENS=512
export MCP_MAX_CONCURRENT_ROLLOUTS=1云/RFT注释:保守默认值(steps=6, max_tokens=192)用于降低小型模型上的上下文溢出风险。
按需部署覆盖:
export MCP_ON_DEMAND_MODEL='fireworks_ai/accounts/fireworks/models/qwen3-32b#accounts/pyroworks/deployments/qwen3-32b-rft-py-02221823'运行基准测试
uv run pytest benchmark/test_mcp_filesystem_rft.py::test_mcpmark_lite_filesystem -q -s小烟跑:
EP_MAX_DATASET_ROWS=1 MCP_AGENT_STEPS=6 MCP_AGENT_MAX_TOKENS=512 uv run pytest benchmark/test_mcp_filesystem_rft.py::test_mcpmark_lite_filesystem -q -sDocker运行
docker build -t mcpmark-lite-rft .
docker run --rm -e FIREWORKS_API_KEY="$FIREWORKS_API_KEY" mcpmark-lite-rft烟花RFT流程
为此测试使用已知的评估者id:
test-mcp-filesystem-rft-test-mcpmark-lite-filesystem
首先实现RFT就绪数据集(使用旧数据集时需要) eval-protocol 不自动应用的版本 dataset_adapter 在...期间 create rft):
uv run python scripts/materialize_rft_dataset.py \
--input data/tasks.jsonl \
--output data/rft_tasks_smoke.jsonl \
--max-rows 1创建RFT(需要基本模型):
uv run ep create rft \
--evaluator test-mcp-filesystem-rft-test-mcpmark-lite-filesystem \
--dataset-jsonl data/rft_tasks_smoke.jsonl \
--base-model accounts/fireworks/models/qwen3-8b \
--response-candidates-count 2 \
--max-output-tokens 1024 \
--chunk-size 1 \
--yes \
--ignore-docker \
--skip-validation监视作业,直到终端状态:
uv run python scripts/monitor_rft_job.py --job-id --account pyroworks笔记:
- 在此
python-sdk分支,create rft自动检测来自的JSONL输入数据集@evaluation_test(input_dataset=[...])在许多情况下。 - 如果在您的环境中自动检测失败,请先创建/上传数据集,然后使用重新运行
--dataset.
基准设计约束
- 确定性检查使RL的奖励稳定。
- 任务范围的沙盒可防止跨行污染。
- 默认情况下不需要外部API,这使得部署生成成本和故障模式保持较低水平。
