Doorgaan naar hoofdinhoud

Gorilla: Hoe Retrieval-Aware Training LLM API-hallucinaties vermindert van 78% naar 11%

· 7 min leestijd
Mike Thrift
Mike Thrift
Marketing Manager

Ik lees de Gorilla-paper (Patil et al., 2023, arXiv:2305.15334, NeurIPS 2024) omdat deze zich op het snijvlak bevindt van twee problemen waar ik voortdurend tegenaan loop: hoe zorgen we ervoor dat een LLM-agent de juiste tool aanroept met de juiste argumenten, en hoe houden we dat vermogen in stand terwijl API's veranderen? De antwoorden hier zijn praktisch en de cijfers zijn verrassend sterk — maar de aannames in de evaluatie verdienen meer aandacht dan ze doorgaans krijgen.

De paper

2026-05-03-gorilla-llm-retrieval-augmented-api-calling

Gorilla, door Shishir G. Patil, Tianjun Zhang, Xin Wang en Joseph E. Gonzalez van UC Berkeley, richt zich op een concreet probleem: state-of-the-art LLM's hallucineren bij API-aanroepen. Wanneer gevraagd wordt om code te schrijven die een specifieke bibliotheekfunctie aanroept, genereert GPT-4 (medio 2023) vaak plausibel ogende maar foutieve functiesignaturen, niet-bestaande modellen of verouderde argumentnamen. Gorilla is een LLaMA-gebaseerd model met 7 miljard parameters dat specifiek is gefinetuned om nauwkeurige API-aanroepen te genereren, getraind met een techniek die de auteurs Retriever-Aware Training (RAT) noemen. Het idee is simpel: tijdens de training krijgt het model de opgehaalde API-documentatie te zien naast de gebruikersvraag, geformatteerd als "Gebruik deze API-documentatie ter referentie: <retrieved_API_doc_JSON>". Dit leert het model zowel om documentatie te lezen als om opgehaalde context meer te vertrouwen dan zijn parametrisch geheugen — een eigenschap die zich terugbetaalt tijdens inference wanneer documentatie is gewijzigd.

De evaluatiedataset, APIBench, omvat 925 HuggingFace Model Hub API's, 95 TorchHub API's en 696 TensorFlow Hub API's, met tien synthetische instructie-vragen gegenereerd per API via self-instruct. De evaluatiemethode is AST sub-tree matching — de gegenereerde API-aanroep wordt geparsed en gecontroleerd op functionele correctheid — wat voor het eerst in deze context ook een principiële meting van het hallucinatiepercentage mogelijk maakt.

Belangrijke ideeën

  • RAT maakt documentatie leesbaar tijdens inference. Door te trainen op prompts die opgehaalde documentatie bevatten, leert Gorilla om de opgehaalde tekst te volgen in plaats van API-details uit de gewichten op te halen. Dit betekent dat het model actueel blijft wanneer API's evolueren, zonder hertraining.
  • Zero-shot nauwkeurigheid: Gorilla 59–84%, GPT-4 18–39%. Op TorchHub behaalt Gorilla 59,13% tegenover 38,70% voor GPT-4. Op HuggingFace is het 71,68% versus 19,80%. Op TensorFlow Hub 83,79% versus 18,20%. De marge is het grootst waar de API-ruimte het meest divers is.
  • Hallucinatiereductie is het belangrijkste resultaat. Gorilla's hallucinatiepercentage is 6,98% op TorchHub, 10,95% op HuggingFace en 5,40% op TensorFlow Hub. De percentages van GPT-4 variëren van 36,55% tot 78,65% op dezelfde datasets.
  • De 'oracle retriever' is het plafond. Met het correcte brondocument opgehaald (oracle-modus) bereikt de nauwkeurigheid 67–94%. Dit is het theoretisch beste geval voor elk RAG-gebaseerd systeem, en de kloof tussen zero-shot Gorilla en dit plafond is de ruimte die beschikbaar is voor verbetering van de retriever.
  • Echte retrievers schieten tekort. Het overschakelen van de oracle naar GPT-Index tijdens de evaluatie verlaagt de nauwkeurigheid met 29,20%; BM25 verlaagt deze met 52,27%. De robuustheid van het model tegen ruis in de retrieval is reëel, maar niet onbeperkt.
  • AST-evaluatie generaliseert. De sub-tree matching-aanpak meet of de gegenereerde aanroep functioneel correct is, niet alleen syntactisch vergelijkbaar. Dit is de juiste metriek voor elke taak waarbij de uitvoer code is die daadwerkelijk moet worden uitgevoerd.

