单次重写足矣:生产环境技能描述优化的经验教训

arXiv cs.CL 论文

摘要

本文介绍了一个自动化管道,用于优化企业AI代理中的自然语言技能描述以解决技能冲突,其性能与手动调优相当,速度提升32倍。消融实验表明,使用错误案例的单次LLM重写即可捕获大部分改进,而其他设计选择影响甚微。

arXiv:2606.30775v1 公告类型:新 摘要:企业AI代理通过将用户查询与自然语言技能描述进行匹配,将查询路由到专门的技能。当两个技能的描述存在重叠时,路由LLM就会错误路由查询,我们称这种失败为技能冲突。随着代理扩展到数十个技能,手动调整描述以保持路由准确性成为了一个显著的工程瓶颈。我们在一个生产级企业群聊代理(9个技能,372个回归案例)上部署了一个自动描述优化管道。该管道产生的描述平均F1为79.2%,与手动调优描述的79.4% F1相匹配(每个技能的平均差异为-0.20%,在0.78%的多种子噪声底线内),同时将每个技能的工程工作量从120分钟减少到3.8分钟(速度提升32倍)。然后我们检查哪些管道组件实际上驱动了这种匹配。在生产系统和ToolBench(16k工具)上的系统消融表明,使用任何可用的假阳性和假阴性案例进行一次LLM重写即可捕获大部分可用改进。我们测试的其他设计选择(迭代预算、反馈信号组成、混淆对的联合编辑以及训练集大小)对最终F1的影响均小于0.5%。描述优化解决了因重叠描述引起的技能冲突,但无法解决两个技能预期范围确实重叠的情况。我们识别出一个诊断指标(较大的训练-验证F1差距),用于标记后一种情况,需要架构层面而非文本层面的干预。
查看原文
查看缓存全文

缓存时间: 2026/07/01 05:31

# 一次重写足矣:生产级技能描述优化的经验教训
来源:https://arxiv.org/html/2606.30775
Yangqiaoyu Zhou, Mohammad Alqudah, Kwei\-Herng Lai, Aaron Halfaker Yingqi Xiong, Yaar Harari Microsoft \{yangqzhou, yaarharari\}@microsoft\.com

###### 摘要

企业级AI代理通过将用户查询与自然语言技能描述进行匹配,将查询路由到专门的技能。当两个技能的描述存在重叠时,路由LLM会错误路由查询,我们将这种故障称为技能冲突。随着代理扩展到数十个技能,手动调整描述以保持路由准确性成为重大的工程瓶颈。我们在一个生产级企业群聊代理(9个技能,372个回归案例)上部署了自动化描述优化流水线。该流水线产生的描述平均F1为79.2%,与手动调整的描述(平均F1为79.4%,每技能平均差异-0.20%,在±0.78%的多种子噪声范围内)相匹配,同时将每技能的工程工作量从120分钟减少到3.8分钟(32倍加速)。然后,我们检查了该流水线的哪些组件实际驱动了这一匹配。在生产系统和ToolBench(约16k工具)上的系统性消融实验揭示,使用任何可用的假阳性和假阴性案例进行一次LLM重写即可捕获大部分可用的改进。我们测试的其他设计选择(迭代预算、反馈信号组成、混淆对的联合编辑以及训练集大小)对最终F1的影响均小于0.5%。描述优化解决了由重叠描述引起的技能冲突,但无法解决两个技能预期范围真正重叠的情况。我们识别出一个诊断信号(较大的训练-验证F1差距),用于标记后一种情况需要进行架构级而非文本级的干预。

# 一次重写足矣:生产级技能描述优化的经验教训

Yangqiaoyu Zhou, Mohammad Alqudah, Kwei\-Herng Lai, Aaron HalfakerYingqi Xiong, Yaar HarariMicrosoft\{yangqzhou, yaarharari\}@microsoft\.com

## 1 引言

(a) 优化前
“谁是Sarah的经理?”
LLM规划器
PeopleSearch
“查找组织中某人的个人资料信息。”
GetUserManager
“检索公司内人员的组织信息。”
假阳性错误案例:查询路由到PeopleSearch(不正确)
↓
LLM重写GetUserManager描述
(b) 错误反馈后
“谁是Sarah的经理?”
LLM规划器
GetUserManager
“返回指定员工的直属经理;当查询询问某人向谁汇报时使用。”
路由
×
路由
✓
图1:技能冲突及通过错误反馈自动解决。(a) 优化前:两个技能有几乎相同的描述;LLM规划器无法区分它们,错误地将查询路由到PeopleSearch(不正确,×)。(b) 错误反馈引导重写后:假阳性案例被反馈给LLM,LLM为GetUserManager生成了有区分性的描述;规划器现在正确路由(✓)。

