Was this page helpful?
Tool Runner verwaltet die agentengesteuerte Schleife, Fehlerbehandlung und Typsicherheit, damit Sie das nicht tun müssen. Verwenden Sie die manuelle Schleife nur, wenn Sie eine Genehmigung durch einen Menschen, benutzerdefinierte Protokollierung oder bedingte Ausführung benötigen. Verfügbar in Python-, TypeScript- und Ruby-SDKs.
Der Tool Runner bietet eine sofort einsatzbereite Lösung für die Ausführung von Tools mit Claude. Anstatt Tool-Aufrufe, Tool-Ergebnisse und Gesprächsverwaltung manuell zu handhaben, führt der Tool Runner automatisch folgende Aufgaben aus:
Verwenden Sie den Tool Runner für die meisten Tool-Use-Implementierungen.
Der Tool Runner befindet sich derzeit in der Beta-Phase und ist in den Python-, TypeScript- und Ruby-SDKs verfügbar.
Automatische Kontextverwaltung mit Komprimierung
Der Tool Runner unterstützt automatische Komprimierung, die Zusammenfassungen generiert, wenn die Token-Nutzung einen Schwellenwert überschreitet. Dies ermöglicht es langfristigen agentengesteuerten Aufgaben, über die Grenzen des Kontextfensters hinaus fortzufahren.
Definieren Sie Tools mit den SDK-Helfern und verwenden Sie dann den Tool Runner, um sie auszuführen.
Die Tool-Funktion muss einen Content-Block oder ein Content-Block-Array zurückgeben, einschließlich Text-, Bild- oder Dokument-Blöcke. Dies ermöglicht es Tools, umfangreiche, multimodale Antworten zurückzugeben. Zurückgegebene Strings werden in einen Text-Content-Block konvertiert. Wenn Sie ein strukturiertes JSON-Objekt an Claude zurückgeben möchten, codieren Sie es vor der Rückgabe als JSON-String. Zahlen, Boolesche Werte oder andere nicht-String-Primitive müssen ebenfalls in Strings konvertiert werden.
Der Tool Runner ist ein iterierbares Objekt, das Nachrichten von Claude liefert. Dies wird oft als "Tool-Call-Schleife" bezeichnet. Bei jeder Iteration prüft der Runner, ob Claude einen Tool-Use angefordert hat. Wenn ja, ruft er das Tool auf und sendet das Ergebnis automatisch an Claude zurück, dann liefert er die nächste Nachricht von Claude, um Ihre Schleife fortzusetzen.
Sie können die Schleife bei jeder Iteration mit einer break-Anweisung beenden. Der Runner wird in einer Schleife ausgeführt, bis Claude eine Nachricht ohne Tool-Use zurückgibt.
Wenn Sie keine Zwischennachrichten benötigen, können Sie die endgültige Nachricht direkt abrufen:
Innerhalb der Schleife können Sie die nächste Anfrage des Tool Runners an die Messages API vollständig anpassen. Der Runner hängt Tool-Ergebnisse automatisch an den Nachrichtenverlauf an, daher müssen Sie diese nicht manuell verwalten. Sie können das Tool-Ergebnis optional zur Protokollierung oder zum Debuggen inspizieren und die Request-Parameter vor dem nächsten API-Aufruf ändern.
Wenn ein Tool eine Ausnahme wirft, fängt der Tool Runner sie ab und gibt den Fehler an Claude als Tool-Ergebnis mit is_error: true zurück. Standardmäßig wird nur die Fehlermeldung einbezogen, nicht die vollständige Stack-Trace.
Um vollständige Stack-Traces und Debug-Informationen anzuzeigen, setzen Sie die Umgebungsvariable ANTHROPIC_LOG:
# View info-level logs including tool errors
export ANTHROPIC_LOG=info
# View debug-level logs for more verbose output
export ANTHROPIC_LOG=debugWenn aktiviert, protokolliert das SDK vollständige Ausnahmeinformationen (mit Pythons logging-Modul, der Konsole in TypeScript oder Rubys Logger), einschließlich der vollständigen Stack-Trace, wenn ein Tool fehlschlägt.
Standardmäßig werden Tool-Fehler an Claude zurückgegeben, der dann angemessen reagieren kann. Möglicherweise möchten Sie jedoch Fehler erkennen und anders handhaben, z. B. um die Ausführung früh zu beenden oder benutzerdefinierte Fehlerbehandlung zu implementieren.
Verwenden Sie die Tool-Response-Methode, um Tool-Ergebnisse abzufangen und auf Fehler zu prüfen, bevor sie an Claude gesendet werden:
Sie können Tool-Ergebnisse ändern, bevor sie an Claude zurückgesendet werden. Dies ist nützlich, um Metadaten wie cache_control hinzuzufügen, um Prompt-Caching auf Tool-Ergebnisse zu aktivieren, oder um die Tool-Ausgabe zu transformieren.
Verwenden Sie die Tool-Response-Methode, um das Tool-Ergebnis zu erhalten, ändern Sie es dann, bevor der Runner fortfährt. Ob Sie das geänderte Ergebnis explizit anhängen oder es an Ort und Stelle mutieren, hängt vom SDK ab; siehe die Code-Kommentare in jedem Tab.
Das Hinzufügen von cache_control zu Tool-Ergebnissen ist besonders nützlich, wenn Tools große Datenmengen zurückgeben (wie Dokumentsuchergebnisse), die Sie für nachfolgende API-Aufrufe zwischenspeichern möchten. Weitere Informationen zu Caching-Strategien finden Sie unter Prompt-Caching.
Aktivieren Sie Streaming, um Ereignisse zu empfangen, sobald sie ankommen. Jede Iteration liefert ein Stream-Objekt, das Sie für Ereignisse iterieren können.