APIGen:革新函数调用代理的高质量数据集生成管道
摘要
本文介绍了一种名为APIGen的自动化数据生成管道,旨在为函数调用应用合成可验证的高质量数据集。通过利用APIGen,收集了跨越21个不同类别的3,673个可执行API,以可扩展和结构化的方式生成多样化的函数调用数据集。每个数据点都经过三个层次的验证阶段:格式检查、实际函数执行和语义验证,确保其可靠性和正确性。实验证明,使用我们精心策划的数据集训练的模型,即使在只有7亿参数的情况下,也能在伯克利函数调用基准测试中达到最先进的性能,超越多个GPT-4模型。此外,我们的1亿参数模型表现出色,超过了GPT-3.5-Turbo和Claude-3 Haiku。我们发布了一个包含60,000个高质量条目的数据集,旨在推动函数调用代理领域的发展。该数据集可在Huggingface和项目主页上获取。
原理
APIGen框架通过三个关键模块确保数据质量、多样性和可扩展性:多阶段数据验证过程确保数据质量,种子QA(查询-答案)数据采样器、API采样器和各种提示模板确保多样性,而结构化的模块化设计使用统一格式使得系统能够扩展到多样化的API源,包括但不限于Python函数和表示状态转移(REST)API。数据生成过程从库中采样一个或多个API和示例查询-答案(QA)对(种子数据)开始,然后将它们格式化为标准化的JSON格式。根据所需的数据生成目标选择提示模板,引导LLM生成相关的查询-答案对。生成的每个答案都是一个格式化为JSON的函数调用。
流程
APIGen的工作流程包括以下步骤:
- 从可执行API库中采样一个或多个API和示例查询-答案(QA)对(种子数据)。
 - 将这些数据格式化为标准化的JSON格式。
 - 根据所需的数据生成目标选择提示模板,引导LLM生成相关的查询-答案对。
 - 生成的每个答案都是一个格式化为JSON的函数调用,这些调用经过多阶段验证过程以确保其正确性和相关性。
 - 通过格式检查器验证正确的JSON格式和可解析性。
 - API执行引擎处理这些调用,并将结果和查询发送给语义检查器,另一个LLM,评估函数调用、执行结果和查询目标之间的对齐。
 - 通过所有阶段的数据点被添加回种子数据集,作为高质量示例,以增强未来生成的多样性。
 
应用
APIGen生成的数据集旨在促进函数调用代理领域的进一步研究和开发,为研究人员和开发人员提供了一个基础,用于训练和测试他们的模型。该数据集涵盖了各种查询风格,如并行函数调用数据(要求代理在一个响应中生成多个并发函数调用),这在公共数据集中很少见。通过提供这种大规模的合成数据集,我们希望推动函数调用代理领域的发展,并支持更有效的LLM微调,以适应特定领域的API相关任务。
