知识引擎/Hermes 知识引擎/Batch Processing(批量处理)

原文链接:Batch Processing sidebar position: 12 title: "Batch Processing" description: "Generate agent trajectories at scale — parallel processing, checkpointing, an

> 原文链接:Batch Processing


sidebar_position: 12 title: "Batch Processing" description: "Generate agent trajectories at scale — parallel processing, checkpointing, and toolset distributions"

Batch Processing(批量处理)

批量处理允许你在数百或数千个 Prompt 上并行运行 Hermes Agent,生成结构化的轨迹(Trajectory)数据。这主要用于训练数据生成——生成包含工具使用统计的 ShareGPT 格式轨迹,可用于微调或评估。

概述

批量运行器(batch_runner.py)处理 JSONL 格式的 Prompt 数据集,通过完整的带工具访问的 Agent 会话运行每个 Prompt。每个 Prompt 获得独立的隔离环境。输出是包含完整对话历史、工具调用统计和推理覆盖率指标的结构化轨迹数据。

快速开始

# 基本批量运行
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

# 恢复中断的运行
python batch_runner.py \
    --dataset_file=data/prompts.jsonl \
    --batch_size=10 \
    --run_name=my_first_run \
    --resume

# 列出可用的工具集分布
python batch_runner.py --list_distributions

数据集格式

输入数据集是 JSONL 文件(每行一个 JSON 对象)。每条记录必须有 prompt 字段:

{"prompt": "编写一个 Python 函数,找出最长回文子串"}
{"prompt": "使用 Flask 创建一个用户认证的 REST API 端点"}
{"prompt": "调试这个错误:TypeError: cannot unpack non-iterable NoneType object"}

记录可以可选地包含:

  • imagedocker_image:用于此 Prompt 沙盒的容器镜像(适用于 Docker、Modal 和 Singularity 后端)
  • cwd:任务终端会话的工作目录覆盖

配置选项

参数默认值描述
--dataset_file(必需)JSONL 数据集路径
--batch_size(必需)每批次 Prompt 数量
--run_name(必需)运行名称(用于输出目录和检查点)
--distribution"default"工具集分布采样来源
--modelclaude-sonnet-4.6使用的模型
--base_urlhttps://openrouter.ai/api/v1API 基础 URL
--api_key(环境变量)模型 API 密钥
--max_turns10每个 Prompt 最大工具调用迭代次数
--num_workers4并行工作进程数
--resumefalse从检查点恢复
--verbosefalse启用详细日志
--max_samples全部仅处理数据集前 N 个样本
--max_tokens模型默认值每次模型响应的最大 Token 数

Provider 路由 (OpenRouter)

