Zum Hauptinhalt springen
Definiere ein Tool, wenn ein Agent Anwendungsdaten lesen, einen internen Dienst aufrufen oder eine Aktion ausführen muss. Das Modell ruft das Tool über seine ID auf; das SDK prüft die Argumente, führt deinen Code in deinem Prozess aus und sendet das Ergebnis im nächsten Turn zurück.

Ein Tool definieren

Tool-Felder

Schemas nehmen den nativen Validator der jeweiligen Sprache: in TypeScript eine Funktion oder ein Objekt mit parse() oder safeParse(); in Python ein Callable, ein Pydantic-Modell oder ein Objekt mit parse oder safe_parse; sonst eine Funktion oder ein Callable, das den Wert zurückgibt oder eine Ausnahme wirft.

Was ein Timeout bewirkt

Ein Aufruf einer Tool-ID, die nicht in der aktuellen Tool-Liste steht, lässt den Lauf fehlschlagen (unknown tool in Go, Unknown tool '<name>' in C#, PHP, Ruby und Java, Unknown tool: <name> als AgentError in Rust). In TypeScript mit return-to-model werden ein unbekanntes Tool oder unlesbare Argumente stattdessen wie ein Tool-Fehler beantwortet.

Freigabe verlangen

Setze das Freigabe-Flag eines Tools auf true oder gib ihm eine Funktion, die pro Aufruf entscheidet. Eine Freigabefunktion auf Agentenebene, sofern die Sprache eine hat, gilt für jedes Tool und überschreibt beides. Ein freigabepflichtiger Aufruf pausiert den Lauf mit dem Status waiting_for_human; wie du ihn per Call-ID freigibst oder ablehnst, steht unter Status und Freigabe.

Einen Aufruf an einen Menschen oder ein anderes System übergeben

Ein manuelles Tool hat keinen Executor: Deine Anwendung, eine Warteschlange oder ein anderer Dienst erledigt die Arbeit. Ein interaktives Tool führt einen Hook aus, der für einen Menschen pausieren kann. Beide pausieren den Lauf, bis du ihn mit einer Tool-Ausgabe für die Call-ID fortsetzt; siehe Status und Freigabe. Gibt der interaktive Hook stattdessen einen Wert zurück, wird dieser sofort zum Tool-Ergebnis. Nachdem du fortgesetzt hast, kann onResponseReceived (oder das Gegenstück der Sprache) die gelieferte Ausgabe validieren oder umwandeln, bevor der Ausgabe-Validator sie prüft. Das externe Tool in Rust nimmt keinen Executor:
Wenn ein Modell-Turn automatische und ausstehende Tools mischt, führt die Laufzeit die automatischen aus, bevor sie die Pause zurückgibt.

Fortschritt melden und Kontext aktualisieren

Ein Tool kann während der Arbeit vorläufige Ergebnisse veröffentlichen und den Anwendungskontext für spätere Turns ersetzen. Fortschritt erscheint als tool.preliminary_result-Events (siehe Streaming) und wird gegen den Event-Validator geprüft, wenn du einen setzt.

Tool-Fehler abfangen

Standardmäßig lässt ein Fehler aus einem Tool den Lauf fehlschlagen und wird erneut geworfen. Setze die Fehlerrichtlinie des Tools auf return-to-model, um den Fehler als Ergebnis des Tools zurückzusenden ({"error": "..."}), damit das Modell etwas anderes versuchen kann. Behalte den Standard für unsichere oder nicht behebbare Fehler bei. In TypeScript begrenzt toolExecution.maxOutputChars, wie viel von der Ausgabe eines Tools das Modell sieht; bei längerer Ausgabe bleiben Anfang und Ende um einen Hinweis herum erhalten.

Tools parallel ausführen

Wenn ein Modell-Turn mehrere unabhängige Tools aufruft, setze ein Parallelitätslimit, um sie gleichzeitig auszuführen. Go, C#, Ruby und Java führen Tools nacheinander aus, bis du das tust. Ergebnisse werden in der Reihenfolge angehängt, in der das Modell die Aufrufe gemacht hat, unabhängig davon, in welcher Reihenfolge sie fertig werden. Wenn in Go und C# mehrere parallele Tools den Kontext setzen, gewinnt das letzte in Aufrufreihenfolge.
Zuletzt geändert am 5. November 2026