模型 / 数据集
ShishirPatil/gorilla avatar
ShishirPatil/gorilla

Gorilla 评测:从 API 调用微调到函数调用基准,伯克利项目到底解决了什么

Gorilla: Training and Evaluating LLMs for Function Calls (Tool Calls)

13,023 个 Star1,407 个 ForkPythonApache-2.0

秒懂

它是什么?
Gorilla 是一个围绕 LLM 函数调用(tool calling)展开的综合性项目,包含模型、数据集、评测代码和排行榜。本文梳理其构成、运行方式与适用边界,帮助工程师判断是否值得引入。
适合谁用?
Gorilla 适合两类人:一是想复现或改进函数调用微调流程的研究者,APIBench 数据集和评测代码是现成起点;二是需要评估多个模型函数调用能力的平台团队,BFCL 提供了结构化测试集和排行榜。不适合直接在生产环境调用 API 的开发者,因为仓库主要提供训练与评测工具,而非封装好的服务,且模型更新与排行榜维护需要持续跟进。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 156 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

一个仓库,四种角色

Gorilla 不是单一模型,而是一组相互关联的产物。根据 README,仓库包含推理代码、评测代码、APIBench 数据集,以及后来扩展出的 Berkeley Function Calling Leaderboard(BFCL)、GoEx 运行时和 Agent Arena。对工程师而言,这意味着你需要先明确自己要解决哪个环节的问题。如果只是想调用 API,Gorilla 本身并不提供一个开箱即用的服务;它提供的是训练模型、构造 API 调用、以及衡量调用准确性的工具。项目主页声称已服务约 50 万次请求,但这一数字无法从仓库代码中验证,只能视为项目方自述。

从自然语言到 API 调用:微调路线

Gorilla 的核心方法是监督微调。论文(arXiv 2305.15334)提出让 LLM 学会根据用户查询生成语义和语法都正确的 API 调用。关键设计是 APIBench 数据集,它收集了 1600 多个 API,并按照可训练、易获取的原则整理。与直接提示大模型不同,Gorilla 通过微调让模型把 API 文档中的约束内化。README 中的例子显示,输入是自然语言,输出是具体的 API 调用。这种做法的直接好处是减少幻觉:模型不再凭空编造不存在的函数,而是从给定的 API 集合中选择。但要注意,APIBench 的覆盖范围是固定的,如果你的业务 API 不在其中,微调效果需要自行验证。

BFCL:函数调用评测的演进

Berkeley Function Calling Leaderboard 是项目后期的主轴。从 v1.1 到 v1.3,评测维度不断扩展。v1.1 聚焦基础函数调用,v1.2 加入成本与延迟指标,v1.3 引入多轮、多步函数调用和状态依赖场景。2025 年 7 月发布的 V4 Agentic 更进一步,加入 web search 的多跳推理、错误恢复、agent 记忆管理和格式敏感性评估。这意味着 BFCL 不只是静态测试集,而是试图模拟真实 agent 的工作负载。对选型团队来说,BFCL 的价值在于它提供了跨模型的横向对比,而不是某一个模型的自我宣传。但评测的复杂性也在增加,V4 的场景需要专门的运行时支持,普通开发者直接复现的门槛变高了。

GoEx:执行层的安全抽象

2024 年 4 月发布的 GoEx 是仓库中容易被忽略但值得注意的部分。它被描述为一个运行时,用于执行 LLM 生成的代码和 API 调用。核心概念是 post-facto validation,即在动作执行后评估其正确性,而不是执行前拦截。同时提供 undo 和 damage confinement 抽象,用来管理意外动作和风险。这个设计思路与传统的沙箱或权限校验不同:它允许动作发生,但通过事后检查和撤销机制来控制损失。对构建自主 agent 的团队,GoEx 提供了一种比完全信任或完全禁止更细粒度的控制方式。但文档没有说明 undo 的实现细节,例如哪些类型的副作用可以回滚,哪些不能,这需要实际测试才能确定。

运行与获取:从 Colab 到 Hugging Face

仓库提供了多种运行入口。最早的模型以 delta 形式发布在 Hugging Face(gorilla-llm/gorilla-7b-hf-delta-v0),需要通过 Colab 笔记本合并权重。后来发布的 OpenFunctions v2 和 v3 模型则直接可用。推理代码放在 inference 目录,评测代码在 eval 目录。对于开发者,最简单的体验方式是访问 gorilla.cs.berkeley.edu 的在线演示或排行榜,不需要本地部署。若要本地运行,需要 Python 环境,并从 Hugging Face 下载模型权重。需要注意的是,模型版本与仓库代码的对应关系并不总是清晰,例如 v1.3 的 BFCL 更新是否影响 OpenFunctions 的推理代码,README 中没有直接说明。

许可证与维护的现实考量

项目采用 Apache-2.0 许可证,这对商业使用是友好的,没有 copyleft 限制。但仓库本身是一个研究项目,更新节奏并不稳定。最后一次 push 是 2026 年 4 月,v1.3 发布于 2025 年 7 月,v1.2 在 2025 年 1 月,v1.1 在 2024 年 8 月,间隔大约 4 到 7 个月。这意味着如果你依赖某个特定版本的 BFCL 数据集或模型,需要关注后续变化。项目没有归档,但主要维护者来自伯克利,社区支持主要靠 Discord。对于生产环境,你实际上是在依赖一个学术团队维护的代码库,升级路径和长期支持都需要自己评估。

替代方案与真正的取舍

与 Gorilla 直接竞争的方案有两类。一类是 OpenAI 的函数调用 API,它把函数定义作为输入,让模型返回结构化参数,不需要微调。另一类是开源工具如 LangChain 的工具调用接口,它通过提示工程和运行时调度来连接模型与工具。Gorilla 的差异在于它把微调作为核心手段,目标是让模型本身更擅长 API 调用,而不是依赖外部的编排层。这个取舍很明确:微调需要数据和算力,但推理时更高效,且可以针对私有 API 定制。OpenAI 的方案胜在零训练成本,但受限于平台。LangChain 胜在灵活,但模型可能产生幻觉。Gorilla 适合那些愿意投入训练、且对 API 调用准确率有高要求的团队。

编辑结论

Gorilla 适合两类人:一是想复现或改进函数调用微调流程的研究者,APIBench 数据集和评测代码是现成起点;二是需要评估多个模型函数调用能力的平台团队,BFCL 提供了结构化测试集和排行榜。不适合直接在生产环境调用 API 的开发者,因为仓库主要提供训练与评测工具,而非封装好的服务,且模型更新与排行榜维护需要持续跟进。采用前应先验证三件事:确认你的目标 API 是否在 APIBench 覆盖范围内,检查 BFCL 的评测类别(如多轮、状态依赖)是否匹配你的场景,以及评估 GoEx 的 post-facto validation 机制能否满足你的安全要求。Gorilla 的价值在于它把函数调用的数据、训练和评测串成了一条可复用的流水线,但这条流水线的终点是排行榜,不是生产系统。

官方来源

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. ShishirPatil/gorilla on GitHub
社区笔记

社区笔记