写点什么

深入解析 Agent RFT:通过强化学习微调提升智能体性能

作者:莫尔索
  • 2025-11-24
    四川
  • 本文字数:6377 字

    阅读完需:约 21 分钟

深入解析 Agent RFT:通过强化学习微调提升智能体性能

本期内容深入介绍了 Agent RFT (Agent Reinforcement Finetuning,智能体强化学习微调),传统的提示工程和任务优化有其局限性,而 Agent RFT 通过在训练过程中允许智能体调用外部工具并从中学习,从根本上改变了模型的权重。该技术依赖于一个自定义的奖励信号(Grader),引导智能体探索实现任务的最佳路径。Agent RFT 能够显著提升智能体在特定领域任务上的性能、提高工具使用效率,并大幅降低延迟,这在 FinQA 基准测试以及 Cognition 等客户的成功案例中得到了验证。


欢迎订阅合集 AI 冷思考:个人在 AI 狂欢下的冷思考,聚焦 AI 工程化、Agent Infra 产品、效率型 AI 工具和人机协作话题,寻找可持续的产业价值。


目录


注:原视频有详细的案例讲解,本文仅作为文字版笔记,不能体现全部细节,推荐网络允许的朋友直接看视频 Build Hour: Agent RFT


  • 什么是智能体 (Agent) 及其优化路径

  • 深入理解 Agent RFT 及其核心优势

  • Agent RFT 的技术工作原理

  • 现场演示:使用 Agent RFT 优化 FinQA 任务

  • 用户案例:Cognition 如何使用 RFT 优化 Devin

  • 成功实施 Agent RFT 的关键建议

  • 个人思考


什么是智能体 (Agent) 及其优化路径


智能体 (Agent) 与常规模型的根本区别在于它能够与外部世界互动以完成任务,它不需要总是通过人类转达,而是可以自主地完成工作。为了实现这一点,智能体必须能够访问工具。例如,一个编码智能体需要访问终端、代码解释器或整个代码库;一个客户服务智能体可能需要访问内部软件来查询客户记录,访问计费系统来处理退款,甚至需要能够将问题升级给人类。智能体需要一种方式,通过使用工具来与其业务背景和外部世界进行交互。


OpenAI 对智能体的理解是,它们与外部世界的所有互动都会反馈回上下文窗口中。这意味着,智能体在查看了它发送给工具的内容以及从工具那里收到的输出后,会进行自我推理,然后决定调用另一个工具,并重复这个过程。OpenAI 自己的第一方智能体,如 Codeex 或 Deep Research,也依赖于工具(如浏览器、代码运行器或 Git 补丁工具)来完成端到端的任务。



当客户使用 OpenAI 模型并希望优化其智能体时,提示工程 (Prompt Engineering) 是一个很好的起点。通过优化提示,可以引导模型的行为,就像指示模型更好地完成任务一样。



但如果优化提示后仍不满意,还可以采用其他方法。首先是优化任务本身,例如简化任务,或在任务周围添加更好的护栏 (guardrails),以提高智能体正确完成任务的几率。其次是优化工具,可以增加或减少工具,或者让工具更擅长完成智能体想要做的事情。一个有趣的发现是,客户有时仅仅通过更改工具的描述甚至命名,就能成功提高智能体的性能,因为这使得工具在语义上更容易被模型理解。


深入理解 Agent RFT 及其核心优势


当尝试了提示工程、任务优化和工具优化等所有方法后,如果还希望获得更好的性能,微调 (Fine-tuning) 就派上用场了。微调是一种端到端地在任务上训练智能体以实现更高性能的方法。Agent RFT (Agent Reinforcement Finetuning,智能体强化学习微调) 正是为此设计的解决方案。


Agent RFT 会根据用户指定的学习信号来改变模型的权重,教会模型什么是良好行为,什么是不良行为。在训练过程中,智能体将探索多种调用工具的方式,学习如何随着训练的推进做得越来越好。


基础 RFT 已经是当前微调产品中的一个功能,但它不能用于微调智能体,因为它不允许在训练中调用工具。而 Agent RFT 则允许智能体在探索过程中调用工具,使其能够从所有可能使用工具的方式中学习。用户还可以通过一个端点 (endpoint) 指定任意的奖励信号,模型会根据这个信号进行训练,以便在用户关心的方面变得更好。


Agent RFT 的好处总结起来包括:提高推理模型的性能,提升智能体使用工具并达到最佳最终答案的能力。它还具有很高的样本效率 (sample efficient),这在训练数据稀缺的领域尤为重要。这个过程最终能产出一个延迟更低、在智能体任务上表现更好的模型。



