Diese Seite behandelt den Tool-Call-Lebenszyklus: Lesen von tool_use-Blöcken aus Claudes Antwort, Formatieren von tool_result-Blöcken in Ihrer Antwort und Signalisieren von Fehlern. Für die SDK-Abstraktion, die dies automatisch verarbeitet, siehe Tool Runner.
Einfacher mit Tool Runner: Die auf dieser Seite beschriebene manuelle Tool-Verarbeitung wird automatisch von Tool Runner verwaltet. Verwenden Sie diese Seite, wenn Sie benutzerdefinierte Kontrolle über die Tool-Ausführung benötigen.
Claudes Antwort unterscheidet sich je nachdem, ob ein Client- oder Server-Tool verwendet wird.
Die Antwort hat einen stop_reason von tool_use und einen oder mehrere tool_use-Inhaltsblöcke, die Folgendes enthalten:
id: Ein eindeutiger Bezeichner für diesen bestimmten Tool-Use-Block. Dies wird später verwendet, um die Tool-Ergebnisse abzugleichen.name: Der Name des verwendeten Tools.input: Ein Objekt, das die an das Tool übergebene Eingabe enthält und dem input_schema des Tools entspricht.Wenn Sie eine Tool-Use-Antwort für ein Client-Tool erhalten, sollten Sie:
name, id und input aus dem tool_use-Block.input.role von user und einem content-Block mit dem tool_result-Typ und den folgenden Informationen senden:
tool_use_id: Die id der Tool-Use-Anfrage, für die dies ein Ergebnis ist.content: Das Ergebnis des Tools als Zeichenkette (z. B. ), eine Liste verschachtelter Inhaltsblöcke (z. B. ) oder eine Liste von Dokumentblöcken (z. B. ). Diese Inhaltsblöcke können die Typen , oder verwenden.Wichtige Formatierungsanforderungen:
Beispielsweise führt dies zu einem 400-Fehler:
{
"role": "user",
"content": [
{ "type": "text", "text": "Here are the results:" }, // ❌ Text vor tool_result
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
]
}Nach Erhalt des Tool-Ergebnisses wird Claude diese Informationen verwenden, um eine Antwort auf die ursprüngliche Benutzereingabe zu generieren.
Claude führt das Tool intern aus und integriert die Ergebnisse direkt in seine Antwort, ohne dass zusätzliche Benutzerinteraktion erforderlich ist.
Unterschiede zu anderen APIs
Im Gegensatz zu APIs, die Tool-Use trennen oder spezielle Rollen wie tool oder function verwenden, integriert die Claude API Tools direkt in die user- und assistant-Nachrichtenstruktur.
Nachrichten enthalten Arrays von text-, image-, tool_use- und tool_result-Blöcken. user-Nachrichten enthalten Client-Inhalte und tool_result, während assistant-Nachrichten KI-generierte Inhalte und tool_use enthalten.
Es gibt verschiedene Arten von Fehlern, die bei der Verwendung von Tools mit Claude auftreten können:
Was this page helpful?
"content": "15 degrees""content": [{"type": "text", "text": "15 degrees"}]"content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]textimagedocumentis_error (optional): Setzen Sie auf true, wenn die Tool-Ausführung zu einem Fehler führte.Dies ist korrekt:
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
{ "type": "text", "text": "What should I do next?" } // ✅ Text nach tool_result
]
}Wenn Sie einen Fehler wie „tool_use ids were found without tool_result blocks immediately after" erhalten, überprüfen Sie, ob Ihre Tool-Ergebnisse korrekt formatiert sind.