Loading...
    • Entwicklerleitfaden
    • API-Referenz
    • MCP
    • Ressourcen
    • Versionshinweise
    Search...
    ⌘K
    Erste Schritte
    Einführung in ClaudeSchnelleinstieg
    Modelle & Preise
    ModellübersichtModell auswählenNeuerungen in Claude 4.5Migration zu Claude 4.5ModellabschreibungenPreise
    Mit Claude entwickeln
    FunktionsübersichtMessages API verwendenKontextfensterBest Practices für Prompts
    Fähigkeiten
    Prompt-CachingKontext-BearbeitungErweitertes DenkenAufwandStreaming MessagesBatch-VerarbeitungZitateMehrsprachige UnterstützungToken-ZählungEmbeddingsVisionPDF-UnterstützungFiles APISuchergebnisseStrukturierte AusgabenGoogle Sheets Add-on
    Tools
    ÜbersichtTool-Nutzung implementierenToken-effiziente Tool-NutzungFeingranulares Tool-StreamingBash-ToolCode-Ausführungs-ToolProgrammatischer Tool-AufrufComputer-Use-ToolText-Editor-ToolWeb-Fetch-ToolWeb-Such-ToolMemory-ToolTool-Such-Tool
    Agent Skills
    ÜbersichtSchnelleinstiegBest PracticesSkills mit der API verwenden
    Agent SDK
    ÜbersichtTypeScript SDKPython SDKMigrationsleitfaden
    Leitfäden
    Streaming-EingabeBerechtigungen handhabenSitzungsverwaltungStrukturierte Ausgaben im SDKAgent SDK hostenSystem-Prompts ändernMCP im SDKBenutzerdefinierte ToolsSubagents im SDKSchrägstrich-Befehle im SDKAgent Skills im SDKKosten und Nutzung verfolgenTodo-ListenPlugins im SDK
    MCP in der API
    MCP-ConnectorRemote MCP-Server
    Claude auf Drittanbieter-Plattformen
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt Engineering
    ÜbersichtPrompt-GeneratorPrompt-Vorlagen verwendenPrompt-VerbessererKlar und direkt seinBeispiele verwenden (Multishot Prompting)Claude denken lassen (CoT)XML-Tags verwendenClaude eine Rolle geben (System Prompts)Claudeś Antwort vorausfüllenKomplexe Prompts verkettenTipps für langen KontextTipps für erweitertes Denken
    Testen & Evaluieren
    Erfolgskriterien definierenTestfälle entwickelnEvaluierungs-Tool verwendenLatenz reduzieren
    Schutzmaßnahmen verstärken
    Halluzinationen reduzierenAusgabekonsistenz erhöhenJailbreaks abschwächenStreaming-AblehnungenPrompt-Lecks reduzierenClaude im Charakter halten
    Verwaltung und Überwachung
    Admin API ÜbersichtNutzungs- und Kosten-APIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

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

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • 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
    • Catalog
    • 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
    Tools

    Wie man Tool-Nutzung implementiert

    Erfahren Sie, wie Sie Tools mit Claude implementieren, einschließlich Tool-Definitionen, Best Practices und der Verwendung des Tool Runners.
    • Auswahl eines Modells
    • Angeben von Client-Tools
    • Tool-Nutzungs-Systemprompt
    • Best Practices für Tool-Definitionen
    • Bereitstellung von Tool-Nutzungsbeispielen
    • Grundlegende Verwendung
    • Anforderungen und Einschränkungen
    • Tool Runner (Beta)
    • Grundlegende Verwendung
    • Iteration über den Tool Runner
    • Erweiterte Verwendung
    • Streaming
    • Grundlegende Verwendung
    • Iteration über den Tool Runner
    • Erweiterte Verwendung
    • Streaming
    • Grundlegende Verwendung
    • Iteration über den Tool Runner
    • Erweiterte Verwendung
    • Streaming
    • Steuern der Ausgabe von Claude
    • Erzwingen der Tool-Nutzung
    • JSON-Ausgabe
    • Modell-Antworten mit Tools
    • Parallele Werkzeugnutzung
    • Behandlung von Werkzeugnutzungs- und Werkzeugergebnis-Inhaltsblöcken
    • Behandlung von Ergebnissen von Client-Werkzeugen
    • Behandlung von Ergebnissen von Server-Werkzeugen
    • Behandlung des max_tokens-Stoppgrunds
    • Fehlerbehebung

    Auswahl eines Modells

    Wir empfehlen die Verwendung des neuesten Claude Sonnet (4.5) oder Claude Opus (4.1) Modells für komplexe Tools und mehrdeutige Anfragen; sie handhaben mehrere Tools besser und bitten um Klarstellung, wenn nötig.

    Verwenden Sie Claude Haiku Modelle für unkomplizierte Tools, beachten Sie aber, dass sie möglicherweise fehlende Parameter ableiten.

    Wenn Sie Claude mit Tool-Nutzung und erweitertem Denken verwenden, lesen Sie unseren Leitfaden hier für weitere Informationen.

    Angeben von Client-Tools

    Client-Tools (sowohl von Anthropic definiert als auch benutzerdefiniert) werden im tools Top-Level-Parameter der API-Anfrage angegeben. Jede Tool-Definition enthält:

    ParameterBeschreibung
    nameDer Name des Tools. Muss dem Regex ^[a-zA-Z0-9_-]{1,64}$ entsprechen.
    descriptionEine detaillierte Klartextbeschreibung, was das Tool tut, wann es verwendet werden sollte und wie es sich verhält.
    input_schemaEin JSON Schema Objekt, das die erwarteten Parameter für das Tool definiert.
    input_examples(Optional, Beta) Ein Array von Beispiel-Eingabeobjekten, um Claude zu helfen, zu verstehen, wie das Tool verwendet wird. Siehe Bereitstellung von Tool-Nutzungsbeispielen.

    Tool-Nutzungs-Systemprompt

    Wenn Sie die Claude API mit dem tools Parameter aufrufen, erstellen wir einen speziellen Systemprompt aus den Tool-Definitionen, der Tool-Konfiguration und jedem benutzerdefinierten Systemprompt. Der konstruierte Prompt ist so gestaltet, dass er das Modell anweist, die angegebenen Tools zu verwenden und den notwendigen Kontext für den ordnungsgemäßen Betrieb des Tools bereitzustellen:

    In this environment you have access to a set of tools you can use to answer the user's question.
    {{ FORMATTING INSTRUCTIONS }}
    String and scalar parameters should be specified as is, while lists and objects should use JSON format. Note that spaces for string values are not stripped. The output is not expected to be valid XML and is parsed with regular expressions.
    Here are the functions available in JSONSchema format:
    {{ TOOL DEFINITIONS IN JSON SCHEMA }}
    {{ USER SYSTEM PROMPT }}
    {{ TOOL CONFIGURATION }}

    Best Practices für Tool-Definitionen

    Um die beste Leistung von Claude bei der Verwendung von Tools zu erhalten, befolgen Sie diese Richtlinien:

    • Bieten Sie äußerst detaillierte Beschreibungen. Dies ist bei weitem der wichtigste Faktor für die Tool-Leistung. Ihre Beschreibungen sollten jedes Detail über das Tool erklären, einschließlich:
      • Was das Tool tut
      • Wann es verwendet werden sollte (und wann nicht)
      • Was jeder Parameter bedeutet und wie er das Verhalten des Tools beeinflusst
      • Alle wichtigen Vorbehalte oder Einschränkungen, wie z. B. welche Informationen das Tool nicht zurückgibt, wenn der Tool-Name unklar ist. Je mehr Kontext Sie Claude über Ihre Tools geben können, desto besser wird es bei der Entscheidung, wann und wie sie verwendet werden. Streben Sie nach mindestens 3-4 Sätzen pro Tool-Beschreibung an, mehr wenn das Tool komplex ist.
    • Priorisieren Sie Beschreibungen, erwägen Sie aber die Verwendung von input_examples für komplexe Tools. Klare Beschreibungen sind am wichtigsten, aber für Tools mit komplexen Eingaben, verschachtelten Objekten oder formatempfindlichen Parametern können Sie das Feld input_examples (Beta) verwenden, um schemavalidierte Beispiele bereitzustellen. Siehe Bereitstellung von Tool-Nutzungsbeispielen für Details.

    Die gute Beschreibung erklärt klar, was das Tool tut, wann es verwendet wird, welche Daten es zurückgibt und was der ticker Parameter bedeutet. Die schlechte Beschreibung ist zu kurz und lässt Claude mit vielen offenen Fragen zum Verhalten und zur Verwendung des Tools zurück.

    Bereitstellung von Tool-Nutzungsbeispielen

    Sie können konkrete Beispiele gültiger Tool-Eingaben bereitstellen, um Claude zu helfen, Ihre Tools effektiver zu verwenden. Dies ist besonders nützlich für komplexe Tools mit verschachtelten Objekten, optionalen Parametern oder formatempfindlichen Eingaben.

    Tool-Nutzungsbeispiele sind eine Beta-Funktion. Um diese Funktion zu verwenden, fügen Sie den advanced-tool-use-2025-11-20 Header in Ihre Anfrage ein. Auf Google Cloud's Vertex AI und Amazon Bedrock unterstützt nur Claude Opus 4.5 Tool-Nutzungsbeispiele.

    Grundlegende Verwendung

    Fügen Sie ein optionales input_examples Feld zu Ihrer Tool-Definition mit einem Array von Beispiel-Eingabeobjekten hinzu. Jedes Beispiel muss gemäß dem input_schema des Tools gültig sein:

    Beispiele sind im Prompt neben Ihrem Tool-Schema enthalten und zeigen Claude konkrete Muster für gut geformte Tool-Aufrufe. Dies hilft Claude zu verstehen, wann optionale Parameter einzubeziehen sind, welche Formate zu verwenden sind und wie komplexe Eingaben strukturiert werden.

    Anforderungen und Einschränkungen

    • Schema-Validierung - Jedes Beispiel muss gemäß dem input_schema des Tools gültig sein. Ungültige Beispiele geben einen 400 Fehler zurück
    • Nicht unterstützt für serverseitige Tools - Nur benutzerdefinierte Tools können Eingabebeispiele haben
    • Token-Kosten - Beispiele addieren sich zu Prompt-Tokens: ~20-50 Tokens für einfache Beispiele, ~100-200 Tokens für komplexe verschachtelte Objekte

    Tool Runner (Beta)

    Der Tool Runner bietet eine sofort einsatzbereite Lösung für die Ausführung von Tools mit Claude. Anstatt Tool-Aufrufe, Tool-Ergebnisse und Gesprächsverwaltung manuell zu handhaben, führt der Tool Runner automatisch aus:

    • Führt Tools aus, wenn Claude sie aufruft
    • Verwaltet den Request/Response-Zyklus
    • Verwaltet den Gesprächszustand
    • Bietet Typsicherheit und Validierung

    Wir empfehlen, dass Sie den Tool Runner für die meisten Tool-Nutzungsimplementierungen verwenden.

    Der Tool Runner befindet sich derzeit in der Beta-Phase und ist nur in den Python und TypeScript SDKs verfügbar.

    Automatische Kontextverwaltung mit Komprimierung

    Der Tool Runner unterstützt automatische Komprimierung, die Zusammenfassungen generiert, wenn die Token-Nutzung einen Schwellenwert überschreitet. Dies ermöglicht es langfristigen agentengesteuerten Aufgaben, über Kontextfenster-Grenzen hinaus fortzufahren.

    Der SDK Tool Runner befindet sich in der Beta-Phase. Der Rest dieses Dokuments behandelt die manuelle Tool-Implementierung.

    Steuern der Ausgabe von Claude

    Erzwingen der Tool-Nutzung

    In einigen Fällen möchten Sie möglicherweise, dass Claude ein bestimmtes Tool verwendet, um die Frage des Benutzers zu beantworten, auch wenn Claude denkt, dass es eine Antwort ohne die Verwendung eines Tools geben kann. Sie können dies tun, indem Sie das Tool im tool_choice Feld wie folgt angeben:

    tool_choice = {"type": "tool", "name": "get_weather"}

    Bei der Arbeit mit dem tool_choice Parameter haben wir vier mögliche Optionen:

    • auto erlaubt Claude zu entscheiden, ob eines der bereitgestellten Tools aufgerufen werden soll oder nicht. Dies ist der Standardwert, wenn tools bereitgestellt werden.
    • any teilt Claude mit, dass es eines der bereitgestellten Tools verwenden muss, erzwingt aber kein bestimmtes Tool.
    • tool erlaubt uns, Claude zu zwingen, immer ein bestimmtes Tool zu verwenden.
    • none verhindert, dass Claude Tools verwendet. Dies ist der Standardwert, wenn keine tools bereitgestellt werden.

    Bei Verwendung von Prompt-Caching werden Änderungen am tool_choice Parameter gecachte Message Blöcke ungültig machen. Tool-Definitionen und Systemprompts bleiben gecacht, aber der Message-Inhalt muss erneut verarbeitet werden.

    Dieses Diagramm zeigt, wie jede Option funktioniert:

    Beachten Sie, dass wenn Sie tool_choice als any oder tool haben, wir die Assistant-Nachricht vorab ausfüllen, um zu erzwingen, dass ein Tool verwendet wird. Dies bedeutet, dass die Modelle keine natürlichsprachige Antwort oder Erklärung vor tool_use Content Blöcken ausgeben, auch wenn explizit danach gefragt wird.

    Bei Verwendung von erweitertem Denken mit Tool-Nutzung werden tool_choice: {"type": "any"} und tool_choice: {"type": "tool", "name": "..."} nicht unterstützt und führen zu einem Fehler. Nur tool_choice: {"type": "auto"} (der Standard) und tool_choice: {"type": "none"} sind mit erweitertem Denken kompatibel.

    Unsere Tests haben gezeigt, dass dies die Leistung nicht verringern sollte. Wenn Sie möchten, dass das Modell natürlichsprachigen Kontext oder Erklärungen bereitstellt, während Sie immer noch anfordern, dass das Modell ein bestimmtes Tool verwendet, können Sie {"type": "auto"} für tool_choice (der Standard) verwenden und explizite Anweisungen in einer user Nachricht hinzufügen. Zum Beispiel: What's the weather like in London? Use the get_weather tool in your response.

    Garantierte Tool-Aufrufe mit strikten Tools

    Kombinieren Sie tool_choice: {"type": "any"} mit strikter Tool-Nutzung, um zu garantieren, dass eines Ihrer Tools aufgerufen wird UND dass die Tool-Eingaben streng Ihrem Schema folgen. Setzen Sie strict: true auf Ihren Tool-Definitionen, um die Schema-Validierung zu aktivieren.

    JSON-Ausgabe

    Tools müssen nicht unbedingt Client-Funktionen sein — Sie können Tools jederzeit verwenden, wenn Sie möchten, dass das Modell JSON-Ausgabe zurückgibt, die einem bereitgestellten Schema folgt. Zum Beispiel könnten Sie ein record_summary Tool mit einem bestimmten Schema verwenden. Siehe Tool-Nutzung mit Claude für ein vollständiges funktionierendes Beispiel.

    Modell-Antworten mit Tools

    Bei Verwendung von Tools wird Claude oft kommentieren, was es tut, oder natürlich auf den Benutzer antworten, bevor es Tools aufruft.

    Zum Beispiel, gegeben die Aufforderung "What's the weather like in San Francisco right now, and what time is it there?", könnte Claude antworten mit:

    JSON
    {
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "I'll help you check the current weather and time in San Francisco."
        },
        {
          "type": "tool_use",
          "id": "toolu_01A09q90qw90lq917835lq9",
          "name": "get_weather",
          "input": {"location": "San Francisco, CA"}
        }
      ]
    }

    Dieser natürliche Antwortstil hilft Benutzern zu verstehen, was Claude tut und schafft eine konversativere Interaktion. Sie können den Stil und den Inhalt dieser Antworten durch Ihre Systemprompts und durch die Bereitstellung von <examples> in Ihren Prompts lenken.

    Es ist wichtig zu beachten, dass Claude verschiedene Formulierungen und Ansätze verwenden kann, wenn es seine Aktionen erklärt. Ihr Code sollte diese Antworten wie jeden anderen vom Assistenten generierten Text behandeln und sich nicht auf spezifische Formatierungskonventionen verlassen.

    Parallele Werkzeugnutzung

    Standardmäßig kann Claude mehrere Werkzeuge verwenden, um eine Benutzerabfrage zu beantworten. Sie können dieses Verhalten deaktivieren durch:

    • Setzen von disable_parallel_tool_use=true, wenn der tool_choice-Typ auto ist, was sicherstellt, dass Claude höchstens ein Werkzeug verwendet
    • Setzen von disable_parallel_tool_use=true, wenn der tool_choice-Typ any oder tool ist, was sicherstellt, dass Claude genau ein Werkzeug verwendet

    Maximierung der parallelen Werkzeugnutzung

    Während Claude 4-Modelle standardmäßig hervorragende Fähigkeiten zur parallelen Werkzeugnutzung haben, können Sie die Wahrscheinlichkeit der parallelen Werkzeugausführung über alle Modelle hinweg mit gezieltem Prompting erhöhen:

    Parallele Werkzeugnutzung mit Claude Sonnet 3.7

    Claude Sonnet 3.7 kann weniger wahrscheinlich parallele Werkzeugaufrufe in einer Antwort durchführen, auch wenn Sie disable_parallel_tool_use nicht gesetzt haben. Um dies zu umgehen, empfehlen wir, token-effiziente Werkzeugnutzung zu aktivieren, was Claude dazu ermutigt, parallele Werkzeuge zu verwenden. Diese Beta-Funktion reduziert auch die Latenz und spart durchschnittlich 14% der Ausgabe-Token.

    Wenn Sie sich nicht für die Beta-Funktion zur token-effizienten Werkzeugnutzung anmelden möchten, können Sie auch ein „Batch-Werkzeug" einführen, das als Meta-Werkzeug fungiert, um Aufrufe zu anderen Werkzeugen gleichzeitig zu umhüllen. Wir stellen fest, dass das Modell dieses Werkzeug verwendet, um mehrere Werkzeuge gleichzeitig parallel für Sie aufzurufen.

    Siehe dieses Beispiel in unserem Cookbook, um zu erfahren, wie Sie diese Problemumgehung verwenden.

    Behandlung von Werkzeugnutzungs- und Werkzeugergebnis-Inhaltsblöcken

    Einfacher mit Tool Runner: Die in diesem Abschnitt beschriebene manuelle Werkzeugbehandlung wird automatisch von tool runner verwaltet. Verwenden Sie diesen Abschnitt, wenn Sie benutzerdefinierte Kontrolle über die Werkzeugausführung benötigen.

    Claudes Antwort unterscheidet sich je nachdem, ob es ein Client- oder Server-Werkzeug verwendet.

    Behandlung von Ergebnissen von Client-Werkzeugen

    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 Werkzeugnutzungsblock. Dies wird später verwendet, um die Werkzeugergebnisse abzugleichen.
    • name: Der Name des verwendeten Werkzeugs.
    • input: Ein Objekt, das die an das Werkzeug übergebene Eingabe enthält und dem input_schema des Werkzeugs entspricht.

    Wenn Sie eine Werkzeugnutzungsantwort für ein Client-Werkzeug erhalten, sollten Sie:

    1. Extrahieren Sie name, id und input aus dem tool_use-Block.
    2. Führen Sie das tatsächliche Werkzeug in Ihrer Codebasis aus, das diesem Werkzeugnamen entspricht, und übergeben Sie die Werkzeug-input.
    3. Setzen Sie die Konversation fort, indem Sie eine neue Nachricht mit der role von user und einem content-Block mit dem Typ tool_result und den folgenden Informationen senden:
      • tool_use_id: Die id der Werkzeugnutzungsanfrage, für die dies ein Ergebnis ist.
      • content: Das Ergebnis des Werkzeugs 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:

    • Werkzeugergebnis-Blöcke müssen unmittelbar nach ihren entsprechenden Werkzeugnutzungs-Blöcken in der Nachrichtenhistorie folgen. Sie können keine Nachrichten zwischen der Werkzeugnutzungs-Nachricht des Assistenten und der Werkzeugergebnis-Nachricht des Benutzers einfügen.
    • In der Benutzernachricht, die Werkzeugergebnisse enthält, müssen die tool_result-Blöcke ZUERST im content-Array stehen. Jeder Text muss NACH allen Werkzeugergebnissen stehen.

    Zum Beispiel wird dies einen 400-Fehler verursachen:

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

    Nach Erhalt des Werkzeugergebnisses wird Claude diese Informationen verwenden, um die Antwort auf die ursprüngliche Benutzerabfrage fortzusetzen.

    Behandlung von Ergebnissen von Server-Werkzeugen

    Claude führt das Werkzeug 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 die Werkzeugnutzung trennen oder spezielle Rollen wie tool oder function verwenden, integriert die Claude-API Werkzeuge 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.

    Behandlung des max_tokens-Stoppgrunds

    Wenn Claudes Antwort aufgrund des Erreichens des max_tokens-Limits abgeschnitten wird und die abgeschnittene Antwort einen unvollständigen Werkzeugnutzungsblock enthält, müssen Sie die Anfrage mit einem höheren max_tokens-Wert erneut versuchen, um die vollständige Werkzeugnutzung zu erhalten.

    Behandlung des pause_turn-Stoppgrunds

    Bei Verwendung von Server-Werkzeugen wie Web Search kann die API einen pause_turn-Stoppgrund zurückgeben, der anzeigt, dass die API einen langen Zug pausiert hat.

    So behandeln Sie den pause_turn-Stoppgrund:

    Bei der Behandlung von pause_turn:

    • Setzen Sie die Konversation fort: Übergeben Sie die pausierte Antwort unverändert in einer nachfolgenden Anfrage, um Claude seinen Zug fortsetzen zu lassen
    • Ändern Sie bei Bedarf: Sie können den Inhalt optional vor dem Fortfahren ändern, wenn Sie die Konversation unterbrechen oder umleiten möchten
    • Bewahren Sie den Werkzeugzustand: Fügen Sie die gleichen Werkzeuge in die Fortsetzungsanfrage ein, um die Funktionalität beizubehalten

    Fehlerbehebung

    Integrierte Fehlerbehandlung: Tool runner bietet automatische Fehlerbehandlung für die meisten häufigen Szenarien. Dieser Abschnitt behandelt manuelle Fehlerbehandlung für fortgeschrittene Anwendungsfälle.

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

    import anthropic
    
    client = anthropic.Anthropic()
    
    response = client.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=1024,
        betas=["advanced-tool-use-2025-11-20"],
        tools=[
            {
                "name": "get_weather",
                "description": "Get the current weather in a given location",
                "input_schema": {
                    "type": "object",
                    "properties": {
                        "location": {
                            "type": "string",
                            "description": "The city and state, e.g. San Francisco, CA"
                        },
                        "unit": {
                            "type": "string",
                            "enum": ["celsius", "fahrenheit"],
                            "description": "The unit of temperature"
                        }
                    },
                    "required": ["location"]
                },
                "input_examples": [
                    {
                        "location": "San Francisco, CA",
                        "unit": "fahrenheit"
                    },
                    {
                        "location": "Tokyo, Japan",
                        "unit": "celsius"
                    },
                    {
                        "location": "New York, NY"  # 'unit' is optional
                    }
                ]
            }
        ],
        messages=[
            {"role": "user", "content": "What's the weather like in San Francisco?"}
        ]
    )

    "content": "15 degrees"
    "content": [{"type": "text", "text": "15 degrees"}]
    "content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}]
    text
    image
    document
  1. is_error (optional): Setzen Sie auf true, wenn die Werkzeugausführung zu einem Fehler führte.
  2. Dies ist korrekt:

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

    Wenn Sie einen Fehler wie „tool_use ids were found without tool_result blocks immediately after" erhalten, überprüfen Sie, dass Ihre Werkzeugergebnisse korrekt formatiert sind.

    # Überprüfen Sie, ob die Antwort während der Werkzeugnutzung abgeschnitten wurde
    if response.stop_reason == "max_tokens":
        # Überprüfen Sie, ob der letzte Inhaltsblock ein unvollständiger tool_use ist
        last_block = response.content[-1]
        if last_block.type == "tool_use":
            # Senden Sie die Anfrage mit höherem max_tokens
            response = client.messages.create(
                model="claude-sonnet-4-5",
                max_tokens=4096,  # Increased limit
                messages=messages,
                tools=tools
            )
    import anthropic
    
    client = anthropic.Anthropic()
    
    # Anfängliche Anfrage mit Web Search
    response = client.messages.create(
        model="claude-3-7-sonnet-latest",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": "Search for comprehensive information about quantum computing breakthroughs in 2025"
            }
        ],
        tools=[{
            "type": "web_search_20250305",
            "name": "web_search",
            "max_uses": 10
        }]
    )
    
    # Überprüfen Sie, ob die Antwort einen pause_turn-Stoppgrund hat
    if response.stop_reason == "pause_turn":
        # Setzen Sie die Konversation mit dem pausierten Inhalt fort
        messages = [
            {"role": "user", "content": "Search for comprehensive information about quantum computing breakthroughs in 2025"},
            {"role": "assistant", "content": response.content}
        ]
    
        # Senden Sie die Fortsetzungsanfrage
        continuation = client.messages.create(
            model="claude-3-7-sonnet-latest",
            max_tokens=1024,
            messages=messages,
            tools=[{
                "type": "web_search_20250305",
                "name": "web_search",
                "max_uses": 10
            }]
        )
    
        print(continuation)
    else:
        print(response)