gorilla README

The project's README from github.com/ShishirPatil/gorilla. As one markdown file: README.md.

Gorilla: Large Language Model Connected with Massive APIs

Arxiv Discord Gorilla Website Gorilla Blog Hugging Face

Latest Updates

📢 Check out our detailed Berkeley Function Calling Leaderboard changelog (Last updated: Last Updated) for the latest dataset / model updates to the Berkeley Function Calling Leaderboard!

About

Gorilla enables LLMs to use tools by invoking APIs. Given a natural language query, Gorilla comes up with the semantically- and syntactically- correct API to invoke.

With Gorilla, we are the first to demonstrate how to use LLMs to invoke 1,600+ (and growing) API calls accurately while reducing hallucination. This repository contains inference code for running Gorilla finetuned models, evaluation code for reproducing results from our paper, and APIBench - the largest collection of APIs, curated and easy to be trained on!

Since our initial release, we've served ~500k requests and witnessed incredible adoption by developers worldwide. The project has expanded to include tools, evaluations, leaderboard, end-to-end finetuning recipes, infrastructure components, and the Gorilla API Store:

Project Type Description (click to expand)
Gorilla Paper 🤖 Model
📝 Fine-tuning
📚 Dataset
📊 Evaluation
🔧 Infra
Large Language Model Connected with Massive APIs• Novel finetuning approach for API invocation
• Evaluation on 1,600+ APIs (APIBench)
• Retrieval-augmented training for test-time adaptation
Gorilla OpenFunctions-V2 🤖 Model
Drop-in alternative for function calling, supporting multiple complex data types and parallel execution• Multiple & parallel function execution with OpenAI-compatible endpoints
• Native support for Python, Java, JavaScript, and REST APIs with expanded data types
• Function relevance detection to reduce hallucinations
• Enhanced RESTful API formatting capabilities
• State-of-the-art performance among open-source models
Berkeley Function Calling Leaderboard (BFCL) 📊 Evaluation
🏆 Leaderboard
🔧 Function Calling Infra
📚 Dataset
Comprehensive evaluation of function-calling capabilities• V1: Expert-curated dataset for evaluating single-turn function calling
• V2: Enterprise-contributed data for real-world scenarios
• V3: Multi-turn & multi-step function calling evaluation
• Cost and latency metrics for all models
• Interactive API explorer for testing
• Community-driven benchmarking platform
Agent Arena 📊 Evaluation
🏆 Leaderboard
Compare LLM agents across models, tools, and frameworks• Head-to-head agent comparisons with ELO rating system
• Framework compatibility testing (LangChain, AutoGPT)
• Community-driven evaluation platform
• Real-world task performance metrics
Gorilla Execution Engine (GoEx) 🔧 Infra
Runtime for executing LLM-generated actions with safety guarantees• Post-facto validation for verifying LLM actions after execution
• Undo capabilities and damage confinement for risk mitigation
• OAuth2 and API key authentication for multiple services
• Support for RESTful APIs, databases, and filesystem operations
• Docker-based sandboxed execution environment
Retrieval-Augmented Fine-tuning (RAFT) 📝 Fine-tuning
🤖 Model
Fine-tuning LLMs for robust domain-specific retrieval• Novel fine-tuning recipe for domain-specific RAG
• Chain-of-thought answers with direct document quotes
• Training with oracle and distractor documents
• Improved performance on PubMed, HotpotQA, and Gorilla benchmarks
• Efficient adaptation of smaller models for domain QA
Gorilla CLI 🤖 Model
🔧 Local CLI Infra
LLMs for your command-line interface• User-friendly CLI tool supporting ~1500 APIs (Kubernetes, AWS, GCP, etc.)
• Natural language command generation with multi-LLM fusion
• Privacy-focused with explicit execution approval
• Command history and interactive selection interface
Gorilla API Zoo 📚 Dataset
A community-maintained repository of up-to-date API documentation• Centralized, searchable index of APIs across domains
• Structured documentation format with arguments, versioning, and examples
• Community-driven updates to keep pace with API changes
• Rich data source for model training and fine-tuning
• Enables retrieval-augmented training and inference
• Reduces hallucination through up-to-date documentation

Getting Started

Quick Start

Try Gorilla in your browser:

Installation Options

  1. Gorilla CLI - Fastest way to get started
pip install gorilla-cli
gorilla generate 100 random characters into a file called test.txt

Learn more about Gorilla CLI →

  1. Run Gorilla Locally
git clone https://github.com/ShishirPatil/gorilla.git
cd gorilla/inference

Detailed local setup instructions →

  1. Use OpenFunctions
import openai

openai.api_key = "EMPTY"
openai.api_base = "http://luigi.millennium.berkeley.edu:8000/v1"