延迟是一个关键点。让智能体适应特定业务环境的挑战之一是,这些环境可能与 OpenAI 训练模型的方式大不相同。如果用户的工具在外观和行为上与 OpenAI 训练过的 Codex 或 Deep Research 工具相似,那很幸运。但大多数业务情境都是特定的,智能体可能不习惯以理想的方式使用用户的工具,比如调用工具次数过多(往往调用五次,实际上一次就足够)。


使用 Agent RFT 可以对齐这些领域。可以训练模型使用更少的工具调用来达到相同甚至更好的性能,这意味着更低的延迟和更快的终端用户体验。这个过程会自然发生,因为系统会对模型用于推理的 Token 数量施加轻微的惩罚。此外,用户还可以施加更强的约束。如果不想依赖模型的自然学习,而是想确保模型保持在给定的工具调用预算内,Agent RFT 允许指定这个截止值 (cutoff)。这会训练模型在保持或超越原有性能的同时,严格遵守这个预算,鉴于工具调用对延迟的重大影响,这能显著降低延迟。


当然,Agent RFT 最终的目标是提高模型性能。它通过两种方式实现这一点:一是训练模型更好地跨工具输出进行推理;二是训练模型从一开始就更好地使用工具。这一切都是在探索和 rollout 过程(注:在 ML /强化学习中,“rollout”指一种策略评价方式:从当前状态出发,按照某策略模拟一系列动作 /路径,看未来可能结果的过程)中有机地学习到的,模型会尝试在搜索空间中调用工具的多种不同方式,并思考工具的输出,以期找到更好的答案,实现性能的爬升 (hill climbs)。


Agent RFT 的技术工作原理


为了实现 Agent RFT,OpenAI 对现有的 RFT 产品进行了几项重大的新更新。首先,模型能够在训练期间通过调用用户的端点来调用工具。其次,用户能够以端点的形式指定一个评分器 (Grader),系统可以调用该端点来获取自定义的奖励信号。



这两项新增功能标志着 OpenAI 首次允许其模型(甚至包括前沿模型)在训练过程中与外部世界进行交互——既通过用户的工具(当模型探索时),也通过用户的奖励信号(当准备更新模型时)。


深入探究训练过程中的具体细节:对于每一次智能体 rollout,系统会为该部署产生的所有工具调用和最终答案分配一个唯一的标识符。当智能体调用用户的工具时,系统会附上这个唯一 ID,以便用户的系统能够识别出源自同一次部署的不同工具调用。


这允许用户在自己的数据库或后端跟踪部署的发生,这对于状态管理可能很重要。这样,当模型输出最终答案并调用用户的评分器时,用户就可以通过那个唯一标识符,将智能体在该次部署中的所有上下文(例如所有工具调用)附加到最终答案上。然后,用户可以将所有这些信息传递给评分器,从而实现一个非常全面的评分环境。



这种方法最强大的地方在于,所有的工具调用和评分都发生在用户自己的环境中,可以完全匹配用户的生产环境。这样,模型在生产中遇到特定工具时就不会感到惊讶,并且知道如何调用它。这也为评分提供了极大的灵活性。因为用户接收到了每一次工具调用,可以存储它们,并对它们进行评分,从而真正塑造用户希望模型具备的策略。


现场演示:使用 Agent RFT 优化 FinQA 任务


为了说明 Agent RFT 的工作原理,演示使用了一个真实世界的例子:FinQA (Financial QA),这是一个金融问答基准测试。在这个任务中,模型会收到一份财务报告,并被要求回答有关该报告的、需要数值推理的问题。


原始的基准测试包含了模型回答问题所需的相关财务报告。但为了增加难度,演示修改了这个基准:只给模型问题本身,不提供任何上下文(即没有报告)。模型被要求像智能体一样使用工具,在 2,800 份财务报告中搜索正确的报告来回答问题。为了使任务更具挑战性,模型被要求在 10 次工具调用内得出答案。


演示中为智能体提供了三种工具:一个是 search 工具,这是一个语义搜索工具;一个是 list 工具,用于遍历所有目录和文档路径;还有一个是 cat 工具,它根据路径返回一个文档,类似于在电脑上打开一个文件。例如,当模型看到一个关于英特尔回报率的问题时,它可能会调用 search 工具,该工具会返回包含所需数字的表格和文本。


接下来是评分器的设置,它用于为智能体的最终答案生成奖励信号。虽然可以使用端点评分器(即调用用户的自定义端点),或字符串评分器(要求与标准答案完全一致),但演示选择了模型评分器 。字符串评分器的问题在于它不灵活。它可能会因为微小的格式错误(例如写的是 32 美元 而不是 $32)而惩罚智能体,即使答案在数值上是正确的,向智能体提供正确的信号,使其能够学习什么是正确的推理路径至关重要。


基线分析与训练过程解读


在运行 RFT 之前,必须先评估基线性能,即 GPT-5 在这项任务上的原始表现。一个关键的分析是观察模型的方差。演示中,对验证集中的 100 个样本,每个样本都运行了 3 次评估。


在生成的方差图中,X 轴代表每个样本,Y 轴代表得分。红叉是 3 次运行中的最高分,粗蓝条是平均分,细蓝条则显示了方差。分析这个图表可以发现,许多样本完全没有方差(即 3 次都得 0 分,或 3 次都得 1 分),这对强化学习微调来说并不理想。


真正提供学习信号的是那些具有方差的样本(大约 15%),它们有时得 0 分,有时得 1 分。正是这种方差,使得模型能够学习到“好的推理路径”和“坏的推理路径”之间的区别。如果探索次数不足(例如这里只运行了 3 次),很多样本可能看起来是 0 方差。通过提高计算乘数(compute multiplier,一个控制模型探索量的参数),模型会有更多机会在那些总是得 0 分的样本上“绊倒”,从而获得学习信号。


需要注意的是,提高计算乘数意味着在训练期间会对用户的工具端点进行更多次的调用,因此需要确保端点的稳健性。


在训练开始时,模型平均使用 8 到 9 个工具调用。但在 10 步之后,工具调用次数急剧下降。这表明,性能的提升与工具调用的大幅减少是同步发生的。模型迅速学会了如何更有效地使用这些工具,弥合了(OpenAI 预训练模型和用户特定工具之间的)分布差异。


用户案例:Cognition 如何使用 RFT 优化 Devin


Cognition 使用 Agent RFT 的任务是优化 Devin 的规划模式(Planning Mode)。当用户向 Devin 提交初始查询时,它首先会进入规划模式以确定如何解决任务。从用户体验 (UX) 的角度来看,他们不希望智能体在规划上花费太多时间,而是希望 Devon 尽快开始工作并向用户展示代码编辑。


他们的目标是微调 GPT-5,使其能更快地进入代码编辑阶段,同时保持甚至提高准确性。在任务设计上,他们限制了智能体在规划阶段可用的工具,只允许使用 read file(读文件)和 shell(用于执行 grep 搜索字符串或 find 查找文件等命令),此阶段不允许进行编辑。



他们的数据集来自真实世界的代码仓库和相应的用户查询。他们人工标注了“用户为解决该任务最终实际编辑了哪些文件”。子智能体的目标就是返回这些确切的文件,以便后续的智能体可以继续对这些文件进行编辑。为了平衡精确率 (Precision) 和召回率 (Recall),他们使用了 F1 分数作为奖励指标。他们不希望模型过于保守(只返回几个文件),也不希望模型返回太多无关文件(污染后续智能体的上下文)。


结果显示,即使是较小的数据集(100 个样本),RFT 后的模型也已经大大超过了 GPT-5 基线。使用更大的数据集(1000 个样本)则带来了进一步的提升。他们确保了训练集和评估集中的代码仓库是完全分开的,以保证模型能够泛化到从未见过的私有代码仓库。



在训练过程中,他们观察到模型学会了如何执行大量的并行工具调用。在轨迹的第一个动作中,模型可能会一次性启动 8 个不同的任务(例如列出仓库、搜索特定内容等)。然后,一旦从这些工具调用中获得结果,它会再次通过并行调用来独立探索所有这些路径。这种行为极大地减少了模型与环境之间的“来回” (back-and-forths) 次数。基线模型可能需要 8 到 10 次交互才能完成规划,而微调后的模型只需 4 次交互,几乎将规划时间缩短了一半。


在基础设施方面,Cognition 将工具调用和评分器都作为远程端点运行。在训练的每一步,OpenAI 平台会向他们发送大量部署请求。关键在于,Cognition 为每一次部署 (each rollout) 都启动了一个全新的虚拟机。他们选择使用 VM 是为了实现隔离。因为智能体可以使用 shell 工具,他们不希望一个部署中的破坏性操作(比如模型发疯运行了 rm -rf)影响到其他部署。



