InternLM/InternBootcamp
Official implement on InternBootCamp
InternAgentHarness (InternBootcamp) – 是什么
InternAgentHarness(也称为 InternBootcamp)是一个面向研究的框架,用于构建、训练和评估大语言模型(LLM)代理。它提供了一个合成的、可编程的环境,让 LLM 能够与外部工具交互,接收状态反馈,并因其行为获得奖励。目标不仅仅是获得高基准分数,而是创建一个闭环流水线,实现以下功能:
- 生成可执行任务(例如,电池设计、机器人轨迹规划、金融预测、扑克决策)。
- 暴露经过验证的工具,供模型反复调用(多轮工具调用)。
- 管理模型与环境之间的多轮对话。
- 从中间步骤和最终结果计算奖励,支持强化学习或监督微调。
- 记录完整的交互轨迹,用于可复现性、数据生成和进一步训练。
核心概念
| 组件 | 作用 |
|---|---|
| InstructionGenerator | 生成任务提示和定义问题的底层“身份”数据(例如,需要求解的算术表达式)。 |
| ToolManager | 注册并运行外部工具(函数、模拟器、API),供 LLM 调用。 |
| InteractionManager | 处理模型与环境之间的来回交互,支持多轮工具调用和可选的人类风格反馈。 |
| RewardCalculator | 根据真实值或规则标准对每一步和最终答案进行评分,生成用于训练的标量奖励。 |
| Evaluator | 批量运行多个实验周期,收集轨迹,并输出研究实验所需的指标。 |
工作原理(高层流程)
- 提示设计 – InstructionGenerator 构建描述任务的自然语言提示。
- 模型推演 – LLM 接收提示并决定是否调用工具。
- 工具调用 – ToolManager 执行请求的工具(例如,物理模拟器、计算器、数据库查询),并返回结果。
- 环境反馈 – InteractionManager 可能根据工具输出添加后续问题或提示。
- 奖励计算 – 每一步和最终结果后,RewardCalculator 将模型的答案与真实值对比,发出奖励信号。
- 循环 – 重复步骤 2–5,直到满足终止条件(最大轮次、完美分数等)。
- 日志记录 – 每一轮(模型消息、工具请求、工具响应、奖励)均保存为 JSONL 文件,供后续分析或微调使用。
可以用它做什么
- 通过实现
BaseInstructionGenerator的一个小型子类,并可选地实现BaseTool和BaseInteraction,创建新的合成任务。 - 收集训练数据:以“推演”模式运行框架,生成数千条多轮交互日志,可用于监督微调或 RLHF。
- 基准测试工具使用能力:评估模型在不同领域(工程、金融、游戏、机器人)中规划、调用工具和自我修正的能力。
- 运行分布式工具服务器:内置的主-工作节点工具服务器可让你在多台机器上扩展重型工具。
快速上手(来自 README)
- 使用
pip install -e .和提供的requirements-editable.txt安装仓库及其子模块(verl,openevolve)。 - 通过编写
InstructionGenerator子类,并使用 YAML 配置文件设置生成比例、随机种子和数据划分,来定义任务。 - (可选)通过继承
BaseTool并提供 JSON Schema(将作为函数定义发送给 LLM),添加工具(例如计算器)。 - 使用
internbootcamp.utils.data_generationCLI 运行数据生成,输出包含完整实验轨迹的 JSONL(和可选 Parquet)文件。 - 使用
internbootcamp.utils.run_evaluation评估模型,指向你的数据集、API 密钥以及工具/交互配置。
适合谁
需要一个灵活沙盒进行 LLM 代理实验的研究人员和开发者,特别是那些专注于工具增强推理、基于人类反馈的强化学习或多步规划在模拟环境中的应用者。
以上所有细节均直接来自项目的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目