# Define your functions
functions = [{
    "name": "get_current_weather",
    "description": "Get weather in a location",
    "parameters": {
        "type": "object",
        "properties": {
            "location": {"type": "string"},
            "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
        },
        "required": ["location"]
    }
}]

# Make API call
completion = openai.ChatCompletion.create(
    model="gorilla-openfunctions-v2",
    messages=[{"role": "user", "content": "What's the weather in San Francisco?"}],
    functions=functions
)

OpenFunctions documentation →

🔧 Other Quick Starts

Frequently Asked Questions

  1. I would like to use Gorilla commercially. Is there going to be an Apache 2.0 licensed version?

Yes! We now have models that you can use commercially without any obligations.

  1. Can we use Gorilla with other tools like Langchain etc?

Absolutely! You've highlighted a great aspect of our tools. Gorilla is an end-to-end model, specifically tailored to serve correct API calls (tools) without requiring any additional coding. It's designed to work as part of a wider ecosystem and can be flexibly integrated within agentic frameworks and other tools.

Langchain, is a versatile developer tool. Its "agents" can efficiently swap in any LLM, Gorilla included, making it a highly adaptable solution for various needs.

The beauty of these tools truly shines when they collaborate, complementing each other's strengths and capabilities to create an even more powerful and comprehensive solution. This is where your contribution can make a difference. We enthusiastically welcome any inputs to further refine and enhance these tools.

Check out our blog on How to Use Gorilla: A Step-by-Step Walkthrough to see all the different ways you can integrate Gorilla in your projects.

Project Roadmap

In the immediate future, we plan to release the following:

License

Gorilla is Apache 2.0 licensed, making it suitable for both academic and commercial use.

Contact

Citation

@article{patil2023gorilla,
  title={Gorilla: Large Language Model Connected with Massive APIs},
  author={Shishir G. Patil and Tianjun Zhang and Xin Wang and Joseph E. Gonzalez},
  year={2023},
  journal={arXiv preprint arXiv:2305.15334},
} 

gorilla (ShishirPatil/gorilla)

Searching Database…

13.1K ·GitHub
What is this?Gorilla is a Berkeley research project that trains and evaluates LLMs for calling APIs and tools correctly from natural-language requests. It has grown into a suite covering finetuned models (OpenFunctions), the Berkeley Function Calling Leaderboard (BFCL), an execution runtime (GoEx), a RAG fine-tuning recipe (RAFT) and a CLI tool.
Is this one tool, or a bundle of several related projects?It is an umbrella repo for several independent but connected projects: the Gorilla/OpenFunctions models, the BFCL benchmark and leaderboard, the GoEx execution runtime, the RAFT fine-tuning recipe, Gorilla CLI, and the API Zoo dataset.
How do I try it without installing anything?You can try the base Gorilla model and OpenFunctions through hosted Colab and Gradio demos in your browser, or install Gorilla CLI locally for the fastest hands-on start.
Does GoEx need my own API keys to actually run the calls Gorilla generates?Yes — GoEx, the runtime that executes LLM-generated actions, authenticates to the target services itself via OAuth2 or API keys before performing the call.
Do I still need a framework like LangChain to build an actual agent with it?Gorilla only produces the correct API call for a request and doesn't run an agent loop itself, so it's meant to plug into agent frameworks like LangChain rather than replace them.
Is it free to use commercially?Yes, the whole project including the released Gorilla and OpenFunctions models is Apache 2.0 licensed, so it can be used in both academic and commercial settings without extra obligations.
What is the Berkeley Function Calling Leaderboard (BFCL)?It's a comprehensive, community-driven benchmark and leaderboard that compares models' function-calling abilities across single-turn, multi-turn and multi-step scenarios, including cost and latency metrics.
What does GoEx actually do?GoEx is a runtime for safely executing LLM-generated actions such as API calls and code, offering post-facto validation plus undo and damage-confinement mechanisms to limit the risk of autonomous agent mistakes.
What is RAFT?RAFT (Retrieval-Augmented Fine-Tuning) is a recipe for fine-tuning LLMs on domain-specific retrieval-augmented generation, training on oracle and distractor documents with chain-of-thought answers that quote source documents directly.
Can Gorilla CLI help with things beyond calling web APIs, like cloud infrastructure commands?Yes, Gorilla CLI translates natural language into commands for around 1,500 APIs including Kubernetes, AWS and GCP, and requires explicit user approval before running anything.
What are similar projects?NeoHorse, imp, minimind, RSIGame, CLM, Raven, rrsi, XRAG
Size
371.2 MB
Stars
13.1K
Age
3y
Commits · 90 Days