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
Tools definieren
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

Tools definieren

Spezifiziere Tool-Schemas, schreibe effektive Beschreibungen und steuere, wann Claude deine Tools aufruft.

Ein Modell auswählen

Verwende das neueste Claude Opus (4.8) Modell für komplexe Tools und mehrdeutige Anfragen; es handhabt mehrere Tools besser und fragt bei Bedarf nach Klärung.

Verwende Claude Haiku Modelle für einfache Tools, beachte aber, dass sie fehlende Parameter möglicherweise ableiten.



Wenn du Claude mit Tool-Nutzung und erweitertem Denken verwendest, findest du weitere Informationen im Leitfaden zum erweiterten Denken.

Client-Tools spezifizieren

Client-Tools (sowohl Anthropic-Schema- als auch benutzerdefinierte Tools) werden im Top-Level-Parameter tools 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 Klartext-Beschreibung, was das Tool macht, 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) Ein Array von Beispiel-Eingabeobjekten, die Claude helfen zu verstehen, wie das Tool zu verwenden ist. Siehe Beispiele für Tool-Nutzung bereitstellen.

Die vollständige Liste der optionalen Eigenschaften, die für jede Tool-Definition verfügbar sind, einschließlich cache_control, strict, defer_loading und allowed_callers, findest du in der Tool-Referenz.

System-Prompt für Tool-Nutzung

Wenn du die Claude API mit dem tools-Parameter aufrufst, konstruiert die API einen speziellen System-Prompt aus den Tool-Definitionen, der Tool-Konfiguration und jedem vom Benutzer angegebenen System-Prompt. Der konstruierte Prompt ist darauf ausgelegt, das Modell anzuweisen, die angegebenen Tools zu verwenden und den notwendigen Kontext bereitzustellen, damit das Tool ordnungsgemäß funktioniert:

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 erzielen, befolge diese Richtlinien:

  • Stelle extrem detaillierte Beschreibungen bereit. Dies ist bei weitem der wichtigste Faktor für die Tool-Leistung. Deine Beschreibungen sollten jedes Detail über das Tool erklären, einschließlich:
    • Was das Tool macht
    • 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, z. B. welche Informationen das Tool nicht zurückgibt, falls der Tool-Name unklar ist. Je mehr Kontext du Claude über deine Tools geben kannst, desto besser kann es entscheiden, wann und wie es sie verwenden soll. Strebe mindestens 3–4 Sätze pro Tool-Beschreibung an, mehr, wenn das Tool komplex ist.
  • Priorisiere Beschreibungen, aber erwäge die Verwendung von input_examples für komplexe Tools. Klare Beschreibungen sind am wichtigsten, aber für Tools mit komplexen Eingaben, verschachtelten Objekten oder formatabhängigen Parametern kannst du das Feld input_examples verwenden, um schema-validierte Beispiele bereitzustellen. Siehe Beispiele für Tool-Nutzung bereitstellen für Details.
  • Fasse verwandte Operationen in weniger Tools zusammen. Anstatt für jede Aktion ein separates Tool zu erstellen (create_pr, review_pr, merge_pr), gruppiere sie in einem einzigen Tool mit einem action-Parameter. Weniger, aber leistungsfähigere Tools reduzieren Mehrdeutigkeit bei der Auswahl und machen es Claude leichter, sich in deiner Tool-Oberfläche zurechtzufinden.
  • Verwende aussagekräftiges Namespacing in Tool-Namen. Wenn deine Tools mehrere Dienste oder Ressourcen umfassen, stelle den Namen den Dienst voran (z. B. github_list_prs, slack_send_message). Dies macht die Tool-Auswahl eindeutig, wenn deine Bibliothek wächst, und ist besonders wichtig bei der Verwendung der Tool-Suche.
  • Gestalte Tool-Antworten so, dass sie nur relevante Informationen zurückgeben. Gib semantische, stabile Bezeichner zurück (z. B. Slugs oder UUIDs) statt undurchsichtiger interner Referenzen, und schließe nur die Felder ein, die Claude benötigt, um über seinen nächsten Schritt nachzudenken. Aufgeblähte Antworten verschwenden Kontext und erschweren es Claude, das Wesentliche zu extrahieren.

Die gute Beschreibung erklärt klar, was das Tool macht, wann es zu verwenden ist, 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 über das Verhalten und die Verwendung des Tools zurück.



Für tiefergehende Anleitungen zum Tool-Design (Konsolidierung, Benennung und Antwortgestaltung) siehe Writing tools for agents.

Beispiele für Tool-Nutzung bereitstellen

Du kannst konkrete Beispiele für gültige Tool-Eingaben bereitstellen, um Claude zu helfen, deine Tools effektiver zu nutzen. Dies ist besonders nützlich für komplexe Tools mit verschachtelten Objekten, optionalen Parametern oder formatabhängigen Eingaben.

Grundlegende Verwendung

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

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    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?"}],
)

print(response)