参数描述
--providers_allowed允许的 Provider,逗号分隔(如 "anthropic,openai"
--providers_ignored忽略的 Provider,逗号分隔(如 "together,deepinfra"
--providers_order首选 Provider 顺序,逗号分隔
--provider_sort"price""throughput""latency" 排序

推理控制

参数描述
--reasoning_effort推理强度级别:noneminimallowmediumhighxhigh
--reasoning_disabled完全禁用推理/思考 Token

高级选项

参数描述
--ephemeral_system_prompt执行期间使用但不保存到轨迹的系统提示词
--log_prefix_chars日志预览中显示的字符数(默认:100)
--prefill_messages_file用于少样本启动的预填充消息 JSON 文件路径

工具集分布

每个 Prompt 从分布中随机采样一组工具集。这确保训练数据涵盖多样的工具组合。使用 --list_distributions 查看所有可用分布。

在当前实现中,分布为每个工具集分配一个概率。采样器独立地翻转每个工具集,然后保证至少启用一个工具集。这与手工编写的预构建组合表不同。

输出格式

所有输出保存在 data/<run_name>/

data/my_run/
├── trajectories.jsonl    # 合并的最终输出(所有批次合并)
├── batch_0.jsonl         # 单个批次结果
├── batch_1.jsonl
├── ...
├── checkpoint.json       # 恢复检查点
└── statistics.json       # 汇总工具使用统计

轨迹格式

trajectories.jsonl 中每行是一个 JSON 对象:

{
  "prompt_index": 42,
  "conversations": [
    {"from": "human", "value": "Write a function..."},
    {"from": "gpt", "value": "I'll create that function...",
     "tool_calls": [...]},
    {"from": "tool", "value": "..."},
    {"from": "gpt", "value": "Here's the completed function..."}
  ],
  "metadata": {
    "batch_num": 2,
    "timestamp": "2026-01-15T10:30:00",
    "model": "anthropic/claude-sonnet-4.6"
  },
  "completed": true,
  "partial": false,
  "api_calls": 3,
  "toolsets_used": ["terminal", "file"],
  "tool_stats": {
    "terminal": {"count": 2, "success": 2, "failure": 0},
    "read_file": {"count": 1, "success": 1, "failure": 0}
  },
  "tool_error_counts": {
    "terminal": 0,
    "read_file": 0
  }
}

conversations 字段使用类似 ShareGPT 的格式,包含 fromvalue 字段。工具统计被标准化为包含所有可能工具的零默认值,确保跨条目的一致 Schema 以兼容 HuggingFace 数据集。

检查点

批量运行器具有强大的检查点容错机制:

  • 检查点文件: 每个批次完成后保存,追踪哪些 Prompt 索引已完成
  • 基于内容的恢复: 使用 --resume 时,运行器扫描现有批次文件并通过实际文本内容匹配已完成的 Prompt(不仅仅是索引),即使数据集顺序发生变化也能恢复
  • 失败的 Prompt: 只有成功完成的 Prompt 被标记为已完成——失败的 Prompt 会在恢复时重试
  • 批次合并: 完成后,所有批次文件(包括之前运行的)被合并为单个 trajectories.jsonl

恢复工作原理

  1. 扫描所有 batch_*.jsonl 文件中已完成的 Prompt(通过内容匹配)
  2. 过滤数据集排除已完成的 Prompt
  3. 重新批次化剩余 Prompt
  4. 仅处理剩余 Prompt
  5. 将所有批次文件(旧 + 新)合并为最终输出

质量过滤

批量运行器应用自动质量过滤:

  • 无推理过滤: 零个助手轮次包含推理的样本(无 <REASONING_SCRATCHPAD> 或原生思考 Token)会被丢弃
  • 损坏条目过滤: 具有幻觉工具名称(不在有效工具列表中)的条目在最终合并时被过滤掉
  • 推理统计: 追踪整个运行中有/无推理的轮次百分比

统计信息

完成后,运行器打印综合统计信息:

  • 工具使用: 调用次数、每个工具的成功/失败率
  • 推理覆盖率: 包含推理的助手轮次百分比
  • 丢弃样本: 因缺少推理而被过滤的样本计数
  • 持续时间: 总处理时间

统计信息也保存到 statistics.json 用于程序化分析。

使用场景

训练数据生成

生成多样的工具使用轨迹用于微调:

python batch_runner.py \
    --dataset_file=data/coding_prompts.jsonl \
    --batch_size=20 \
    --run_name=coding_v1 \
    --model=anthropic/claude-sonnet-4.6 \
    --num_workers=8 \
    --distribution=default \
    --max_turns=15

模型评估

评估模型在标准化 Prompt 上的工具使用能力:

python batch_runner.py \
    --dataset_file=data/eval_suite.jsonl \
    --batch_size=10 \
    --run_name=eval_gpt4 \
    --model=openai/gpt-4o \
    --num_workers=4 \
    --max_turns=10

按 Prompt 的容器镜像

对于需要特定环境的基准测试,每个 Prompt 可以指定自己的容器镜像:

{"prompt": "安装 numpy 并计算 3x3 矩阵的特征值", "image": "python:3.11-slim"}
{"prompt": "编译这个 Rust 程序并运行", "image": "rust:1.75"}
{"prompt": "搭建一个 Node.js Express 服务器", "image": "node:20-alpine", "cwd": "/app"}

批量运行器在运行每个 Prompt 之前会验证 Docker 镜像是否可访问。

Continue Exploring

继续探索

这不是课程式的上一篇下一篇,而是从当前节点向外继续漫游。

核心功能

工具与工具集 (Tools & Toolsets)

Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform.

核心功能

记忆系统 (Memory System)

Hermes Agent has bounded, curated memory that persists across sessions. This lets it remember your preferences, your projects, your environment, and things it h

核心功能

技能系统 (Skill System)

技能是 Hermes 的可复用知识模块。每个技能都是一个 Markdown 文件,在激活时注入到 Agent 的上下文中——为其提供持久的工作流、领域知识和行为指南,而无需将这些内容塞入系统提示中。 技能是可热插拔的:你可以在会话中途安装、创建、编辑和切换技能。它们在 CLI、消息平台和 Gateway 后台任务中均可

核心功能

MCP 集成 (MCP Integration)

MCP 让 Hermes Agent 连接到外部工具服务器,使 Agent 能够使用 Hermes 本身之外的工具——GitHub、数据库、文件系统、浏览器栈、内部 API 等。 如果你曾想让 Hermes 使用一个已经存在于其他地方的工具,MCP 通常是最简洁的方式。 - 无需先编写原生 Hermes 工具即可访问外

核心功能

ACP 编辑器集成 (ACP Editor Integration)

Hermes Agent 可以作为 ACP 服务器运行,让 ACP 兼容的编辑器通过 stdio 与 Hermes 通信,并渲染: - 聊天消息 - 工具活动 - 文件差异 - 终端命令 - 审批提示 - 流式思考 / 响应片段 当你希望 Hermes 像编辑器原生的编程 Agent 一样工作,而不是独立的 CLI 或

核心功能

API 服务器 (API Server)

The API server exposes hermes-agent as an OpenAI-compatible HTTP endpoint. Any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, NextCha

Core Features

核心功能

Hermes 的能力核心:工具、记忆、技能、委派、自动化、语音、插件与浏览器控制。

31 篇文档30 个节点

当前节点

Batch Processing(批量处理)

同主题继续探索

工具与工具集 (Tools & Toolsets)

Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform.

记忆系统 (Memory System)

Hermes Agent has bounded, curated memory that persists across sessions. This lets it remember your preferences, your projects, your environment, and things it h

技能系统 (Skill System)

技能是 Hermes 的可复用知识模块。每个技能都是一个 Markdown 文件,在激活时注入到 Agent 的上下文中——为其提供持久的工作流、领域知识和行为指南,而无需将这些内容塞入系统提示中。 技能是可热插拔的:你可以在会话中途安装、创建、编辑和切换技能。它们在 CLI、消息平台和 Gateway 后台任务中均可

MCP 集成 (MCP Integration)

MCP 让 Hermes Agent 连接到外部工具服务器,使 Agent 能够使用 Hermes 本身之外的工具——GitHub、数据库、文件系统、浏览器栈、内部 API 等。 如果你曾想让 Hermes 使用一个已经存在于其他地方的工具,MCP 通常是最简洁的方式。 - 无需先编写原生 Hermes 工具即可访问外

ACP 编辑器集成 (ACP Editor Integration)

Hermes Agent 可以作为 ACP 服务器运行,让 ACP 兼容的编辑器通过 stdio 与 Hermes 通信,并渲染: - 聊天消息 - 工具活动 - 文件差异 - 终端命令 - 审批提示 - 流式思考 / 响应片段 当你希望 Hermes 像编辑器原生的编程 Agent 一样工作,而不是独立的 CLI 或

API 服务器 (API Server)

The API server exposes hermes-agent as an OpenAI-compatible HTTP endpoint. Any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, NextCha

相关节点

工具与工具集 (Tools & Toolsets)

Tools are functions that extend the agent's capabilities. They're organized into logical toolsets that can be enabled or disabled per platform.

记忆系统 (Memory System)

Hermes Agent has bounded, curated memory that persists across sessions. This lets it remember your preferences, your projects, your environment, and things it h

技能系统 (Skill System)

技能是 Hermes 的可复用知识模块。每个技能都是一个 Markdown 文件,在激活时注入到 Agent 的上下文中——为其提供持久的工作流、领域知识和行为指南,而无需将这些内容塞入系统提示中。 技能是可热插拔的:你可以在会话中途安装、创建、编辑和切换技能。它们在 CLI、消息平台和 Gateway 后台任务中均可

MCP 集成 (MCP Integration)

MCP 让 Hermes Agent 连接到外部工具服务器,使 Agent 能够使用 Hermes 本身之外的工具——GitHub、数据库、文件系统、浏览器栈、内部 API 等。 如果你曾想让 Hermes 使用一个已经存在于其他地方的工具,MCP 通常是最简洁的方式。 - 无需先编写原生 Hermes 工具即可访问外

ACP 编辑器集成 (ACP Editor Integration)

Hermes Agent 可以作为 ACP 服务器运行,让 ACP 兼容的编辑器通过 stdio 与 Hermes 通信,并渲染: - 聊天消息 - 工具活动 - 文件差异 - 终端命令 - 审批提示 - 流式思考 / 响应片段 当你希望 Hermes 像编辑器原生的编程 Agent 一样工作,而不是独立的 CLI 或

API 服务器 (API Server)

The API server exposes hermes-agent as an OpenAI-compatible HTTP endpoint. Any frontend that speaks the OpenAI format — Open WebUI, LobeChat, LibreChat, NextCha