Claude Platform Docs
  • Messages
  • Managed Agents
  • Admin

Search...
⌘K
Erste Schritte
Einführung in ClaudeSchnellstart
Entwickeln mit Claude
FunktionsübersichtVerwendung der Messages APIStop-Gründe und FallbackAblehnungen und FallbackFallback-Guthaben
Modellfähigkeiten
Erweitertes DenkenAdaptives DenkenEffortAufgabenbudgets (Beta)Schnellmodus (Forschungsvorschau)Strukturierte AusgabenZitateStreaming von MessagesBatch-VerarbeitungSuchergebnisseStreaming von AblehnungenMehrsprachige UnterstützungEmbeddings
Tools
ÜbersichtFunktionsweise der Tool-NutzungTutorial: Einen Tool-nutzenden Agenten erstellenTools definierenTool-Aufrufe verarbeitenParallele Tool-NutzungTool Runner (SDK)Strikte Tool-NutzungServer-ToolsWebsuche-ToolWeb-Fetch-ToolCodeausführungs-ToolAdvisor-ToolTool-Suche-ToolMemory-ToolBash-ToolTexteditor-ToolComputer-Use-ToolFehlerbehebung
Tool-Infrastruktur
Tool-ReferenzTool-Kontext verwaltenTool-KombinationenTool-Nutzung mit Prompt-CachingProgrammatischer Tool-AufrufFeingranulares Tool-Streaming
Kontextverwaltung
KontextfensterKompaktierungKontextbearbeitungPrompt-CachingSystemnachrichten während der KonversationEinen Orchestrierungsmodus erstellenCache-Diagnose (Beta)Token-Zählung
Arbeiten mit Dateien
Files APIPDF-Unterstützung
Skills
ÜbersichtSchnellstartBest PracticesSkills für UnternehmenSkills in der API
MCP
Remote-MCP-ServerMCP-Connector
Claude auf Cloud-Plattformen
Amazon BedrockAmazon Bedrock (Legacy)Claude Platform auf AWSGoogle CloudMicrosoft Foundry

Log in
Tool-Aufrufe verarbeiten
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Messages/Tools

Tool-Aufrufe verarbeiten

Parse tool_use-Blöcke, formatiere tool_result-Antworten und behandle Fehler mit is_error.

Diese Seite behandelt den Lebenszyklus eines Tool-Aufrufs: das Auslesen 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.



Einfacher mit Tool Runner: Die auf dieser Seite beschriebene manuelle Tool-Verarbeitung wird automatisch von Tool Runner verwaltet. Verwende diese Seite, wenn du individuelle Kontrolle über die Tool-Ausführung benötigst.

Claudes Antwort unterscheidet sich je nachdem, ob ein Client- oder Server-Tool verwendet wird.

Ergebnisse von Client-Tools verarbeiten

