verl/interactions 模块总览¶
模块概述¶
verl/interactions 模块是 verl 框架的交互系统,允许 LLM 在强化学习训练中与外部环境进行多轮对话。与工具系统(Tools)不同,交互系统模拟的是一个"对话伙伴"或"评判者"——它根据 LLM 的回答给出反馈,引导 LLM 进行自我反思和改进。
Tools vs Interactions¶
┌─────────────────────────────────────────────────────────┐
│ Tools(工具) │
│ LLM 主动调用 → 工具执行操作 → 返回结果 │
│ 例:LLM 调用搜索工具查资料 │
│ 控制权在 LLM │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Interactions(交互) │
│ LLM 回答 → 环境评判 → 给出反馈 → LLM 再次回答 │
│ 例:LLM 回答数学题,环境告诉它对不对,不对就重试 │
│ 控制权在环境 │
└─────────────────────────────────────────────────────────┘
模块架构¶
verl/interactions/
├── __init__.py # 包初始化(空)
├── base.py # 交互抽象基类
├── gsm8k_interaction.py # GSM8K 数学题交互
├── weather_interaction.py # 天气查询交互
└── utils/
├── __init__.py # 子包初始化(空)
└── interaction_registry.py # 交互注册中心
类继承关系¶
交互的完整流程¶
1. start_interaction()
│
v
2. LLM 生成第一轮回答
│
v
3. generate_response() ← 环境评判
│
├── 正确 → should_terminate = True → 结束
│
└── 错误 → should_terminate = False
│
v
4. LLM 根据反馈重新思考和回答
│
v
5. 回到步骤 3(循环直到正确或达到最大轮次)
│
v
6. finalize_interaction() 释放资源
建议阅读顺序¶
base.py- 理解交互系统的接口和生命周期gsm8k_interaction.py- 多轮自我反思的示例weather_interaction.py- 工具使用训练的示例utils/interaction_registry.py- 交互的配置和注册__init__.py/utils/__init__.py- 包初始化
核心概念¶
交互生命周期¶
终止控制¶
交互环境通过 should_terminate_sequence 返回值来控制对话何时结束:
- True:对话结束(LLM 答对了,或者一轮即可的任务)
- False:对话继续(LLM 需要重新思考)
文档列表¶
| 文件 | 讲解文档 |
|---|---|
__init__.py |
init.md |
base.py |
base.md |
gsm8k_interaction.py |
gsm8k_interaction.md |
weather_interaction.py |
weather_interaction.md |
utils/__init__.py |
utils/init.md |
utils/interaction_registry.py |
utils/interaction_registry.md |