使LLMs能够以正确的顺序进行正确的API调用
引言
在大型语言模型(LLM)取得惊人成功之前,基于对话的人工智能(AI)系统研究主要沿着两条路径展开:一是聊天机器人,旨在实现开放式对话;二是面向任务的对话模型,目标是为API提取参数并代表用户执行任务。尽管LLM在开放式对话方面取得了显著进展,但在任务导向的对话领域仍面临诸多挑战。
其中一个主要难点在于,LLM在执行任务时难以遵循规定的操作顺序,尤其是在涉及复杂的工作流和API依赖关系时。例如,旅行社应用可能需要在客户预订航班后推荐租车服务;类似地,调用搜索航班选项的API必须在将城市名称转换为机场代码的API调用之后执行。
方法概述:基于图形的工作流依赖建模
为了解决上述问题,我们提出了一种基于图形的解决方案,用于表示API和工作流的依赖关系。通过这一方法,我们设计了一个提示系统,能够生成计划(plan),即一系列API调用,并为每个调用提供自然语言解释。这种方法通过以下步骤实现:
- 生成候选序列:给定提示,LLM预测出k个最可能的后续令牌。
- 向前生成:对每个候选令牌继续生成固定长度的输出序列。
- 评分机制:根据生成序列的语义内容及其对依赖关系图的遵守程度进行评分,最终选择得分最高的序列。
这种方法的核心在于利用依赖关系图来约束生成过程,确保API调用的顺序符合逻辑。
数据集与实验设计
数据集构建
由于现有的面向任务的对话数据集缺乏操作序列依赖的特征,我们创建了一个新的数据集。该数据集包含:
- 13个不同的工作流:每个工作流由多个API调用组成。
- 64个API调用:涵盖了多种任务场景。
- 20个相关查询:每个工作流对应20种不同措辞的用户请求。
此外,每个工作流都配备了黄金标准计划,明确规定了API调用的顺序。
实验设置
我们对比了不同解码策略下的模型表现,包括:
- 基线模型:使用贪婪解码、核采样和波束搜索等传统解码方法。
- FLAP方法:结合依赖关系图的评分机制,优化生成计划的准确性。
实验评估指标包括:
- 计划偏差:生成计划与黄金标准计划的差异。
- API幻觉:生成不存在的API调用。
- API冗余:重复调用同一API。
实验结果与分析
减少计划偏差与错误
实验结果表明,FLAP方法显著减少了API幻觉和序列外生成的数量,相较于基线模型,错误率降低了一个甚至两个数量级。此外,FLAP方法生成的计划与黄金标准计划的编辑距离减少了8%至64%,具体取决于模型和解码方法的超参数设置。
提升小型模型性能
令人鼓舞的是,FLAP方法使较小规模的LLM(约70亿参数)达到了与更大规模模型(300-400亿参数)相当的性能。这一结果表明,FLAP方法在提升模型效率的同时,也降低了计算成本,为LLM的商业化应用提供了更具性价比的解决方案。
FLAP方法详解
FLAP(Flow-Adhering Planning)是一种面向任务的解码策略,其核心思想是通过评分系统引导令牌选择,使生成的计划符合API和工作流的依赖关系。具体步骤如下:
- 语义相似性评分:使用语义相似性模型,识别生成内容与工作流规范中最相似的步骤。
- 依赖关系验证:基于依赖关系图,检查当前生成的步骤是否满足前置条件。如果满足,则给予高分;否则,降低评分。
- API调用评分:根据API调用的执行顺序是否符合依赖关系图进行评分。
- 用户查询匹配:测量生成内容与用户查询之间的相似性。
- 语法验证:确保生成的计划遵循特定的语法格式,例如
<think, API调用>。
通过上述评分机制,FLAP方法能够从k个候选序列中选择最优的计划。
指令集实验与解码策略对比
我们在实验中测试了两种指令集变体:
- 全域指令集:包含所有工作流约束。
- 相关指令集:仅包含与当前任务相关的工作流。
结果显示,FLAP方法在所有测试的LLM中均优于基线模型。此外,即使在某些指标上FLAP的改进较为温和,它在其他指标上的表现通常更为显著。
未来工作方向
当前的FLAP实现能够根据用户查询生成初始计划。然而,在实际应用中,用户的意图可能会随着对话的进行而发生变化。因此,我们计划研究能够动态调整初始计划的模型,使其能够适应用户在对话中不断变化的需求。
总结
本文提出了一种基于图形的解码策略FLAP,旨在解决LLM在任务导向对话中难以遵循操作顺序的问题。实验结果表明,FLAP方法不仅显著提高了计划生成的准确性,还降低了API幻觉和冗余的发生率。此外,FLAP方法使小型LLM的性能接近大型模型,为LLM的高效商业化应用提供了新的可能性。未来,我们将进一步探索动态调整计划的能力,以更好地适应实际应用场景。
原文链接: https://www.amazon.science/blog/enabling-llms-to-make-the-right-api-calls-in-the-right-order
最新文章
- 函数调用与工具使用入门 – Apideck
- 什么是API测试?其优势、类型及最佳实践
- API 安全策略和基础指南
- 如何在Python、PHP、Ruby中使用今日头条热搜榜API
- 如何获取文心一言 API Key 密钥(分步指南)
- 2025 ComfyUI 稳定扩散流水线|拖拽式节点化+API 集成教程
- Flask-Limiter:为 API 添加访问速率限制的 Python 扩展!
- OpenAI o1原理逆向工程图解
- 性别预测API:如何让名字背后的性别信息一目了然?
- 小红书AI文章风格转换:违禁词替换与内容优化技巧指南
- REST API 设计:过滤、排序和分页
- 如何获取 Coze开放平台 API 密钥(分步指南)