来自加州大学伯克利分校和微软研究院的研究人员开源了Gorilla,这是一个可以编写 API 调用代码的大型语言模型(LLM)。在度量代码生成准确性的实验中,Gorilla 优于包括 GPT-4 在内的几个基线模型。
Gorilla 被描述为“LLM 的 API 应用商店”。它基于开源大型语言模型LLaMA。这个 LLM 在 APIBench 上做了调优。APIBench 是一个新的 ML 模型 API 描述数据集,托管在HuggingFace、TorchHub和TensorHub上。Gorilla 还可以调用 API 定义的外部文档数据库,让它在访问新的 API 时无需重新训练。借助 Gorilla,开发人员可以创建问题的自然语言描述,例如“调用图像分类模型,参数个数不多于 10M,但 ImageNet 准确性至少要达到 70%。”然后,Gorilla 将输出 Python 代码,调用具有适当选项的 ML 模型。按照作者的说法:
在各个领域,LLM 正迅速普及。我们重点关注的是那些可以提高 LLM 在特定任务中 API 识别准确性的技术——这是这项技术发展中一个重要但经常被忽视的方面。作为一种通用语言,API 函数能够实现各种系统间的有效通信。正确使用 API 可以提高 LLM 与更广阔世界中的工具进行交互的能力。
像GPT-4这样的 LLM 在包括生成代码在内的各种任务上都有出色的表现。然而,它们的 API 知识在训练时被“固定”了,因此,无法生成代码来调用更新的 API。此外,它们经常会产生幻觉——在代码生成时,它们输出的代码可能会调用不存在的 API。InfoQ 之前报道过人们近来为解决这些问题所做的努力,例如,Meta的Toolformer可以调用外部服务 API,ChatGPT的插件系统可以利用外部资源来增强 LLM。
不过,伯克利团队指出,那些方法是利用 API 调用的例子来提示 LLM。相比之下,Gorilla 的方法侧重于“系统化地评估并构建一个可供未来使用的管道”。首先,研究人员构建了 APIBench 数据集。他们从 HuggingFace 模型中心、PyTorch 中心和 TensorFlow 中心收集了所有的模型卡。经过过滤之后,获得了一个包含 1645 个 API 调用的集合。对于其中的每一个调用,研究人员使用 GPT-4 生成了一个指令-API 对数据集,用于对 Gorilla 进行调优。
在对 Gorilla 的输出进行评价时,一个主要的挑战是识别幻觉。首先,团队将幻觉定义为模型输出调用了在 API 定义外部数据库中不存在的 API。这与错误不同,错误是指模型输出错误地调用了“真实存在”的 API。团队使用所生成代码的抽象语法树(AST)来匹配数据库中的 API 和用于评估的测试集。在零样本任务中使用 AST 准确性度量,Gorilla 比 GPT-4 高了 20.43%。
Gorilla 的主要作者Shishir Patil参加了黑客新闻关于这项工作的讨论,并回答了几个问题。当被问及该模型的许可是否允许商业使用时,Patil 指出,Gorilla 有三个版本,基于 LLaMA 的版本没有商业应用许可,但基于 MPT-7 base 和 Falcon-7B 的版本可以。还有一位用户问,Gorilla 与LangChain相比怎么样。Patil 回答说:
Langchain 是一个很棒的项目,它试图教代理如何利用提示来使用工具。我们对此的看法是,如果你想在数以千计的 API 之间做出选择,那么提示不具有可扩展性。而 Gorilla 作为一个 LLM,可以帮你挑选 API 并编写语义、语法正确的 API 调用!它可以方便地替代 Langchain!
Gorilla 的代码和模型文件托管在 GitHub 上。这里还有一个在谷歌 Colab 笔记本中的模型演示。
原文链接:
https://www.infoq.com/news/2023/07/microsoft-gorilla/
相关阅读:
评论