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 auftrue 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:
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 alstool.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 aufreturn-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.