Agent Reinforcement Fine-Tuning (Agent RFT)

Nikola Balic (@nibzard)· emerging

问题

在优化prompt与任务设计后,Agent在特定业务任务上仍可能表现不佳,原因如下:

  • 领域偏移(Domain shift):你的工具与业务context和基础模型的训练场景存在差异
  • 工具使用低效(Inefficient tool use):Agent发起过多工具调用或调用错误工具,导致高延迟
  • 推理效果欠佳(Suboptimal reasoning):模型无法针对你的特定工具输出开展有效推理
  • 样本稀缺(Sample scarcity):部分领域(如新型GPU硬件、专业金融领域)缺乏训练数据

传统微调(fine-tuning)方法效果不佳,因为这类方法无法针对Agent与业务环境间的多步骤工具交互进行端到端训练。

方案

Agent强化微调(Agent RFT) 针对智能体任务对模型权重进行端到端训练,赋予模型以下核心能力:

  1. 通过实际工具调用探索:在训练轨迹生成过程中,智能体调用你的真实工具端点,从实际响应中学习
  2. 接收自定义奖励信号:你可通过灵活的评分器(基于模型、端点或字符串)定义「优质表现」的标准
  3. 掌握多步推理能力:智能体学会在上下文(context)窗口中结合工具输出开展连贯推理
  4. 适配业务指标优化:基于自定义奖励函数,可实现减少工具调用次数、提升回答准确率,或是在两者间取得平衡的目标

核心组件

  • 工具端点:托管与生产环境完全一致的工具,供模型在训练阶段直接调用
  • 评分器端点:定义自定义奖励逻辑,用于评估智能体的最终答案和/或完整工具调用轨迹
  • 唯一轨迹ID(Rollout IDs):为每条训练轨迹分配唯一标识,实现跨工具调用的状态统一管理
  • 计算乘数(Compute Multiplier):控制探索广度(数值越高,单样本对应的训练轨迹生成数量越多)
# Agent RFT 训练设置
from openai import OpenAI

client = OpenAI()

# 1. 定义带有托管端点的工具集合
tools = [
    {
        "name": "search",
        "url": "https://your-tools.modal.run/search",
        "headers": {"Authorization": "Bearer YOUR_TOKEN"}
    },
    {
        "name": "read_file",
        "url": "https://your-tools.modal.run/read_file",
        "headers": {"Authorization": "Bearer YOUR_TOKEN"}
    }
]

# 2. 定义评分器(支持基于模型或自定义端点)
grader = {
    "type": "model",  # 若使用自定义评分逻辑,可替换为 "endpoint"
    "model": "gpt-4o",
    "response_format": {
        "type": "json_schema",
        "json_schema": {
            "name": "grader_response",
            "schema": {
                "type": "object",
                "properties": {
                    "score": {"type": "number"},  # 评分范围 0.0 至 1.0
                    "reasoning": {"type": "string"}
                }
            }
        }
    },
    "prompt": """
    基于以下维度评估智能体的回答:
    1. 与真实答案的一致性
    2. 推理过程的完整性

    真实答案:{ground_truth}
    智能体回答:{final_answer}

    请给出0-1之间的分数,并说明评分依据。
    """
}

# 3. 启动微调任务
job = client.fine_tuning.jobs.create(
    training_file="file-abc123",
    model="gpt-4o-2024-08-06",
    method="rft",
    rft={
        "tools": tools,
        "grader": grader,
        "hyperparameters": {
            "n_epochs": 3,
            "batch_size": 16,
            "compute_multiplier": 1  # 探索系数
        }
    }
)

如何使用

前置条件:

  • 任务定义明确、范围受限,且正确答案已达成共识
  • 具备非零基准性能(模型有时能输出正确结果)
  • 高质量训练数据(100-1000条样本,重质不重量)
  • 托管工具端点,其行为与生产环境完全一致

训练流程:

  1. 基准评估:针对每个样本多次运行基础模型,测量结果方差
  2. 托管工具:部署可处理突发流量的工具端点(如FastAPI、Modal等)
  3. 设计评分器:构建难以被钻空子、可提供梯度(而非仅二元结果)的奖励函数
  4. 监控训练:跟踪奖励曲线、工具调用分布及推理令牌(Token)数量
  5. 评估结果:在验证集上对比微调后模型的准确率与延迟

Agent RFT的优化方向:

  • 机器学习性能:通过优化推理过程与工具使用,提升最终答案质量
  • 延迟:减少工具调用次数与推理令牌(通常可降低50%)
  • 样本效率:仅需100条高质量样本即可取得出色结果
graph TD
    A[训练样本] --> B[模型生成推演轨迹]
    B --> C{是否调用工具?}
    C -->|是| D[调用工具端点]
    D --> E[工具响应]
    E --> F[加入上下文]
    F --> B
    C -->|否| G[最终答案]
    G --> H[调用评分器]
    H --> I[奖励信号]
    I --> J[更新模型权重]
    J --> K[下一个样本]

    style D fill:#fff3e0,stroke:#f57c00,stroke-width:2px
    style H fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
    style J fill:#e8f5e9,stroke:#388e3c,stroke-width:2px

权衡

优点

  • 端到端优化:训练完整的Agent循环,而非仅优化最终输出
  • 样本效率高:仅需100-1000个样本即可运行,而预训练则需要数百万样本
  • 奖励机制灵活:支持复杂的多维度评分逻辑
  • 自然提速:模型会自发学习使用更少的tokens和工具调用
  • 领域适配:缩小基础模型与业务context之间的分布差异

缺点

  • 基础设施复杂度高:必须部署可靠的工具和评分器端点
  • 流量突发:在训练步骤的分界点,训练过程会发送数百个并发请求
  • 评分器设计成本高:需要精心设计奖励机制,避免模型投机取巧
  • 训练成本高:由于涉及探索过程,其成本高于监督微调
  • 调试难度大:难以追踪模型习得特定行为的原因

参考文献

关键词

涵盖OpenAI智能体技术分享(Agent RFT)、大语言模型微调指南、Cognition Devon案例研究,以及RLAIF、奖励塑形工具使用激励等AI领域相关技术模式。

  • 相关技术模式:RLAIF、基于奖励塑形的工具使用激励、推理修复型代码评审奖励

来源摘要

正在获取来源并生成中文摘要…

来源: https://youtu.be/1s_7RMG4O4U

← 返回社区