Die Antwort hat einen stop_reason von tool_use und einen oder mehrere tool_use-Content-Blöcke, die Folgendes enthalten:

  • id: Ein eindeutiger Bezeichner für diesen speziellen Tool-Use-Block. Dieser wird später verwendet, um die Tool-Ergebnisse zuzuordnen.
  • 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 du eine Tool-Use-Antwort für ein Client-Tool erhältst, solltest du:

  1. name, id und input aus dem tool_use-Block extrahieren.
  2. Das tatsächliche Tool in deiner Codebasis ausführen, das diesem Tool-Namen entspricht, und dabei das Tool-input übergeben.
  3. Die Konversation fortsetzen, indem du eine neue Nachricht mit der role user sendest, die einen content-Block mit dem Typ tool_result und den 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 Content-Blöcke (zum Beispiel "content": [{"type": "text", "text": "15 degrees"}]) oder als Liste von Document-Blöcken (zum Beispiel "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Diese Content-Blö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.


Wichtige Formatierungsanforderungen:

  • Tool-Result-Blöcke müssen im Nachrichtenverlauf unmittelbar auf ihre entsprechenden Tool-Use-Blöcke folgen. Du kannst keine Nachrichten zwischen der Tool-Use-Nachricht des Assistenten und der Tool-Result-Nachricht des Users einfügen.
  • In der User-Nachricht, die Tool-Ergebnisse enthält, müssen die tool_result-Blöcke ZUERST im Content-Array stehen. Jeglicher Text muss NACH allen Tool-Ergebnissen kommen.
  • Wenn der Assistant-Turn auch ein Server-Tool aufgerufen hat, das noch keinen Result-Block hat, darf die User-Nachricht nur tool_result-Blöcke enthalten. Text nach den Ergebnissen beendet den Turn vorzeitig; bei einem Server-Tool, das Claude direkt aufgerufen hat, schlägt die Anfrage dann mit einem 400-Fehler fehl, der das nicht aufgelöste Server-Tool benennt. Siehe Stop-Reasons und Fallback.

Dies führt beispielsweise zu einem 400-Fehler:

{
  "role": "user",
  "content": [
    { "type": "text", "text": "Here are the results:" }, // ❌ Text before tool_result
    { "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
  ]
}

Dies ist korrekt, wenn der Assistant-Turn nur Client-Tools aufruft:

{
  "role": "user",
  "content": [
    { "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
    { "type": "text", "text": "What should I do next?" } // ✅ Text after tool_result
  ]
}

Wenn du einen Fehler wie „tool_use ids were found without tool_result blocks immediately after" erhältst, überprüfe, ob deine Tool-Ergebnisse korrekt formatiert sind.



Tool-Ergebnisse enthalten oft Inhalte aus Quellen außerhalb deiner Kontrolle: Webseiten, eingehende E-Mails, Benutzer-Uploads, Drittanbieter-APIs. Behandle diese Inhalte als nicht vertrauenswürdig: Ein Angreifer, der sie beeinflussen kann, könnte Anweisungen einbetten, die versuchen, Claude umzulenken („indirect prompt injection", indirekte Prompt-Injection). Halte nicht vertrauenswürdige Inhalte innerhalb von tool_result-Blöcken statt in system-Prompts oder einfachen User-text-Blöcken, und siehe Jailbreaks und Prompt-Injections abschwächen für weitere Absicherungsmaßnahmen.

Nach Erhalt des Tool-Ergebnisses verwendet Claude diese Informationen, um weiterhin eine Antwort auf den ursprünglichen User-Prompt zu generieren.

Ergebnisse von Server-Tools verarbeiten

Claude führt das Tool intern aus und integriert die Ergebnisse direkt in seine Antwort, ohne dass zusätzliche Benutzerinteraktion erforderlich ist.



Eine Antwort kann sowohl einen Client-tool_use-Block als auch einen server_tool_use-Block enthalten, der noch keinen Result-Block hat. Dieser Server-Tool-Aufruf ist noch nicht abgeschlossen, und sein Result-Block kommt in einer späteren Antwort. Antworte mit einer User-Nachricht, die nur die tool_result-Blöcke für die Client-Tools enthält, und behalte dasselbe tools-Array bei; bei einem Server-Tool, das Claude direkt aufgerufen hat, führt die API es bei dieser Anfrage aus, und die nächste Antwort beginnt mit dessen Result-Block. Siehe Stop-Reasons und Fallback.



Unterschiede zu anderen APIs

Im Gegensatz zu APIs, die Tool-Nutzung separieren 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.

Fehler mit is_error behandeln

Es gibt verschiedene Arten von Fehlern, die bei der Verwendung von Tools mit Claude auftreten können:

Nächste Schritte

Parallele Tool-Nutzung

Verarbeite Antworten, in denen Claude mehrere Tools in einem einzigen Turn aufruft.


Tool Runner (SDK)

Lass das SDK die tool_use-Schleife, die Ergebnisformatierung und Wiederholungsversuche für dich verwalten.

Tools definieren

Schreibe Schemas und Beschreibungen, die Claude zum richtigen Tool lenken.

Was this page helpful?

  • Ergebnisse von Client-Tools verarbeiten
  • Ergebnisse von Server-Tools verarbeiten
  • Fehler mit is_error behandeln
  • Nächste Schritte