跳转至

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      # 交互注册中心

类继承关系

BaseInteraction
├── Gsm8kInteraction     (数学题自我反思)
└── WeatherInteraction   (工具使用训练)

交互的完整流程

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()  释放资源

建议阅读顺序

  1. base.py - 理解交互系统的接口和生命周期
  2. gsm8k_interaction.py - 多轮自我反思的示例
  3. weather_interaction.py - 工具使用训练的示例
  4. utils/interaction_registry.py - 交互的配置和注册
  5. __init__.py / utils/__init__.py - 包初始化

核心概念

交互生命周期

start_interaction() → generate_response() (多次) → calculate_score() → finalize_interaction()

终止控制

交互环境通过 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