第17篇:批处理——一次处理一大堆任务
Hermes 功能详解第17篇:批处理。把几百条消息一次性丢给 AI,集中处理省时省力。
这篇讲的是:如何让 Hermes Agent 像流水线工人一样,一次性处理成百上千个任务,还能自动记录全过程。
批处理是什么?
想象你有一家手工作坊,平时接单都是一件一件做。现在突然来了 1000 个订单,你不可能一个个手工完成——太慢了。批处理就是给 Hermes Agent 装上一条流水线:把一堆任务(prompts)排好队,同时开好几个工位(worker)并行处理,最后自动打包输出结果。
这套功能主要用来生成训练数据——也就是给 AI 模型“喂”的教材。每个任务都会记录完整的对话过程、工具调用次数、成功失败情况,格式是标准的 ShareGPT 格式,可以直接用来微调模型或做评测。
快速上手
第 1 步:准备任务清单
把你想让 Agent 做的事写进一个 JSONL 文件(每行一个任务):
{"prompt": "写一个Python函数,找出最长回文子串"}
{"prompt": "用Flask创建一个用户登录的REST API接口"}
{"prompt": "修复这个报错:TypeError: cannot unpack non-iterable NoneType object"}
第 2 步:运行批处理
python batch_runner.py \
--dataset_file=data/prompts.jsonl \
--batch_size=10 \
--run_name=my_first_run \
--model=anthropic/claude-sonnet-4.6 \
--num_workers=4
--batch_size:每批处理多少个任务--num_workers:同时开几个“工位”(并行数)--run_name:这次运行的名称,结果会存到data/my_first_run/文件夹里
第 3 步:查看结果
运行完成后,打开 data/my_first_run/ 文件夹,你会看到:
data/my_first_run/
├── trajectories.jsonl # 最终合并的所有结果
├── batch_0.jsonl # 每批的单独结果
├── checkpoint.json # 断点记录(中断后可以续跑)
└── statistics.json # 统计信息
中断了怎么办?——断点续跑
批处理跑一半断电了?别慌。加个 --resume 参数就能接着跑:
python batch_runner.py \
--dataset_file=data/prompts.jsonl \
--batch_size=10 \
--run_name=my_first_run \
--resume
它会自动扫描已完成的任务,只处理没做完的部分。而且它是按任务内容匹配的,就算你改了任务顺序也能正确跳过。
每个任务用不同的环境
有些任务需要特殊环境?可以在任务里指定容器镜像:
{"prompt": "安装numpy并计算3x3矩阵的特征值", "image": "python:3.11-slim"}
{"prompt": "编译这个Rust程序并运行", "image": "rust:1.75"}
每个任务就像在独立的“小房间”里运行,互不干扰。
自动质量过滤
批处理跑完会自动扔掉“坏数据”:
- 没有思考过程的样本(AI 直接给答案没推理)会被丢弃
- 工具名乱写的样本(调用了不存在的工具)会被过滤
这样保证你拿到的数据都是高质量的。
小总结
批处理就是把大量任务交给 Agent 并行处理,自动生成结构化训练数据。核心优势:并行高效、断点续跑、自动质检、每个任务可独立环境。适合生成训练数据、模型评测、批量跑基准测试。
下篇预告:数据有了,怎么喂给模型?下一篇我们聊聊「数据集处理与微调准备」——敬请期待!
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features