LLMs之Leaderboard:Gorilla的简介、安装和使用方法、案例应用之详细攻略
导读:2023 年5月 24 日,UC伯克利等发布Gorilla。该工作针对LLM有效调用API工具的问题,提出了一种检索式微调语言模型的新方法Gorilla,并构建了相应的评估基准和训练流程,显著提升了LLM理解和生成API调用的性能。
背景痛点:尽管大型语言模型(LLM)在数学推理和程序合成等任务中表现优异,但在通过API调用使用工具方面仍有局限。主要问题是生成准确输入参数的能力不足以及API调用时的幻觉(hallucination)问题。当前的LLMs需要重新训练以更新其知识和推理能力。
解决方案:提出了Gorilla,一种基于LLaMA-7B模型的检索式优化语言模型,旨在优于GPT-4在编写API调用方面的性能。结合文档检索器,Gorilla可以适应测试时文档的变化,减少幻觉问题。构建了APIBench,这是一个综合的API数据集,涵盖HuggingFace、TorchHub和TensorHub。
核心思路:
● 数据集构建:构建了APIBench数据集,包含HuggingFace、TorchHub和TensorHub API。采用自我指导(Self-Instruct)的方式,利用GPT-4生成合成指令数据{instruction, API}对。
● 模型训练:使用自我(Self-Instruct)指令微调和检索使LLMs能够准确选择和调用API。针对API调用任务,对LLaMA-7B进行监督微调。训练时融入检索机制,使模型学会利用API文档。
● 评估方法:采用AST子树匹配技术评估生成API的功能正确性。
● Gorilla模型:基于LLaMA-7B,结合文档检索进行微调,显著提高API功能准确性并减少幻觉错误。
优势:
● Gorilla大幅超越GPT-4在API调用准确性和减少虚假输出(hallucination)方面的性能。
● 检索式训练使Gorilla能够适应API文档的变化,实现灵活更新,保持输出的可靠性和适用性。
● Gorilla展现了在受约束条件下准确理解和推理API调用的能力。展示了LLM通过使用工具(API)来扩展能力、跟上文档更新从而提高可靠性的潜力。
目录
相关文章
《Gorilla: Large Language Model Connected with Massive APIs》翻译与解读
Gorilla的简介
1、新闻
2、Berkeley Function-Calling Leaderboard
Gorilla的安装和使用方法
1、安装
2、使用方法
推理
评估
代码库组织
gorilla
Gorilla的案例应用
相关文章
《Gorilla: Large Language Model Connected with Massive APIs》翻译与解读
地址 | 论文地址:https://arxiv.org/abs/2305.15334 |
时间 | 2023 年5月 24 日 |
作者 | UC伯克利、Microsoft |
摘要 | 大型语言模型(LLMs)最近取得了令人印象深刻的进展,尤其在数学推理和程序生成等多种任务上表现出色。然而,它们在通过API调用有效使用工具的潜力仍未得到充分发挥。即使是当今最先进的LLMs,如GPT-4,也在生成准确的输入参数和避免API调用错误使用方面面临挑战。我们发布了Gorilla,这是一个基于LLaMA微调的模型,其在编写API调用方面的表现优于GPT-4。结合文档检索器,Gorilla展示了适应测试时文档变化的强大能力,从而实现灵活的用户更新或版本变更。它还显著减轻了直接提示LLMs时常遇到的幻觉问题。为了评估模型的能力,我们引入了APIBench,这是一个包含HuggingFace、TorchHub和TensorHub API的综合数据集。将检索系统与Gorilla成功集成,展示了LLMs更准确使用工具的潜力,能够跟上频繁更新的文档,并因此提高其输出的可靠性和适用性。Gorilla的代码、模型、数据和演示可在此https URL获取。 |
Gorilla的简介
Gorilla: 与大量API连接的大型语言模型。Gorilla使LLM能够通过调用API使用工具。给定一个自然语言查询,Gorilla会生成语义和语法正确的API调用。借助Gorilla,我们首次展示了如何使用LLM准确调用1600多个(并在不断增加)API,同时减少幻觉现象。我们还发布了APIBench,这是目前最大的API集合,经过精心挑选,易于训练!
�� GoEx:一个用于执行LLM生成的操作(如代码和API调用)的运行时 GoEx提出了“撤销”和“损害限制”抽象,以减轻在LLM驱动系统中发生意外操作的风险。
�� 伯克利函数调用排行榜 模型在函数调用方面的表现如何?�� 发布伯克利函数调用排行榜。
�� Gorilla OpenFunctions v2 为开源LLM设定了新的SOTA �� 与GPT-4表现相当 �� 支持更多语言。
�� Gorilla OpenFunctions 是函数调用的替代方案!
�� Gorilla 是 Apache 2.0 许可的 Gorilla基于MPT和Falcon进行微调,您可以在商业上使用Gorilla,无需承担任何义务! ⛳
官网地址:Gorilla
排行榜地址:Berkeley Function Calling Leaderboard (aka Berkeley Tool Calling Leaderboard)
GitHub地址:https://github.com/ShishirPatil/gorilla
1、新闻
⏰: [04/01] 在伯克利函数调用排行榜中引入成本和延迟指标!
�� [03/15] RAFT: 适应领域特定RAG的语言模型上线![MSFT-Meta博客] [伯克利博客]
�� [02/26] 伯克利函数调用排行榜上线!
�� [02/25] OpenFunctions v2为开源LLM设定了新的SOTA!
�� [11/16] 很高兴发布Gorilla OpenFunctions
�� [06/29] 发布了gorilla-cli,用于您的CLI的LLM!
�� [06/06] 发布了商业可用的Apache 2.0许可Gorilla模型
�� [05/30] 提供了与Gorilla聊天的CLI界面!
�� [05/28] 发布了Torch Hub和TensorFlow Hub模型!
�� [05/27] 发布了第一个Gorilla模型!Colab或��!
�� [05/27] 我们发布了APIZoo贡献指南,以便社区贡献API!
�� [05/25] 我们发布了APIBench数据集和Gorilla的评估代码!
2、Berkeley Function-Calling Leaderboard
伯克利函数调用排行榜(也称为伯克利工具调用排行榜)评估LLM准确调用函数(即工具)的能力。该排行榜由真实世界数据组成,并将定期更新。有关评估数据集和方法的更多信息,请参阅我们的博客文章和代码发布。
Gorilla的安装和使用方法
1、安装
通过pip install gorilla-cli在您的CLI中使用Gorilla
pip install gorilla-cli
2、使用方法
推理
在本地运行Gorilla inference/README.md
评估
我们提供了带有和不带检索器的APIBench的提示和响应,以及抽象语法树(AST)匹配评估脚本 eval。
代码库组织
我们的代码库组织如下。
berkeley-function-call-leaderboard文件夹包含用于评估模型函数调用能力的脚本。
data文件夹包含所有评估API(APIBench)和社区贡献的API。
eval文件夹包含我们所有的评估代码以及Gorilla的输出。
inference文件夹包含所有在本地运行Gorilla的推理代码。
openfunctions文件夹包含OpenFunctions模型的推理代码。
对于我们的数据集集合,所有1640个API文档都位于data/api。我们还包括了self-instruct创建的APIBench数据集data/apibench。对于评估,我们将其转换为LLM友好的聊天格式,问题在eval/eval-data/questions,相应的响应在eval/eval-data/responses。我们还包括了评估脚本在eval/eval-scripts中。这些内容完全足以让您自行训练Gorilla,并重现我们的结果。有关如何使用我们的评估管道的详细信息,请参阅evaluation。
此外,我们已发布所有模型权重。gorilla-7b-hf-v0 允许您调用925多个Hugging Face API。类似地,gorilla-7b-tf-v0 和 gorilla-7b-th-v0 分别包含626个(详尽的)Tensorflow v2和94个(详尽的)Torch Hub API。gorilla-mpt-7b-hf-v0 和 gorilla-falcon-7b-hf-v0 是基于Apache 2.0许可的模型(可商业使用),分别在MPT-7B和Falcon-7B上进行了微调。我们将尽快发布一个结合了所有三个模型并具有通用聊天功能和社区贡献API的模型,以便扩展我们的服务基础设施。您可以按照inference/子目录中的说明在本地运行Gorilla,我们还提供了一个托管的Gorilla聊天完成API(请参阅Colab)!如果您有任何建议,或者遇到任何问题,请随时通过Discord或电子邮件与我们联系,或者在Github上提交问题。
gorilla
gorilla
|-- berkeley-function-call-leaderboard (data and scripts to eval model's function-calling ability)
├── data
│ ├── api (TF/HF/TH APIs used in generating apibench)
│ │ ├── {api_name}_api.jsonl
│ ├── apibench (Evaluating LLM models) v-1.0
│ │ ├── {api_name}_train.jsonl, {api_name}_eval.jsonl
| |── apizoo (Contributed by the community - evolving)
│ | ├── username1.json
│ │ ├── username2.json
│ │ ├── ...
├── eval
│ ├── README.md
│ ├── get_llm_responses.py
│ ├── eval-scripts
│ │ ├── ast_eval_{api_name}.py
│ ├── eval-data
│ │ ├── questions
│ │ │ ├── API name
│ │ │ │ ├── questions_{api_name}_{eval_metric}.jsonl
│ │ ├── responses
│ │ │ ├── API name
│ │ │ │ ├── responses_{api_name}_Gorilla_FT_{eval_metric}.jsonl
│ │ │ │ ├── responses_{api_name}_Gorilla_RT_{eval_metric}.jsonl
├── inference
│ ├── README.md
│ ├── serve
│ │ ├── gorilla_cli.py
│ │ ├── conv_template.py
├── openfunctions
| ├── openfunctions-v1 (data and scripts for openfunctions-v0 and v1)
| ├── utils (parsing script for openfunctions-v2)
| ├── inference_* (openfunctions-v2 hosted/local inference code)
Gorilla的案例应用
持续更新中……