InternLM/InternBootcamp

Official implement on InternBootCamp

InternAgentHarness (InternBootcamp) – 是什么

InternAgentHarness(也称为 InternBootcamp)是一个面向研究的框架,用于构建、训练和评估大语言模型(LLM)代理。它提供了一个合成的、可编程的环境,让 LLM 能够与外部工具交互,接收状态反馈,并因其行为获得奖励。目标不仅仅是获得高基准分数,而是创建一个闭环流水线,实现以下功能:

  1. 生成可执行任务(例如,电池设计、机器人轨迹规划、金融预测、扑克决策)。
  2. 暴露经过验证的工具,供模型反复调用(多轮工具调用)。
  3. 管理模型与环境之间的多轮对话。
  4. 从中间步骤和最终结果计算奖励,支持强化学习或监督微调。
  5. 记录完整的交互轨迹,用于可复现性、数据生成和进一步训练。

核心概念

组件 作用
InstructionGenerator 生成任务提示和定义问题的底层“身份”数据(例如,需要求解的算术表达式)。
ToolManager 注册并运行外部工具(函数、模拟器、API),供 LLM 调用。
InteractionManager 处理模型与环境之间的来回交互,支持多轮工具调用和可选的人类风格反馈。
RewardCalculator 根据真实值或规则标准对每一步和最终答案进行评分,生成用于训练的标量奖励。
Evaluator 批量运行多个实验周期,收集轨迹,并输出研究实验所需的指标。

工作原理(高层流程)

  1. 提示设计 – InstructionGenerator 构建描述任务的自然语言提示。
  2. 模型推演 – LLM 接收提示并决定是否调用工具。
  3. 工具调用 – ToolManager 执行请求的工具(例如,物理模拟器、计算器、数据库查询),并返回结果。
  4. 环境反馈 – InteractionManager 可能根据工具输出添加后续问题或提示。
  5. 奖励计算 – 每一步和最终结果后,RewardCalculator 将模型的答案与真实值对比,发出奖励信号。
  6. 循环 – 重复步骤 2–5,直到满足终止条件(最大轮次、完美分数等)。
  7. 日志记录 – 每一轮(模型消息、工具请求、工具响应、奖励)均保存为 JSONL 文件,供后续分析或微调使用。

可以用它做什么

  • 通过实现 BaseInstructionGenerator 的一个小型子类,并可选地实现 BaseTool 和 BaseInteraction,创建新的合成任务。
  • 收集训练数据:以“推演”模式运行框架,生成数千条多轮交互日志,可用于监督微调或 RLHF。
  • 基准测试工具使用能力:评估模型在不同领域(工程、金融、游戏、机器人)中规划、调用工具和自我修正的能力。
  • 运行分布式工具服务器:内置的主-工作节点工具服务器可让你在多台机器上扩展重型工具。

快速上手(来自 README)

  1. 使用 pip install -e . 和提供的 requirements-editable.txt 安装仓库及其子模块(verl, openevolve)。
  2. 通过编写 InstructionGenerator 子类,并使用 YAML 配置文件设置生成比例、随机种子和数据划分,来定义任务。
  3. (可选)通过继承 BaseTool 并提供 JSON Schema(将作为函数定义发送给 LLM),添加工具(例如计算器)。
  4. 使用 internbootcamp.utils.data_generation CLI 运行数据生成,输出包含完整实验轨迹的 JSONL(和可选 Parquet)文件。
  5. 使用 internbootcamp.utils.run_evaluation 评估模型,指向你的数据集、API 密钥以及工具/交互配置。

适合谁

需要一个灵活沙盒进行 LLM 代理实验的研究人员和开发者,特别是那些专注于工具增强推理、基于人类反馈的强化学习或多步规划在模拟环境中的应用者。


以上所有细节均直接来自项目的 README;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目