现代企业AI助手被构建为编排的代理系统,其中基于LLM的规划器将用户查询路由到专门的技能[Yao等人,2023;Wu等人,2023]。路由决策通过将查询与每个技能的自然语言描述进行比较来驱动。当描述不够区分时,规划器会错误路由查询,导致我们称为技能冲突的情况:语义上重叠的技能竞争同一查询群体(图1)。

技能冲突在入驻时最为严重。向已部署的代理添加新技能要求其描述相对于所有现有技能精确定位。在实践中,这需要迭代的手动调整:开发人员编写描述,部署技能,观察来自真实或合成流量的路由错误,然后进行编辑。这个循环很慢,需要同时具备技能功能和规划器决策边界的专业知识,并且随着代理能力的增长而难以扩展。

我们部署了一个自动化的描述优化流水线来替代这个手动循环。该流水线使用LLM初始化候选描述,然后使用来自标注训练集的假阳性和假阴性案例迭代精炼。在一个生产级企业群聊代理(9个技能,372个回归案例)上,自动化描述在路由质量上与手动调整的描述相匹配(平均F1为79.2%对比79.4%,每技能差异在±0.78%的多种子噪声范围内),同时将每技能工程工作量从120分钟减少到3.8分钟(32倍加速)。

鉴于自动化流水线达到了手动质量,我们询问它的哪些组件实际上重要。最初实现时,流水线结合了多种由直觉驱动的机制:同时呈现FP、FN和TP案例的对比反馈;最多固定预算的迭代精炼;最混淆竞争技能的联合编辑;调整后的训练集大小。通过在生产系统上和ToolBench(约16k工具)上跨越闭世界(每查询候选池)和开世界(检索整个语料库)路由体制的系统性消融,我们发现这些设计选择中的大多数对最终路由F1的影响小于0.5%。使用任何可用FP/FN案例进行一次LLM重写捕获了大部分可用改进:在生产上,单次实现了79.2%的F1(每技能与手动编写描述相差-0.12%,在噪声范围内与迭代精炼匹配);在ToolBench开世界上,单次实现了+4.45%的F1增益,与迭代精炼相差0.2%以内。

并非所有路由失败都是描述失败。另外两个发现刻画了描述优化的适用范围和不适用的范围。首先,闭世界(固定候选池)和开世界(基于检索)的路由需要分别优化:在一个体制中调优的描述难以迁移到另一个体制,并且LLM初始化在一个设置中有所帮助,但在另一个设置中却有损害。其次,当两个技能的预期范围真正重叠(而不仅仅是共享区分性不足的措辞),任何描述重写都无法解决冲突;这些技能表现出大的训练-验证F1差距,无论优化信号质量如何。我们将这个差距识别为一个诊断信号,用于标记需要架构级干预(范围重组、特定意图路由规则)而非继续描述精炼的技能。

综合起来,这些发现为技能入驻提供了一个紧凑的操作图景:使用单次LLM重写进行优化,使优化体制与部署体制匹配,并使用训练-验证F1差距来分流哪些技能需要架构干预而不是更多的描述调整。我们做出三个贡献:(1)一个已部署的生产系统,在企业规模上替代了手动描述调整,经验证不劣于手动调整基线,工程加速32倍;(2)在生产系统和ToolBench上的系统性消融表明,流水线复杂性——反馈类型、迭代预算、联合编辑、训练规模——影响可忽略,一次LLM重写就足够了;(3)描述优化的适用范围特征描述,包括一个用于需要架构干预的技能诊断信号,以及将闭世界和开世界路由分离为不同的优化体制。

## 2 相关工作

**LLM代理的工具选择。** LLM工具选择包括在大规模API集合上的路由模型和规划器[Qin等人,2023;Shen等人,2023;Li等人,2023],从文档中生成准确调用[Patil等人,2023],以及为编排器检索候选工具[Liu等人,2025;Jia和Li,2025;Lumer等人,2025]。这些上游检索方法与我们的工作互补;我们优化在已建立的候选池中使用的描述。

**工具描述优化。** 最近的方法使用LLM和执行轨迹重写工具文档,旨在改进下游任务完成[Yuan等人,2024;Qu等人,2025;Fang等人,2025;Guo等人,2026]。我们不是通过执行轨迹针对下游执行成功,而是使用客观的假阳性和假阴性案例针对上游路由决策来诊断技能冲突。此外,我们严格评估了生产部署中与手动调整描述的对比,并展示了一次LLM重写捕获了绝大多数可用改进。

**提示优化与自我精炼。** 众多框架使用文本梯度、演示或LLM自我批评来优化整体任务提示或精炼输出[Khattab等人,2023;Opsahl-Ong等人,2024;Yang等人,2024;Zhou等人,2023;Yuksekgonul等人,2025;Pryzant等人,2023;Madaan等人,2023;Shinn等人,2023;Agrawal等人,2026]。我们不是优化聚合任务提示,而是专门专注于通过离散路由错误评估的每技能描述。此外,虽然其中许多方法依赖于多步骤进化搜索或迭代闭环精炼,但我们证明,对于工具描述优化,使用客观路由反馈进行一次单次重写捕获了绝大多数可用改进。

