本仓库包含由 APIGen 收集的 60,000 条数据。APIGen 是一个自动化数据生成流水线,旨在为函数调用应用生成可验证的高质量数据集。我们数据集中的每条数据均经过三个层级的验证:格式检查、实际函数执行和语义验证,以确保其可靠性和正确性。
我们对 600 个抽样数据点进行了人工评估,正确率超过 95%,其余 5% 存在参数不准确等轻微问题。
数据集收集流程的整体框架如下所示。更多详情请参见我们的项目 主页。
函数调用智能体能够根据自然语言指令执行功能性 API 调用。想象一下,你询问帕洛阿尔托今天的天气。作为响应,函数调用智能体迅速解读这个请求,调用相应的 API(例如 get_weather("Palo Alto", "today")),并获取实时天气数据。这种先进功能极大地拓宽了大型语言模型(LLMs)的实际应用范围,使其能够与从社交媒体到金融服务等各种数字平台无缝交互,以前所未有的方式增强我们的数字体验。
数据集由 DeepSeek-V2-Chat 和 Mixtral-8x22B-Inst 生成。我们利用 APIGen 收集了 21 个不同类别的 3,673 个可执行 API,以可扩展且结构化的方式生成多样化的函数调用数据集。
前 33,659 条数据条目由 DeepSeek 生成,即从 id 0 到 id 33658。其余条目由 Mixtral 生成。
数据集位于 xlam_function_calling_60k.json。接受使用条款并登录你的 Huggingface 账户后,你可以通过以下方式轻松访问该数据集:
from datasets import load_dataset
datasets = load_dataset("Salesforce/xlam-function-calling-60k")此 JSON 数据格式用于表示查询以及可用的工具和相应的答案。以下是该格式的说明:
JSON 数据包含以下键值对:
query(字符串):查询或问题陈述。tools(数组):可用于解决查询的工具数组。
name(字符串):工具的名称。description(字符串):工具功能的简要描述。parameters(对象):表示工具所需参数的对象。
type(字符串):参数的数据类型(例如,"int"、"float"、"list")。description(字符串):参数的简要描述。required(布尔值):指示参数是必需的还是可选的。answers(数组):与查询对应的答案数组。
name(字符串):用于生成答案的工具名称。arguments(对象):表示传递给工具以生成答案的参数的对象。
请注意,我们将 query、tools 和 answers 格式化为字符串,但您可以通过 json.loads(...) 轻松将每个条目恢复为 JSON 对象。
以下是一个 JSON 数据示例:
{
"query": "Find the sum of all the multiples of 3 and 5 between 1 and 1000. Also find the product of the first five prime numbers.",
"tools": [
{
"name": "math_toolkit.sum_of_multiples",
"description": "Find the sum of all multiples of specified numbers within a specified range.",
"parameters": {
"lower_limit": {
"type": "int",
"description": "The start of the range (inclusive).",
"required": true
},
"upper_limit": {
"type": "int",
"description": "The end of the range (inclusive).",
"required": true
},
"multiples": {
"type": "list",
"description": "The numbers to find multiples of.",
"required": true
}
}
},
{
"name": "math_toolkit.product_of_primes",
"description": "Find the product of the first n prime numbers.",
"parameters": {
"count": {
"type": "int",
"description": "The number of prime numbers to multiply together.",
"required": true
}
}
}
],
"answers": [
{
"name": "math_toolkit.sum_of_multiples",
"arguments": {
"lower_limit": 1,
"upper_limit": 1000,
"multiples": [3, 5]
}
},
{
"name": "math_toolkit.product_of_primes",
"arguments": {
"count": 5
}
}
]
}在这个示例中,查询要求计算1到1000之间3和5的倍数之和,并找出前五个质数的乘积。可用工具包括math_toolkit.sum_of_multiples和math_toolkit.product_of_primes,以及它们的参数说明。answers数组提供了用于生成每个答案的特定工具和参数。
除了数据集外,我们还发布了论文中提到的两个小型但功能强大的函数调用模型:xLAM-1b-fc-r 和 xLAM-7b-fc-r。 我们主要在伯克利函数调用排行榜(BFCL)上对它们进行了测试,该排行榜提供了一个全面的评估框架,用于评估LLM在Java、JavaScript和Python等各种编程语言和应用领域的函数调用能力。
截至2024年7月18日在BFCL基准测试上的性能比较。评估参数为temperature=0.001和top_p=1
我们的xLAM-7b-fc-r以88.24%的总体准确率在排行榜上获得第三名,优于许多强大的模型。值得注意的是,我们的xLAM-1b-fc-r模型是排行榜上唯一参数小于20亿的小型模型,但仍实现了78.94%的具有竞争力的总体准确率,并优于GPT3-Turbo和许多更大的模型。
这两个模型在各个类别中都表现出均衡的性能,尽管体积小巧,但显示出强大的函数调用能力。
此次发布仅用于支持学术论文的研究目的。我们的模型、数据集和代码并非专门为所有下游用途设计或评估。我们强烈建议用户在部署此模型之前,评估并解决与准确性、安全性和公平性相关的潜在问题。我们鼓励用户考虑AI的常见局限性,遵守适用法律,并在选择用例时利用最佳实践,特别是在错误或滥用可能严重影响人们生活、权利或安全的高风险场景中。有关用例的进一步指导,请参考我们的AUP和AI AUP。
如果您发现该数据集有用,请引用:
@article{liu2024apigen,
title={APIGen: Automated Pipeline for Generating Verifiable and Diverse Function-Calling Datasets},
author={Liu, Zuxin and Hoang, Thai and Zhang, Jianguo and Zhu, Ming and Lan, Tian and Kokane, Shirley and Tan, Juntao and Yao, Weiran and Liu, Zhiwei and Feng, Yihao and others},
journal={arXiv preprint arXiv:2406.18518},
year={2024}
}