FAPO:多步骤 LLM 流水线的全自动提示词优化 FAPO: Fully Autonomous Prompt Optimization of Multi-Step LLM Pipelines
FAPO用Claude优化LLM流水线,先提示词后结构,均提14.1pp
前置知识
多步骤 LLM 流水线
由多个 LLM 调用和代码步骤组成的复杂工作流,常用于检索增强生成(RAG)、多跳推理等场景。典型的流水线包括:检索节点使用 BM25 或向量检索获取上下文,推理节点进行链式思考(Chain-of-Thought),验证节点检查答案一致性,格式化节点将输出转换为结构化格式。这些步骤通过 LangGraph 等框架表示为状态图,每个步骤的输出成为下一步的输入。
论文的核心是优化这种流水线,因为单步提示词优化无法解决跨步骤的瓶颈,比如检索不足导致推理失败,或格式化错误破坏正确答案。
提示词优化
自动调整 LLM 提示词文本以提升任务性能的技术。常见方法包括:APE 使用 LLM 生成候选提示词并评估,OPRO 将历史优化轨迹嵌入提示词让 LLM 自我优化,EvoPrompt 和 PromptBreeder 使用进化算法维护提示词种群。这些方法在单轮对话或固定架构下效果良好,但在多步骤流水线中只能优化单个节点的提示词,无法调整节点间的交互。
FAPO 的提示词优先策略建立在已有工作基础上,但它能判断何时提示词优化已达到极限,需要改变流水线结构。
LangGraph
一个用于构建有状态多参与者应用程序的框架,特别适合表示 LLM 流水线。它将流水线建模为有向图,节点是处理步骤(如检索、推理),边定义状态转换和条件路由。每个节点接收图状态(包含输入、中间结果、配置),处理后返回更新后的状态。这种表示允许复杂的控制流(如循环、条件分支),也便于记录中间步骤的输入输出用于失败归因。
FAPO 使用 LangGraph 作为流水线表示,使优化器能够检查每个节点的中间输出,定位失败发生在哪个步骤。
失败归因
分析系统失败原因并定位到具体组件的技术。在 FAPO 中,归因过程包括:记录每个步骤的输入、输出和日志,使用规则和 LLM 分析分类失败类型(如检索不足、推理错误、格式失败、答案过于冗长),按失败原因聚类,确定主要瓶颈是可通过提示词修复还是需要结构改变。归因是决定是否从提示词优化升级到流水线结构优化的关键依据。
这是 FAPO 与 GEPA 等纯提示词优化器的核心区别,只有知道失败在哪里,才能选择正确的优化层次。
Tenant 模型
FAPO 引入的隔离组织单元,每个代表一个完整的任务环境。每个 tenant 有独立的工作空间,包含:任务描述和评分规则、当前提示词和链路代码、数据集转换脚本和缓存、评分器和测试、允许的变更范围、操作文档和优化历史。共享运行时引擎负责加载案例、渲染提示词、调用 LLM、运行 LangGraph 链路、验证输出和记录工件。
这种隔离确保不同任务的假设和约定不会互相干扰,特别适合企业环境,不同业务单元可以有独立的流水线、评分方法和部署方式,同时共享优化引擎。
研究动机
现有的提示词优化方法在多步骤 LLM 流水线上面临根本性局限。以 GEPA 为例,它使用进化搜索优化固定 DSPy 程序中的指令字符串,但只能搜索提示词文本,无法修改流水线结构。实际场景中,失败可能发生在任何步骤并传播到下游:检索节点返回不相关文档导致推理节点产生错误答案,推理步骤正确但格式化节点破坏了最终输出,或节点间的条件路由逻辑错误。论文显示,在 HoVer 多跳事实验证任务上,仅优化提示词无法解决检索覆盖不足的问题;在 IFBench 指令遵循任务上,提示词无法强制执行确定性约束。GEPA 在 18 个模型-基准比较中有 15 个输给 FAPO,平均差距达到 14.1 个百分点,特别是在需要结构优化的任务上差距扩大到 32.2-35.3 个百分点。
本文的目标是本文的目标是构建一个能够同时优化提示词和流水线结构的自动化框架。FAPO 首先尝试提示词编辑,因为这是最简单且低风险的变更;只有当失败归因表明提示词优化已不足以解决主要瓶颈时,才在 tenant 定义的允许范围内改变链路参数或结构。这种渐进式优化策略避免了过度复杂的优化空间,同时保持了必要时调整架构的能力。框架需要提供可复现的评估引擎、隔离的工作空间、完整的中间步骤记录和严格的数据隔离(训练集可见单个案例,验证/测试集仅暴露聚合分数)。
与已有工作不同的是,FAPO 的独特切入点在于将对抗性搜索中的评估-分析-提议-迭代循环转化为建设性优化。对抗性 jailbreaking 的目标是找到至少一个成功案例,而 FAPO 的目标是提升整个流水线在评估案例集上的平均表现。这种目标转变使得归因成为必要:优化器必须解释重复出现的失败模式,而不是利用一个罕见的成功样本。与评估套件(HELM、BIG-bench)只测量不优化、与 DSPy 等提示词编程系统只优化不检查步骤失败、与 Autoresearch 等研究代理只优化训练代码不同,FAPO 结合了流水线感知的步骤级归因、提示词优先的多层次优化、范围约束的防护栏和多租户隔离。
核心方法
FAPO 将 LLM 流水线视为可检查的工作流,记录每个步骤的输入、输出和日志,使优化器能够将失败定位到提示词、上游证据源或链路本身。系统围绕 tenant 组织,共享运行时引擎处理案例加载、提示词渲染、提供者适配、链路运行、评分器验证和工件写入,而每个 tenant 工作空间包含任务本地的材料。优化过程遵循四个设计原则:将共享测试器与任务分离、将决策基于记录的证据、偏好最小的有用变更、保持优化有界。核心是使用 Claude Code 作为编排优化层,它通过自定义技能和提示词编辑工作空间、运行评估、调度子代理和记录变体。
核心创新点在于渐进式多粒度优化策略和基于证据的升级决策。FAPO 首先尝试提示词编辑,这是最简单的变更类型;只有当(1)提示词优化似乎已达到极限,(2)tenant scope contract 允许更高层次的变更,(3)归因报告识别出提示词不太可能修复的瓶颈时,才升级到链路参数或链路结构。这种策略与 GEPA 等固定提示词优化器有本质区别:GEPA 只能搜索指令字符串,而 FAPO 能决定何时以及如何改变流水线本身。另一个关键创新是独立的审查子代理,它检查每个提案的范围合规性、占位符完整性、数据泄露和评分器兼容性,防止优化器绕过 tenant 定义的约束。
方法步骤详情
优化循环包含六个阶段:(1)评估当前变体:在训练集上运行流水线,收集最终输出和中间步骤证据;(2)归因失败:根据流水线步骤和修复类型分类失败,如检索不足、推理错误、格式失败、答案过于冗长等;(3)提出有范围的变体:针对主要失败集群提出一个允许的变体,优先提示词编辑;(4)审查提案:独立审查者检查提案是否符合范围约束、占位符是否完整、是否有数据泄露、是否与评分器兼容;(5)评估提案:运行提案的变体并与之前最佳变体比较;(6)迭代或升级:接受改进的变体,当提示词级搜索达到平台期时,记录原因并仅在失败分析支持升级时探索允许的非提示词变更。整个过程在 tenant 定义的范围预算内运行(如 50 个变体或 10 轮优化),每轮接受一个变体后重复循环。
技术新颖性
技术新颖性体现在四个方面。一是多粒度优化空间的统一搜索,FAPO 在提示词文本、链路参数和链路结构三个层次上统一优化,而之前的工作要么只搜索提示词(GEPA、APE、OPRO),要么只优化结构(DSPy 编译)。二是归因驱动的升级决策,FAPO 使用步骤级证据判断何时需要升级优化层次,而不是预设固定策略。三是多租户隔离的架构,每个任务有独立的工作空间和约束,共享优化引擎,这在大规模企业环境中特别有价值。四是防护栏和数据卫生设计,包括分离的训练/验证/测试集访问控制、范围约束、迭代记忆和变体不可变性,防止过度拟合和泄露。
实验结果
FAPO 在 6 个基准测试和 3 个任务模型上的实验证明了其有效性。在 18 个模型-基准比较中,FAPO 在 15 个上击败了 GEPA,平均提升 14.1 个百分点,其中 11 个提升的均值加或减试验标准差范围不重叠,表明统计显著。在 HoVer 多跳事实验证任务上,归因识别出检索覆盖不足,FAPO 将 baseline 的 3 跳检索链扩展到 4-5 跳,加入多查询 BM25 搜索和实体感知救援,在 GPT-5.4-mini 上从 31.78% 提升到 80.33%(+48.56 pp)。在 IFBench 指令遵循任务上,归因识别出格式失败,FAPO 添加确定性后处理节点强制执行指令约束,在 GPT-4.1-mini 上从 54.76% 提升到 93.71%(+38.95 pp)。在仅提示词优化的比较中(9 个模型-基准对),FAPO 赢得 9 个中的 9 个,其中 6 个有不重叠的标准差范围,表明即使不使用结构优化,Claude Code 的深度迭代推理也优于 GEPA 的进化搜索。在安全任务 CTIBench-RCM(CVE 到 CWE 分类)上,FAPO 将 GPT-5 的测试准确率从 72.1% 提升到 76.1%(+4.0 pp),Foundation-Sec-8B-Instruct 从 63.9% 提升到 71.0%(+7.1 pp),Foundation-Sec-8B-Reasoning 从 71.0% 提升到 73.0%(+2.0 pp)。唯一的负面结果是 AIME 数学竞赛任务,GEPA 在所有三个模型上都领先 FAPO,作者认为这可能源于小样本量导致的过拟合。HotpotQA 的验证轨迹显示了 FAPO 的渐进优化:baseline 39.22%,variant-002 添加答案简洁性约束提升到 65.7%,variant-003 添加必须回答规则提升到 70.3%,随后归因系统标记剩余失败为检索受限,表明进一步提示词迭代不太可能帮助。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| HotpotQA(多跳问答) | Exact Match (EM) | GPT-4.1-mini: 72.67%, GPT-5.4-mini: 69.56%, Gemma 3-12B: 62.78% | GPT-4.1-mini: 67.56%, GPT-5.4-mini: 56.22%, Gemma 3-12B: 61.66% | +5.11 pp, +13.34 pp, +1.12 pp |
| HoVer(多跳事实验证) | 准确率 | GPT-4.1-mini: 84.44%, GPT-5.4-mini: 80.33%, Gemma 3-12B: 86.67% | GPT-4.1-mini: 59.67%, GPT-5.4-mini: 31.78%, Gemma 3-12B: 54.00% | +24.78 pp, +48.56 pp, +32.67 pp(使用流水线优化) |
| IFBench(指令遵循) | 准确率 | GPT-4.1-mini: 93.71%, GPT-5.4-mini: 86.05%, Gemma 3-12B: 62.30% | GPT-4.1-mini: 54.76%, GPT-5.4-mini: 48.36%, Gemma 3-12B: 42.46% | +38.95 pp, +37.70 pp, +19.84 pp(使用流水线优化) |
| LiveBench-Math(数学推理) | 分数 | GPT-4.1-mini: 73.56%, GPT-5.4-mini: 67.00%, Gemma 3-12B: 45.30% | GPT-4.1-mini: 61.78%, GPT-5.4-mini: 57.26%, Gemma 3-12B: 38.66% | +11.78 pp, +9.73 pp, +6.64 pp |
| AIME(数学竞赛) | 准确率 | GPT-4.1-mini: 48.89%, GPT-5.4-mini: 33.78%, Gemma 3-12B: 18.22% | GPT-4.1-mini: 52.67%, GPT-5.4-mini: 38.44%, Gemma 3-12B: 18.67% | -3.78 pp, -4.67 pp, -0.44 pp |
| Papillon(隐私感知委托) | 复合分数 | GPT-4.1-mini: 94.29%, GPT-5.4-mini: 95.07%, Gemma 3-12B: 95.47% | GPT-4.1-mini: 90.72%, GPT-5.4-mini: 88.82%, Gemma 3-12B: 92.65% | +3.57 pp, +6.26 pp, +2.81 pp |
| CTIBench-RCM(CVE 到 CWE 分类) | 准确率 | GPT-5: 76.1%, Foundation-Sec-8B-Instruct: 71.0%, Foundation-Sec-8B-Reasoning: 73.0% | GPT-5: 72.1%, Foundation-Sec-8B-Instruct: 63.9%, Foundation-Sec-8B-Reasoning: 71.0% | +4.0 pp, +7.1 pp, +2.0 pp(仅提示词优化) |
局限与改进
作者承认的局限性包括:(1)实验设计的公平性:FAPO 的优化范围比 GEPA 更广(可以改变链路参数和结构),虽然 FAPO 遵循提示词优先策略,但这不是完全公平的比较;(2)试验方差:当提示词优先搜索允许升级到流水线变更时,FAPO 的运行间方差较高,反映了优化轨迹的路径依赖;(3)baseline 模型不对称:GPT-4.1-mini 和 GPT-5.4-mini 的 16,000 token 预算处理方式不同,前者只限制可见输出,后者包含隐藏推理和可见输出,导致 GPT-5.4-mini 在长推理任务上表现不佳;(4)GEPA 复现保真度:复现的 GEPA 分数与已发表结果相差 -3.78 到 +7.97 pp,部分原因是使用了 Claude Opus 4.6 作为 reflector 替代原始模型。我观察到的额外局限性:(1)小样本过拟合:AIME 任务上的负面结果可能源于优化空间相对于问题空间过大,导致在训练集上过拟合;(2)审查代理能力:论文没有评估审查代理阻止不良提案的准确率,可能存在漏过违规变更的风险;(3)计算成本:FAPO 需要多次运行完整流水线并记录中间步骤,计算成本显著高于仅优化提示词的方法;(4)LangGraph 依赖:框架假设流水线使用 LangGraph 表示,对于使用其他框架的流水线可能需要适配。
独立分析的弱点
独立分析的弱点包括:(1)审查代理的验证能力不足:当前的审查代理检查范围合规性、占位符完整性、数据泄露和评分器兼容性,但可能无法识别更微妙的违规,如改变评分器语义逻辑或引入隐蔽的偏差。改进方向是增强审查代理的能力,加入更严格的语义分析和对抗性测试,或使用多个独立审查者交叉验证。(2)优化策略的启发式本质:当前的升级决策基于归因报告的定性判断,缺少定量阈值,可能导致过早升级或过度坚持提示词优化。改进方向是引入更定量的决策标准,如监控提示词编辑的边际收益,当连续 k 轮改进小于阈值 epsilon 时触发升级评估。(3)计算成本高昂:FAPO 需要在每轮评估中运行完整流水线并记录所有中间步骤,对于长链路或大型数据集成本很高。改进方向是引入主动学习或贝叶斯优化,优先评估最有信息量的案例,或使用缓存机制重用中间结果。(4)对 LangGraph 的依赖:框架深度集成 LangGraph,对于使用其他框架(如 LangChain、Haystack)的流水线需要适配层。改进方向是提供标准化的流水线接口,允许不同框架的实现通过适配器接入。(5)小样本任务的过拟合风险:AIME 等小样本任务上优化容易过拟合训练集。改进方向是引入正则化机制,如限制每轮最大改进幅度,或在验证集上使用早停策略。
未来方向
作者提出的未来工作方向包括:(1)扩展基准测试覆盖更多任务类型,如代码生成、多模态推理、长期记忆任务;(2)优化审查机制,增强其阻止违规变更的能力;(3)探索更复杂的优化策略,如并行搜索多个候选变体、使用进化算法维护变体种群。基于成果的可延伸方向包括:(1)多目标优化:当前 FAPO 优化单一评分函数,但实际场景可能需要平衡多个目标(如准确率、延迟、成本、隐私)。可以扩展为帕累托优化,允许用户指定目标权重或约束。(2)跨 tenant 迁移学习:利用一个任务的优化历史加速另一个任务的优化,特别是当任务共享某些组件(如相同的检索器或推理模板)时。这需要在 tenant 之间安全地共享抽象化后的优化模式,而不是具体数据。(3)实时持续优化:当前 FAPO 是批处理优化,可以扩展为在线学习模式,根据生产环境的反馈持续调整流水线,同时保持防护栏防止退化。(4)人机协作优化:在自动优化循环中引入人类专家的交互点,允许专家在关键决策(如升级到结构优化)时介入,或提供领域知识指导优化方向。这需要在审查阶段加入人工审批工作流,或提供可视化界面展示优化轨迹和候选变体。
复现评估
复现评估方面,论文提供了良好的开源支持。代码已在 GitHub 上开源(https://github.com/cisco-foundation-ai/fully-automated-prompt-optimization),包含完整的运行时引擎、优化代理、审查代理和评估工具。每个 tenant 有独立的工作空间,包含任务描述、数据集、评分器和 baseline 流水线。论文详细描述了实验协议:使用三个任务模型(GPT-4.1-mini、GPT-5.4-mini、Gemma 3-12B),采样参数为温度 1.0、top-p 0.95、16,000 token 生成限制,优化预算限制为 50 个变体或 10 轮优化(取先达到者)。每个单元格报告三次试验的均值加或减标准差,没有提前停止。数据集使用标准分割:HotpotQA 使用 150 开发、300 验证、300 测试案例,CTIBench-RCM 使用 173 开发和 827 测试案例。复现难度中等:需要配置 LLM API(特别是 GPT-4.1-mini 和 GPT-5.4-mini),安装 LangGraph 和其他依赖,但架构清晰,文档相对完整。主要挑战可能是 API 成本(多次运行完整流水线)和某些模型(如 GPT-5.4-mini)的访问权限。算力要求主要是 LLM API 调用,本地计算需求不高。论文提供了详细的实现细节(附录 A),包括运行时配置、链路状态、评分器契约、运行工件、失败归因和 tenant 隔离,这有助于理解内部机制和定制化。
论文图表