Wat standhoudt — en wat niet

De kernclaim blijft overeind: fine-tuning op prompts die zijn aangevuld met documentatie verbetert de nauwkeurigheid van API-aanroepen aanzienlijk en vermindert hallucinaties. De AST-evaluatiemethodologie is oprecht vernieuwend en duidelijk beter dan string-matching of menselijke evaluatie op schaal. RAT is een helder, reproduceerbaar idee.

Waar ik sceptisch over ben, is de reikwijdte van de benchmark. Alle drie de datasets — HuggingFace, TorchHub, TensorFlow Hub — zijn ML-modelregisters met een zeer regelmatige API-structuur: je laadt een model op naam, mogelijk met een paar keyword-argumenten, en roept een predict-achtige methode aan. De instructies zijn synthetisch gegenereerd, wat betekent dat de testdistributie nauw verwant is aan de trainingsdistributie. Een model dat is getuned op ML API-documentatie via self-instruct, en wordt geëvalueerd op self-instruct-vragen voor ML API's, wordt niet getest op de complexiteit die in productie voorkomt: ambigue verzoeken, workflows met meerdere stappen, type-coërcitie van argumenten, authenticatie, rate-limits of foutherstel.

De verslechtering door retrieval is ook groter dan de paper suggereert. Een daling van 52% in nauwkeurigheid met BM25-retrieval is catastrofaal. Als de retriever die je in productie inzet meer lijkt op BM25 dan op een oracle, verdampen de winsten. De auteurs erkennen dit gat, maar bieden geen pad om het te dichten.

Ten slotte is het model zelf een fine-tune van LLaMA 7B. De vergelijking met zero-shot GPT-4 is opvallend, maar niet helemaal eerlijk: GPT-4 is niet getraind om opgehaalde documentatie te gebruiken. Een RAG-augmented GPT-4 met een systeemprompt die is ontworpen om API-docs te lezen, zou het gat vrijwel zeker aanzienlijk dichten.

Waarom dit belangrijk is voor AI in de financiële sector

Het RAT-patroon is direct toepasbaar op Beancount write-back agents. Een Beancount-agent moet CLI-commando's (bean-query, bean-report), Python API's (beancount.loader, beancount.core) en de beancount-ledger FastAPI-service aanroepen — elk met specifieke argument-semantiek die wel gedocumenteerd is, maar niet noodzakelijkerwijs in de trainingsgegevens van het model zit. De Gorilla-aanpak zegt: haal het relevante documentatiefragment op tijdens inference, injecteer het in de context en train het model om dit te lezen en te volgen.

De hallucinatiecijfers zijn het meest nuttige signaal voor een financiële context. Een hallucinatiepercentage van 10% op ML-modelnamen is irritant. Een hallucinatiepercentage van 10% op ledger-mutatie-aanroepen — foutieve accountnamen, verkeerde valutacodes, omgekeerde debet/credit-tekens — is een correctheidsprobleem. De implicatie is dat zelfs een op Gorilla-wijze getrainde agent een validator tijdens runtime nodig heeft voordat een mutatie wordt definitief wordt gemaakt, consistent met wat CRITIC (LOG-012) liet zien over interactieve tool-kritiek. De bevinding over retrieval-verslechtering versterkt dit: als real-world retrieval de nauwkeurigheid halveert, kan het vangnet niet alleen afhankelijk zijn van de kwaliteit van de retrieval.

De AST-evaluatiemethodologie vertaalt zich natuurlijk. Beancount-transacties hebben een parseerbare structuur, en het controleren van gegenereerde instructies tegen een schema met behulp van AST-matching is precies het soort lichtgewicht validator dat zou kunnen draaien in een pre-commit hook of agent-loop.

Wat je nu kunt lezen

  • ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs (arXiv:2307.16789) — breidt het API-aanroepprobleem uit naar 16.000 echte REST API's met multi-step tool-gebruiksketens; pakt direct de beperking van Gorilla aan die alleen enkelvoudige aanroepen naar ML-registers evalueert.
  • De Berkeley Function Calling Leaderboard (BFCL) (OpenReview:2GmDdhBdDk, NeurIPS 2024 poster) — de directe evolutie van Gorilla naar een actueel leaderboard dat bijhoudt hoe geavanceerde modellen verbeteren in function calling; V3 voegt interacties met meerdere beurten toe, V4 voegt agentische webzoekopdrachten toe.
  • API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs — evalueert LLM's op 73 API's in een breder scala aan domeinen, waaronder financiën en webdiensten, met multi-turn tool-gebruik; een nuttige aanvulling op de nauwere ML-focus van APIBench.