HuggingFace镜像/xlam-function-calling-60k
数据集
数据集查看器
文件和版本

APIGen 函数调用数据集

论文 | 网站 | 模型

本仓库包含由 APIGen 收集的 60,000 条数据。APIGen 是一个自动化数据生成流水线,旨在为函数调用应用生成可验证的高质量数据集。我们数据集中的每条数据均经过三个层级的验证:格式检查、实际函数执行和语义验证,以确保其可靠性和正确性。

我们对 600 个抽样数据点进行了人工评估,正确率超过 95%,其余 5% 存在参数不准确等轻微问题。

数据集收集流程的整体框架如下所示。更多详情请参见我们的项目 主页。

overview

🎉 新闻

  • [2024年7月]:我们非常高兴地宣布发布两款函数调用模型:xLAM-1b-fc-r 和 xLAM-7b-fc-r。这些模型取得了令人瞩目的排名,在 伯克利函数调用排行榜 上分别位列第 3 和第 25,性能超过了许多规模大得多的模型。我们还提供了它们的 GGUF 文件,可直接在个人设备上部署。敬请期待更多功能强大的模型即将发布。
  • [2024年7月]:我们通过重新生成 1,896 个受影响的数据点,解决了讨论 #8 中提到的问题。感谢社区指出这些问题,帮助我们进一步提高数据集的质量!
  • [2024年6月]:我们很高兴看到我们的工作被 VentureBeat 和 新智元 报道。

什么是函数调用智能体?

函数调用智能体能够根据自然语言指令执行功能性 API 调用。想象一下,你询问帕洛阿尔托今天的天气。作为响应,函数调用智能体迅速解读这个请求,调用相应的 API(例如 get_weather("Palo Alto", "today")),并获取实时天气数据。这种先进功能极大地拓宽了大型语言模型(LLMs)的实际应用范围,使其能够与从社交媒体到金融服务等各种数字平台无缝交互,以前所未有的方式增强我们的数字体验。

function-call

数据集

数据集由 DeepSeek-V2-Chat 和 Mixtral-8x22B-Inst 生成。我们利用 APIGen 收集了 21 个不同类别的 3,673 个可执行 API,以可扩展且结构化的方式生成多样化的函数调用数据集。

前 33,659 条数据条目由 DeepSeek 生成,即从 id 0 到 id 33658。其余条目由 Mixtral 生成。

Pie chart showing dataset distribution

数据集位于 xlam_function_calling_60k.json。接受使用条款并登录你的 Huggingface 账户后,你可以通过以下方式轻松访问该数据集:

from datasets import load_dataset
datasets = load_dataset("Salesforce/xlam-function-calling-60k")

查询和答案的 JSON 数据格式

此 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等各种编程语言和应用领域的函数调用能力。

Performance comparison on Berkeley Function-Calling Leaderboard

截至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}
}