## 3 方法

技能入驻流水线以技能名称为输入,输出一个优化的路由描述供LLM规划器使用。流水线有两个阶段:LLM初始化和错误反馈精炼。我们还描述了一个单次变体,第5.2节表明它足以匹配完整的迭代流水线。

**第一阶段:LLM初始化。** 我们用技能名称提示LLM以生成候选路由描述。初始化提示请求描述技能的功能。初始化的描述既作为精炼的起点,也作为独立基线用于评估。

**第二阶段:错误反馈精炼。** 初始化的描述在带有真实技能标签的标注训练查询集上进行评估。我们收集假阳性(FP:错误路由到该技能但不该路由的查询)、假阴性(FN:该技能遗漏的查询)和真阳性(TP:正确路由的查询)。在每次迭代中,我们使用当前描述、最多5个FP和5个FN案例(一个实际的令牌预算选择;第5.2节确认性能对此限制不敏感),以及一个与负例数量匹配的TP集(以在正负例之间平衡提示上下文)。LLM被要求识别路由失败模式并修改描述。精炼后的描述替换当前描述,并重复该过程,直到达到固定的迭代预算或每技能训练F1超过90%阈值(在实践中,迭代预算是有效的停止标准;见第5.2节)。在每次迭代t,路由评估产生错误案例Et = (FP_t, FN_t, TP_t);选择跨迭代训练F1最高的描述。算法1总结了该循环。

**算法1** 错误反馈精炼
1: 技能s,训练查询Q,预算T,阈值τ
2: 优化描述d̂
3: d₀ ← Initialize(s)   ▷ 第一阶段
4: d̂ ← d₀, f̂ ← 0
5: for t = 1,...,T:
6:   f_t, E_t ← Evaluate(d_{t-1}, Q)
7:   if f_t > f̂:
8:     d̂ ← d_{t-1}, f̂ ← f_t
9:   if f_t ≥ τ: break
10:  d_t ← LLMRewrite(d_{t-1}, Sample(E_t))
11: return d̂

**单次变体。** 我们还评估了一种单次配置,其中LLM在单个提示中获得初始描述和所有可用的FP和FN案例,生成一个修改后的描述而不进行进一步迭代。这模拟了开发人员在拥有完整训练集时会采取的方法,第5.2节显示它足以匹配迭代精炼。

**开世界适应。** 在检索设置中,所有工具按描述索引,每次查询通过混合稀疏-稠密检索(BM25 [Robertson和Zaragoza, 2009] 结合 text-embedding-ada-002 [OpenAI, 2022] 余弦相似度,每查询最小-最大归一化)检索候选。精炼循环同样运行,但假阳性案例现在对应于检索到前20候选池但不应调用的工具,提供了反映检索错误的针对性区分信号。只有出现在至少一个假阳性查询的检索池中的工具才有资格进行精炼。

**表1:生产代理上每技能技能选择F1。** 每行对应将单个技能描述替换为自动生成的变体,同时保持所有其他技能描述为手动编写的版本。HUMAN:所有技能使用当前已部署的手动调整描述(因此各行的F1相同);INIT:目标技能描述是LLM初始化的(无错误反馈);SS:单次LLM重写(给定所有训练FP/FN案例);Iter:迭代精炼循环(最多10次迭代)。平均Δ(HUMAN→SS)为-0.12%,Δ(HUMAN→Iter)为-0.20%,两者都远在每技能±0.78%的多种子噪声范围内(附录E)。技能按Δ(HUMAN→Iter)降序排列。

## 4 实验设置

**生产环境。** 生产系统是一个企业群聊代理,其基于LLM的规划器将查询路由到9个技能之一,涵盖人员搜索、网络搜索、日历安排、内部知识检索、组织层级查找、电子邮件和文档生成。我们使用产品与工程专家创建的372个带真实技能标签的合成测试案例。每个查询可能针对一个或多个技能;所有目标技...

相似文章

@AlphaSignalAI: https://x.com/AlphaSignalAI/status/2069064122218717387

X AI KOLs Timeline

本文探讨了AI代理如何利用微软研究院的SkillOpt等技术自动编写和优化其技能文件,该技术将技能文档视为可训练状态,并带来显著的性能提升。文章还解决了手动技能调优的挑战,并介绍了GEPA和EvoSkill等进化方法的框架。

SkillOpt:自我进化智能体技能的执行策略

Hugging Face Daily Papers

SkillOpt 引入了一种系统化的文本空间优化器,用于智能体技能。该优化器将技能训练为智能体的外部状态,具有稳定的更新和零部署推理开销,在多个基准测试和执行环境中实现了卓越性能。