他们也遇到了一些挑战。首先,RL 训练的流量是突发性的,在每次部署开始时,平台可能会同时发送 500 个新的部署请求,意味着需要同时启动 500 个新 VM。其次是基础设施错误,如果 VM 失败,工具调用就会失败,模型会得到 0 奖励。虽然这不是模型的错,但这会导致训练崩溃,因为它惩罚了一个本可能良好的轨迹。因此,必须进行大量监控,以区分是工具调用失败还是模型自身的格式问题。


更多用户案例


Ambience (医疗保健)


这是一个在与患者会面后用于计费的工作,需要将医患对话的转录内容映射到 70,000 个精确的诊断代码中。这项任务需要细致的理解、医学推理和速度。他们使用 RFT 对一个配备了搜索工具的 GPT-5 模型进行微调。


GenSpark (幻灯片制作)


GenSpark 拥有一个构建幻灯片的智能体。但有时智能体生成的幻灯片在美学上不尽人意,例如文字过多。他们使用 RFT 来微调一个协调模型。他们构建了一个复杂的模型评分器,用于同时判断幻灯片的内容和视觉方面。


Macro (GPU 内核编写)


Macro 正在构建一个 GPU 内核编写智能体。这是一个极具挑战性的领域,因为训练数据稀缺,尤其是对于新硬件。通过使用 Agent RFT 和一个高质量的评分器,仅凭 100 个 PyTorch 提示(不需要任何完整的代码示例),GPT-5 就学会了为新硬件平台编写高性能内核。


成功实施 Agent RFT 的关键建议


OpenAI 团队根据经验提供了一些关于如何成功使用 Agent RFT 的建议,分为数据任务和基础设施两方面。


在数据任务方面:


  1. 明确定义的任务:你需要一个定义明确且受约束的任务。这意味着领域专家需要对“什么是好答案”达成共识。必须向模型提供一致的信号,避免在一个例子中说答案 A 是好的,在另一个例子中又说 A 不好,这会使模型感到困惑。

  2. 非零的基线性能:如果它在 100 次尝试中 100 次都是错的,那么它可能永远学不会。

  3. 关注最佳准确率:与其看平均性能,不如看每个样本多次运行中最佳的轨迹 (best trajectory)。RFT 的作用就是引导所有其他轨迹向这个最佳轨迹靠拢,并泛化到其他样本。

  4. 质量胜于数量:演示中使用了 1000 个训练样本,但许多成功的案例仅用了 150 个样本。关键在于数据的好坏,而不是数据的多少。


在基础设施方面:


  1. 镜像生产环境的行为:利用这个机会托管你的工具,使其与生产环境非常相似,这样训练中的改进才能真正转化到产品中。

  2. 投入设计评分器:评分器决定了模型的策略,它必须与你的领域知识保持一致,并且难以被 hack。

  3. 偏好梯度奖励:如果只是二元(是/否)的评分,模型很难学习。你需要给予部分学分,让模型知道它走在正确的方向上,例如,即使最终推理错误,但只要它读取了正确的文件,就给予一点奖励。

  4. 限制工具输出:过长的输出会拖慢训练速度,也会让模型困惑。只输出必要的信息对效率至关重要。


个人思考


何时应该使用 Agent RFT


  1. 首先,构建一个高质量的数据集,确保训练集和评估集与你的生产流量紧密匹配,避免智能体在生产中遇到意外。

  2. 其次,明确你的基线性能,例如使用 GPT-5 运行评估,了解改进的起点。

  3. 第三,在转向微调之前,先尝试所有非微调的优化手段,例如改进提示、优化基础设施、或改进任务工具。

  4. 最后,当你从基础模型和任务中榨干了所有可能的性能后,再转向 Agent RFT。Agent RFT 将通过端到端的方式从根本上改变模型的权重,使其在你的任务和领域上变得更强。


优化应遵循成本效益递增的路径,从低成本的提示工程开始,到中成本的任务与工具设计(如优化工具描述),最后才是高成本的微调。RFT 用于突破性能天花板,而不是解决初始设置问题。


Agent RFT 的核心价值在于,将模型在预训练中形成的世界观与用户特定的业务世界(自定义工具、私有数据)对齐。演示中工具调用次数的急剧下降,正是 RFT 成功教会模型在新环境中如何高效行动的证明。

发布于: 刚刚阅读数: 3
用户头像

莫尔索

关注

还未添加个人签名 2024-05-08 加入

产品工程师 & 野生技术顾问 ,著有《LangChain 编程实战》《从零构建企业级 RAG 系统》,公众号:莫尔索随笔

评论

发布
暂无评论
深入解析 Agent RFT:通过强化学习微调提升智能体性能_强化学习_莫尔索_InfoQ写作社区