Beispiele werden zusammen mit deinem Tool-Schema in den Prompt aufgenommen und zeigen Claude konkrete Muster für wohlgeformte Tool-Aufrufe. Dies hilft Claude zu verstehen, wann optionale Parameter einzuschließen sind, welche Formate zu verwenden sind und wie komplexe Eingaben zu strukturieren sind.

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 – Eingabebeispiele funktionieren bei benutzerdefinierten und Anthropic-Schema-Client-Tools, aber nicht bei Server-Tools wie Websuche oder Code-Ausführung
  • Token-Kosten – Beispiele erhöhen die Prompt-Token: ~20–50 Token für einfache Beispiele, ~100–200 Token für komplexe verschachtelte Objekte

Claudes Ausgabe steuern

Tool-Nutzung erzwingen

In manchen Fällen möchtest du vielleicht, dass Claude ein bestimmtes Tool verwendet, um die Frage des Benutzers zu beantworten, auch wenn Claude sonst direkt antworten würde, ohne ein Tool aufzurufen. Du kannst dies tun, indem du das Tool im tool_choice-Feld der Anfrage angibst. Die hervorgehobenen Zeilen sind der einzige Unterschied zu einer Standard-Tool-Nutzungs-Anfrage:

import anthropic

client = anthropic.Anthropic()

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",
                }
            },
            "required": ["location"],
        },
    }
]

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    tools=tools,
    tool_choice={"type": "tool", "name": "get_weather"},
    messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
)

print(response)

Bei der Arbeit mit dem tool_choice-Parameter gibt es vier mögliche Optionen:

  • auto erlaubt Claude zu entscheiden, ob es eines der bereitgestellten Tools aufruft 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 zwingt Claude, immer ein bestimmtes Tool zu verwenden.
  • none verhindert, dass Claude Tools verwendet. Dies ist der Standardwert, wenn keine tools bereitgestellt werden.


Bei der Verwendung von Prompt-Caching machen Änderungen am tool_choice-Parameter gecachte Nachrichtenblöcke ungültig. Tool-Definitionen und System-Prompts bleiben gecacht, aber Nachrichteninhalte müssen neu verarbeitet werden.

Dieses Diagramm veranschaulicht, wie jede Option funktioniert:

Diagramm, das die vier tool_choice-Optionen zeigt: auto, any, tool und none

Beachte, dass die API, wenn du tool_choice auf any oder tool setzt, die Assistenten-Nachricht vorausfüllt, um die Verwendung eines Tools zu erzwingen. Das bedeutet, dass die Modelle keine natürlichsprachliche Antwort oder Erklärung vor tool_use-Inhaltsblöcken ausgeben, selbst wenn sie ausdrücklich dazu aufgefordert werden.



Bei der 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.



Claude Mythos Preview unterstützt keine erzwungene Tool-Nutzung. Anfragen mit tool_choice: {"type": "any"} oder tool_choice: {"type": "tool", "name": "..."} geben bei diesem Modell einen 400-Fehler zurück. Verwende tool_choice: {"type": "auto"} (der Standard) oder tool_choice: {"type": "none"} und verlasse dich auf Prompting, um die Tool-Auswahl zu beeinflussen.

Tests haben gezeigt, dass dies die Leistung nicht beeinträchtigen sollte. Wenn du möchtest, dass das Modell natürlichsprachlichen Kontext oder Erklärungen liefert und gleichzeitig ein bestimmtes Tool verwendet, kannst du {"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

Kombiniere tool_choice: {"type": "any"} mit strikter Tool-Nutzung, um sowohl zu garantieren, dass eines deiner Tools aufgerufen wird, ALS AUCH dass die Tool-Eingaben strikt deinem Schema folgen. Setze strict: true in deinen Tool-Definitionen, um die Schema-Validierung zu aktivieren.

Modellantworten mit Tools

Bei der Verwendung von Tools kommentiert Claude oft, was es tut, oder antwortet dem Benutzer auf natürliche Weise, bevor es Tools aufruft.

Zum Beispiel könnte Claude auf den Prompt „Wie ist das Wetter gerade in San Francisco und wie spät ist es dort?" wie folgt antworten:

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 konversationellere Interaktion. Du kannst den Stil und Inhalt dieser Antworten durch deine System-Prompts und durch die Bereitstellung von <examples> in deinen Prompts steuern.

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

Nächste Schritte

Tool-Aufrufe verarbeiten

Parse tool_use-Blöcke und formatiere tool_result-Antworten.

Tool Runner (SDK)

Lass das SDK die agentische Schleife automatisch handhaben.

Tool-Referenz

Verzeichnis der von Anthropic bereitgestellten Tools und optionalen Eigenschaften.

Was this page helpful?

  • Ein Modell auswählen
  • Client-Tools spezifizieren
  • System-Prompt für Tool-Nutzung
  • Best Practices für Tool-Definitionen
  • Beispiele für Tool-Nutzung bereitstellen
  • Grundlegende Verwendung
  • Anforderungen und Einschränkungen
  • Claudes Ausgabe steuern
  • Tool-Nutzung erzwingen
  • Modellantworten mit Tools
  • Nächste Schritte