tool_use-Blöcke parsen, tool_result-Antworten formatieren und Fehler mit is_error behandeln.
Diese Seite behandelt den Lebenszyklus eines Tool-Aufrufs: das Lesen von tool_use-Blöcken aus Claudes Antwort, das Formatieren von tool_result-Blöcken in deiner Antwort und das Signalisieren von Fehlern. Für die SDK-Abstraktion, die dies automatisch übernimmt, siehe Tool Runner.
Die Antwort hat einen stop_reason von tool_use und einen oder mehrere tool_use-Inhaltsblöcke, die Folgendes enthalten:
id: Eine eindeutige Kennung für diesen bestimmten Tool-Use-Block. Diese wird später verwendet, um die Tool-Ergebnisse zuzuordnen.
name: Der Name des verwendeten Tools.
input: Ein Objekt mit der Eingabe, die an das Tool übergeben wird, entsprechend dem input_schema des Tools.
Wenn du eine Tool-Use-Antwort für ein Client-Tool erhältst, solltest du:
name, id und input aus dem tool_use-Block extrahieren.
Das eigentliche Tool in deiner Codebasis ausführen, das diesem Tool-Namen entspricht, und dabei den Tool-input übergeben.
Die Konversation fortsetzen, indem du eine neue Nachricht mit der roleuser und einem content-Block sendest, der den Typ tool_result und die folgenden Informationen enthält:
tool_use_id: Die id der Tool-Use-Anfrage, für die dies ein Ergebnis ist.
content (optional): Das Ergebnis des Tools, als String (zum Beispiel "content": "15 degrees"), als Liste verschachtelter Inhaltsblöcke (zum Beispiel "content": [{"type": "text", "text": "15 degrees"}]) oder als Liste von Dokumentblöcken (zum Beispiel "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Diese Inhaltsblöcke können die Typen text, image, document oder search_result verwenden.
is_error (optional): Auf true setzen, wenn die Tool-Ausführung zu einem Fehler geführt hat.
Nach Erhalt des Tool-Ergebnisses verwendet Claude diese Informationen, um die Generierung einer Antwort auf den ursprünglichen Benutzer-Prompt fortzusetzen.
Ergebnisse von Server-Tools verarbeiten
Claude führt das Tool intern aus und bindet die Ergebnisse direkt in seine Antwort ein, ohne dass eine zusätzliche Benutzerinteraktion erforderlich ist.
Fehler mit is_error behandeln
Es gibt einige verschiedene Arten von Fehlern, die bei der Verwendung von Tools mit Claude auftreten können: