Herhaalde tool-aanroeplussen ontstaan wanneer een agent geen voortgang, mislukking of voltooiing kan herkennen en daarom steeds opnieuw dezelfde actie selecteert.
Een zelfgehoste agent kan steeds dezelfde map doorzoeken, één opdracht opnieuw uitvoeren, hetzelfde bestand opnieuw openen of een identiek API-verzoek indienen, ook al kan het resultaat niet veranderen. De zichtbare lus is slechts het symptoom. De oorzaak kan liggen in het plan van het model, het toolschema, de geretourneerde observatie, de opgeslagen agentstatus, een externe retry-wrapper of een ontbrekende beëindigingsregel. Het is belangrijk om deze lagen van elkaar te onderscheiden, omdat een groter contextvenster of een hogere beurtlimiet de lus kan verlengen zonder deze te verklaren.
Het kenmerk van een lus is een herhaalde actie zonder nieuwe status
Een legitieme agent kan dezelfde tool meerdere keren aanroepen met verschillende argumenten of nadat hij nieuw bewijs heeft ontvangen. Een problematische lus herhaalt een gelijkwaardige aanroep terwijl de taakstatus, beschikbare informatie en voorspelde volgende stap wezenlijk onveranderd blijven.
LangGraph documenteert een recursielimiet voor grafen voor workflows die te veel stappen uitvoeren voordat ze een stopconditie bereiken, waaronder grafen met onbedoelde cycli.
De bepalende observatie is niet het ruwe aantal aanroepen. Het gaat erom of elke aanroep een nieuw feit oplevert, een resource wijzigt, het plan beperkt of de graaf dichter bij een eindtoestand brengt.
Onduidelijke toolresultaten laten de agent twijfelen of er iets is gebeurd
Een tool kan een lege tekenreeks, een generieke succesmelding, een gedeeltelijke payload, een verouderde cachewaarde of een voor mensen leesbare foutmelding retourneren die niet duidelijk aangeeft of de actie is geslaagd, opnieuw kan worden geprobeerd of definitief is mislukt.
Het Model Context Protocol scheidt uitvoeringsfouten van tools door een expliciete foutstatus in het toolresultaat te plaatsen. Wanneer een runtime elke uitkomst omzet in gewone tekst, moet het model afleiden of een nieuwe aanroep kan helpen.
Een lus die hier wordt veroorzaakt, toont meestal dezelfde tool en argumenten na een observatie zonder stabiele voltooiingsmarkering. De tool kan correct werken, terwijl het antwoordcontract te vaag blijft om de agent zijn plan te laten bijwerken.
Statuswijzigingen kunnen buiten de agent slagen, maar in zijn geheugen mislukken
Een bestand kan zijn aangemaakt, een databaserecord kan zijn bijgewerkt of een service kan opnieuw zijn gestart, terwijl de opgeslagen status van de agent nog steeds aangeeft dat de actie in behandeling is. De volgende redeneerstap herhaalt daardoor een al voltooide handeling.
ReAct-achtige agents wisselen redenering, actie en observatie af, zodat observaties het actieplan bijwerken. Als een observatie wordt weggelaten, aan de verkeerde tool-aanroep-ID wordt gekoppeld, wordt afgekapt of niet in de volgende prompt wordt opgenomen, verliest de regelkring het bewijs dat nodig is om verder te gaan.
Deze oorzaak is te onderscheiden van modelverwarring doordat het externe systeem wel voortgang toont, terwijl het aan het model gepresenteerde spoor dat niet doet. Alleen de modelbeurt opnieuw afspelen met de juiste observatie leidt vaak tot een andere volgende actie.
Retry-lagen kunnen één fout veranderen in meerdere identieke aanroepen
Het model kan één toolaanroep aanvragen, terwijl het orkestratieframework, de HTTP-client, de queue-worker of de taskrunner deze meerdere keren opnieuw probeert. Het uiteindelijke spoor kan eruitzien als besluiteloosheid van de agent, ook al vond de herhaling onder de modell aag plaats.
De retry-opties van Tenacity scheiden de beslissing om opnieuw te proberen van stopcondities en retry-predicaten. Een brede retryregel kan deterministische validatiefouten, machtigingsfouten of onjuist gevormde argumenten herhalen die niet kunnen slagen zonder gewijzigde invoer.
Let op identieke request-ID's, tijdstempels, exceptionklassen en aantallen modelbeurten. Meerdere uitvoeringen binnen één agentbeurt wijzen op retries van de runtime; één uitvoering per nieuwe redeneerbeurt wijst eerder op agentplanning of statusinterpretatie.
Zwakke voltooiingscriteria geven de controle steeds terug aan de toolrouter
Een agent kan het gevraagde neveneffect voltooien, maar geen machineleesbare voorwaarde hebben die aangeeft dat de volledige taak klaar is. De router ziet opnieuw een modelbericht waarvoor tools beschikbaar zijn en stuurt de controle terug naar het actieknooppunt.
De OpenAI Agents SDK biedt een grens voor het maximale aantal beurten die een exception veroorzaakt wanneer een run het geconfigureerde aantal beurten overschrijdt.
Een beurtlimiet beperkt de schade, maar identificeert de oorzaak niet. Als het spoor succesvolle tooluitvoer toont, gevolgd door een nieuwe gelijkwaardige aanroep, ontbreekt meestal een overgang naar voltooiing, een route naar het eindantwoord of een statusveld dat de router daadwerkelijk controleert.
Toolbeschrijvingen kunnen na elke fout dezelfde keuze aanmoedigen
Overlappende tools, onvoldoende omschreven foutgedrag en beschrijvingen die mogelijkheden benadrukken zonder beperkingen, kunnen ervoor zorgen dat één tool in elke beurt de beste keuze lijkt.
CrewAI documenteert iteratie- en retrylimieten als afzonderlijke agentinstellingen. Dit weerspiegelt het verschil tussen herhaalde redeneercycli en herhaalde uitvoeringspogingen.
Deze oorzaak is het duidelijkst zichtbaar wanneer de argumenten licht variëren, maar de gekozen tool nooit verandert, zelfs nadat de observatie aantoont dat de tool geen toegang, bereik of vereiste gegevens heeft. De lus is dan een probleem van het selectiebeleid en geen transportretry.
Verlies van context kan het bewijs wissen dat een aanroep al is mislukt
Lange sporen, grote toolschema's, uitvoerige resultaten en contextlimieten van lokale modellen kunnen eerdere foutdetails of voltooiingsmarkeringen buiten de effectieve prompt duwen.
De agent ziet dan de oorspronkelijke taak en de huidige lijst met tools, maar niet de observatie die de voorkeursactie uitsloot. Hij reconstrueert hetzelfde plan op basis van een onvolledige geschiedenis en lijkt zijn eigen poging te vergeten.
Het artikel van ZimaSpace over zelfgehoste automatiseringsagents biedt de aangrenzende context: meer tools vergroten de mogelijkheden, maar betrouwbare orkestratie blijft afhankelijk van compacte status, expliciete uitkomsten en begrensde uitvoering.
Veelgestelde vragen
Is elke herhaalde toolaanroep een oneindige lus?
Nee. Paginering, polling, verwerking in delen en iteratief zoeken kunnen legitiem dezelfde tool opnieuw gebruiken. De belangrijkste test is of de argumenten, het bewijs of de taakstatus tussen de aanroepen veranderen.
Lost het verhogen van het maximale aantal beurten het probleem op?
Nee. Het kan een geldige lange workflow de mogelijkheid geven om te voltooien, maar geeft een lus zonder voortgang ook meer tijd om zich te herhalen. Het spoor heeft nog steeds een verifieerbare voorwaarde voor voortgang of beëindiging nodig.
Kan een sterker model lussen met toolaanroepen elimineren?
Het kan onduidelijke observaties beter interpreteren, maar kan geen status herstellen die nooit is teruggegeven, verborgen retries van de runtime onderscheiden of een stopconditie afdwingen die niet in de workflow aanwezig is.
Tech & AI HUB
Meer om te lezen

Welke functies maken een vertrouwensgrens voor thuis-AI rond gevoelige bestanden mogelijk?
Een vertrouwensgrens voor thuis-AI combineert versleuteling van gegevens in rust, rechten volgens het principe van minimale bevoegdheden, sandboxing tijdens runtime en retrieval met beperkte...

Waardoor krijgen vaak bewerkte bestanden voorrang in privézoekresultaten?
Vaak bewerkte bestanden krijgen een hogere ranking wanneer elke update versheid, chunks, versies of interactiesignalen toevoegt zonder te normaliseren op basis van de bron.

Waardoor verwarren slimme-aanwezigheidsmodellen gasten met bewoners?
Gasten kunnen op bewoners lijken wanneer het systeem activiteitspatronen in het huishouden waarneemt, maar geen stabiel identiteitssignaal heeft voor de persoon die deze veroorzaakt.

