Ein Modell auswählen
Verwenden Sie generell Claude Opus 4.1, Claude Opus 4, Claude Sonnet 4, Claude Sonnet 3.7, Claude Sonnet 3.5 (veraltet) oder Claude Opus 3 (veraltet) für komplexe Tools und mehrdeutige Anfragen; sie handhaben mehrere Tools besser und suchen bei Bedarf nach Klarstellung. Verwenden Sie Claude Haiku 3.5 oder Claude Haiku 3 für einfache Tools, beachten Sie jedoch, dass sie möglicherweise fehlende Parameter ableiten.Wenn Sie Claude Sonnet 3.7 mit Tool-Nutzung und erweitertem Denken verwenden, lesen Sie unseren Leitfaden hier für weitere Informationen.
Client-Tools spezifizieren
Client-Tools (sowohl von Anthropic definierte als auch benutzerdefinierte) werden imtools
Top-Level-Parameter der API-Anfrage spezifiziert. Jede Tool-Definition umfasst:
Parameter | Beschreibung |
---|---|
name | Der Name des Tools. Muss dem Regex ^[a-zA-Z0-9_-]{1,64}$ entsprechen. |
description | Eine detaillierte Klartextbeschreibung dessen, was das Tool tut, wann es verwendet werden sollte und wie es sich verhält. |
input_schema | Ein JSON Schema Objekt, das die erwarteten Parameter für das Tool definiert. |
Beispiel einer einfachen Tool-Definition
Beispiel einer einfachen Tool-Definition
JSON
get_weather
erwartet ein Eingabeobjekt mit einem erforderlichen location
String und einem optionalen unit
String, der entweder “celsius” oder “fahrenheit” sein muss.Tool-Nutzung System-Prompt
Wenn Sie die Anthropic API mit demtools
Parameter aufrufen, konstruieren wir einen speziellen System-Prompt aus den Tool-Definitionen, der Tool-Konfiguration und jedem benutzerdefinierten System-Prompt. Der konstruierte Prompt ist darauf ausgelegt, das Modell anzuweisen, die spezifizierten Tool(s) zu verwenden und den notwendigen Kontext für das ordnungsgemäße Funktionieren des Tools bereitzustellen:
Best Practices für Tool-Definitionen
Um die beste Leistung von Claude bei der Verwendung von Tools zu erhalten, befolgen Sie diese Richtlinien:- Stellen Sie extrem detaillierte Beschreibungen bereit. 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 sein, wann und wie sie verwendet werden. Streben Sie mindestens 3-4 Sätze pro Tool-Beschreibung an, mehr wenn das Tool komplex ist.
- Priorisieren Sie Beschreibungen über Beispiele. Während Sie Beispiele für die Verwendung eines Tools in seiner Beschreibung oder im begleitenden Prompt einschließen können, ist dies weniger wichtig als eine klare und umfassende Erklärung des Zwecks und der Parameter des Tools zu haben. Fügen Sie nur Beispiele hinzu, nachdem Sie die Beschreibung vollständig ausgearbeitet haben.
Beispiel einer guten Tool-Beschreibung
Beispiel einer guten Tool-Beschreibung
JSON
Beispiel einer schlechten Tool-Beschreibung
Beispiel einer schlechten Tool-Beschreibung
JSON
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.
Claudes Ausgabe kontrollieren
Tool-Nutzung erzwingen
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 Verwendung eines Tools geben kann. Sie können dies tun, indem Sie das Tool imtool_choice
Feld wie folgt spezifizieren:
auto
erlaubt es Claude zu entscheiden, ob bereitgestellte Tools aufgerufen werden sollen oder nicht. Dies ist der Standardwert, wenntools
bereitgestellt werden.any
teilt Claude mit, dass es eines der bereitgestellten Tools verwenden muss, aber kein bestimmtes Tool erzwingt.tool
ermöglicht es uns, Claude zu zwingen, immer ein bestimmtes Tool zu verwenden.none
verhindert, dass Claude Tools verwendet. Dies ist der Standardwert, wenn keinetools
bereitgestellt werden.
Bei der Verwendung von Prompt-Caching werden Änderungen am
tool_choice
Parameter zwischengespeicherte Nachrichtenblöcke ungültig machen. Tool-Definitionen und System-Prompts bleiben zwischengespeichert, aber Nachrichteninhalte müssen erneut verarbeitet werden.
tool_choice
als any
oder tool
haben, wir die Assistentennachricht vorab ausfüllen werden, um die Verwendung eines Tools zu erzwingen. Das bedeutet, dass die Modelle keinen Chain-of-Thought text
Inhaltsblock vor tool_use
Inhaltsblöcken ausgeben werden, auch wenn explizit darum gebeten wird.
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.{"type": "auto"}
für tool_choice
(der Standard) verwenden und explizite Anweisungen in einer user
Nachricht hinzufügen. Zum Beispiel: Wie ist das Wetter in London? Verwenden Sie das get_weather Tool in Ihrer Antwort.
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 einrecord_summary
Tool mit einem bestimmten Schema verwenden. Siehe Tool-Nutzung mit Claude für ein vollständiges funktionierendes Beispiel.
Chain of Thought
Bei der Verwendung von Tools zeigt Claude oft seine “Chain of Thought”, d.h. die schrittweise Argumentation, die es verwendet, um das Problem zu zerlegen und zu entscheiden, welche Tools verwendet werden sollen. Das Claude Opus 3 (veraltet) Modell wird dies tun, wenntool_choice
auf auto
gesetzt ist (dies ist der Standardwert, siehe Tool-Nutzung erzwingen), und Sonnet und Haiku können dazu veranlasst werden, es zu tun.
Zum Beispiel, bei dem Prompt “Wie ist das Wetter in San Francisco gerade jetzt, und wie spät ist es dort?”, könnte Claude mit folgendem antworten:
JSON
Parallele Tool-Nutzung
Standardmäßig kann Claude mehrere Tools verwenden, um eine Benutzeranfrage zu beantworten. Sie können dieses Verhalten deaktivieren, indem Sie:disable_parallel_tool_use=true
setzen, wenn tool_choice Typauto
ist, was sicherstellt, dass Claude höchstens ein Tool verwendetdisable_parallel_tool_use=true
setzen, wenn tool_choice Typany
odertool
ist, was sicherstellt, dass Claude genau ein Tool verwendet
Vollständiges Beispiel für parallele Tool-Nutzung
Vollständiges Beispiel für parallele Tool-Nutzung
Hier ist ein vollständiges Beispiel, das zeigt, wie parallele Tool-Aufrufe in der Nachrichtenhistorie richtig formatiert werden:Die Assistentennachricht mit parallelen Tool-Aufrufen würde so aussehen:
Vollständiges Testskript für parallele Tools
Vollständiges Testskript für parallele Tools
Hier ist ein vollständiges, ausführbares Skript zum Testen und Überprüfen, ob parallele Tool-Aufrufe korrekt funktionieren:Dieses Skript demonstriert:
- Wie parallele Tool-Aufrufe und -Ergebnisse richtig formatiert werden
- Wie überprüft wird, dass parallele Aufrufe gemacht werden
- Die korrekte Nachrichtenstruktur, die zukünftige parallele Tool-Nutzung fördert
- Häufige Fehler, die vermieden werden sollten (wie Text vor Tool-Ergebnissen)
Parallele Tool-Nutzung maximieren
Während Claude 4 Modelle standardmäßig ausgezeichnete parallele Tool-Nutzungsfähigkeiten haben, können Sie die Wahrscheinlichkeit paralleler Tool-Ausführung über alle Modelle hinweg mit gezieltem Prompting erhöhen:System-Prompts für parallele Tool-Nutzung
System-Prompts für parallele Tool-Nutzung
Für Claude 4 Modelle (Opus 4.1, Opus 4 und Sonnet 4), fügen Sie dies zu Ihrem System-Prompt hinzu:Für noch stärkere parallele Tool-Nutzung (empfohlen, wenn der Standard nicht ausreicht), verwenden Sie:
Benutzernachrichten-Prompting
Benutzernachrichten-Prompting
Sie können auch parallele Tool-Nutzung innerhalb spezifischer Benutzernachrichten fördern:
Parallele Tool-Nutzung mit Claude Sonnet 3.7Claude Sonnet 3.7 macht möglicherweise weniger wahrscheinlich parallele Tool-Aufrufe in einer Antwort, auch wenn Sie
disable_parallel_tool_use
nicht gesetzt haben. Um dies zu umgehen, empfehlen wir die Aktivierung von token-effizienter Tool-Nutzung, was hilft, Claude zu ermutigen, parallele Tools zu verwenden. Diese Beta-Funktion reduziert auch die Latenz und spart durchschnittlich 14% bei Ausgabe-Token.Wenn Sie es vorziehen, sich nicht für die token-effiziente Tool-Nutzung Beta anzumelden, können Sie auch ein “Batch-Tool” einführen, das als Meta-Tool fungieren kann, um Aufrufe an andere Tools gleichzeitig zu umhüllen. Wir stellen fest, dass wenn dieses Tool vorhanden ist, das Modell es verwenden wird, um gleichzeitig mehrere Tools parallel für Sie aufzurufen.Siehe dieses Beispiel in unserem Kochbuch für die Verwendung dieser Umgehung.Umgang mit Tool-Nutzung und Tool-Ergebnis-Inhaltsblöcken
Claudes Antwort unterscheidet sich je nachdem, ob es ein Client- oder Server-Tool verwendet.Umgang mit Ergebnissen von Client-Tools
Die Antwort wird einenstop_reason
von tool_use
und einen oder mehrere tool_use
Inhaltsblöcke haben, die Folgendes enthalten:
id
: Eine eindeutige Kennung für diesen bestimmten Tool-Nutzungsblock. Diese wird verwendet, um die Tool-Ergebnisse später zuzuordnen.name
: Der Name des verwendeten Tools.input
: Ein Objekt, das die an das Tool übergebene Eingabe enthält, entsprechend deminput_schema
des Tools.
Beispiel API-Antwort mit einem `tool_use` Inhaltsblock
Beispiel API-Antwort mit einem `tool_use` Inhaltsblock
JSON
- Den
name
, dieid
und dieinput
aus demtool_use
Block extrahieren. - Das tatsächliche Tool in Ihrer Codebasis ausführen, das diesem Tool-Namen entspricht, und die Tool-
input
übergeben. - Die Unterhaltung fortsetzen, indem Sie eine neue Nachricht mit der
role
vonuser
und einemcontent
Block senden, der dentool_result
Typ und die folgenden Informationen enthält:tool_use_id
: Dieid
der Tool-Nutzungsanfrage, für die dies ein Ergebnis ist.content
: Das Ergebnis des Tools, als String (z.B."content": "15 Grad"
), eine Liste verschachtelter Inhaltsblöcke (z.B."content": [{"type": "text", "text": "15 Grad"}]
), oder eine Liste von Dokumentblöcken (z.B."content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 Grad"}]
). Diese Inhaltsblöcke können die Typentext
,image
oderdocument
verwenden.is_error
(optional): Auftrue
setzen, wenn die Tool-Ausführung zu einem Fehler führte.
Wichtige Formatierungsanforderungen:Dies ist korrekt: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.
- Tool-Ergebnisblöcke müssen unmittelbar auf ihre entsprechenden Tool-Nutzungsblöcke in der Nachrichtenhistorie folgen. Sie können keine Nachrichten zwischen der Tool-Nutzungsnachricht des Assistenten und der Tool-Ergebnisnachricht des Benutzers einfügen.
- In der Benutzernachricht, die Tool-Ergebnisse enthält, müssen die tool_result Blöcke ZUERST im Inhalts-Array stehen. Jeder Text muss NACH allen Tool-Ergebnissen kommen.
Beispiel eines erfolgreichen Tool-Ergebnisses
Beispiel eines erfolgreichen Tool-Ergebnisses
JSON
Beispiel eines Tool-Ergebnisses mit Bildern
Beispiel eines Tool-Ergebnisses mit Bildern
JSON
Beispiel eines leeren Tool-Ergebnisses
Beispiel eines leeren Tool-Ergebnisses
JSON
Beispiel eines Tool-Ergebnisses mit Dokumenten
Beispiel eines Tool-Ergebnisses mit Dokumenten
JSON
Umgang mit Ergebnissen von Server-Tools
Claude führt das Tool intern aus und integriert die Ergebnisse direkt in seine Antwort, ohne zusätzliche Benutzerinteraktion zu erfordern.Unterschiede zu anderen APIsIm Gegensatz zu APIs, die Tool-Nutzung trennen oder spezielle Rollen wie
tool
oder function
verwenden, integriert Anthropics 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.Umgang mit dem max_tokens
Stop-Grund
Wenn Claudes Antwort aufgrund des Erreichens des max_tokens
Limits abgeschnitten wird und die abgeschnittene Antwort einen unvollständigen Tool-Nutzungsblock enthält, müssen Sie die Anfrage mit einem höheren max_tokens
Wert wiederholen, um die vollständige Tool-Nutzung zu erhalten.
Umgang mit dem pause_turn
Stop-Grund
Bei der Verwendung von Server-Tools wie Websuche kann die API einen pause_turn
Stop-Grund zurückgeben, der anzeigt, dass die API einen lang laufenden Turn pausiert hat.
So handhaben Sie den pause_turn
Stop-Grund:
pause_turn
:
- Unterhaltung fortsetzen: Geben Sie die pausierte Antwort unverändert in einer nachfolgenden Anfrage zurück, damit Claude seinen Turn fortsetzen kann
- Bei Bedarf modifizieren: Sie können optional den Inhalt vor der Fortsetzung modifizieren, wenn Sie die Unterhaltung unterbrechen oder umleiten möchten
- Tool-Status beibehalten: Schließen Sie dieselben Tools in die Fortsetzungsanfrage ein, um die Funktionalität aufrechtzuerhalten
Fehlerbehebung
Es gibt verschiedene Arten von Fehlern, die bei der Verwendung von Tools mit Claude auftreten können:Tool-Ausführungsfehler
Tool-Ausführungsfehler
Wenn das Tool selbst während der Ausführung einen Fehler wirft (z.B. ein Netzwerkfehler beim Abrufen von Wetterdaten), können Sie die Fehlermeldung im Claude wird dann diesen Fehler in seine Antwort an den Benutzer einbauen, z.B. “Es tut mir leid, ich konnte das aktuelle Wetter nicht abrufen, weil die Wetterdienst-API nicht verfügbar ist. Bitte versuchen Sie es später erneut.”
content
zusammen mit "is_error": true
zurückgeben:JSON
Ungültiger Tool-Name
Ungültiger Tool-Name
Wenn Claudes versuchte Verwendung eines Tools ungültig ist (z.B. fehlende erforderliche Parameter), bedeutet das normalerweise, dass nicht genügend Informationen vorhanden waren, damit Claude das Tool korrekt verwenden konnte. Ihr bester Ansatz während der Entwicklung ist es, die Anfrage erneut mit detaillierteren Wenn eine Tool-Anfrage ungültig ist oder Parameter fehlen, wird Claude 2-3 Mal mit Korrekturen wiederholen, bevor es sich beim Benutzer entschuldigt.
description
Werten in Ihren Tool-Definitionen zu versuchen.Sie können jedoch auch die Unterhaltung mit einem tool_result
fortsetzen, das den Fehler anzeigt, und Claude wird versuchen, das Tool erneut mit den fehlenden Informationen zu verwenden:JSON
<search_quality_reflection> Tags
<search_quality_reflection> Tags
Server-Tool-Fehler
Server-Tool-Fehler
Wenn Server-Tools auf Fehler stoßen (z.B. Netzwerkprobleme bei der Websuche), wird Claude diese Fehler transparent behandeln und versuchen, eine alternative Antwort oder Erklärung für den Benutzer zu geben. Im Gegensatz zu Client-Tools müssen Sie keine
is_error
Ergebnisse für Server-Tools behandeln.Für Websuche speziell umfassen mögliche Fehlercodes:too_many_requests
: Rate-Limit überschritteninvalid_input
: Ungültiger Suchanfrage-Parametermax_uses_exceeded
: Maximale Websuche-Tool-Nutzungen überschrittenquery_too_long
: Anfrage überschreitet maximale Längeunavailable
: Ein interner Fehler ist aufgetreten
Parallele Tool-Aufrufe funktionieren nicht
Parallele Tool-Aufrufe funktionieren nicht
Wenn Claude nicht die erwarteten parallelen Tool-Aufrufe macht, überprüfen Sie diese häufigen Probleme:1. Falsche Tool-Ergebnis-FormatierungDas häufigste Problem ist die falsche Formatierung von Tool-Ergebnissen in der Unterhaltungshistorie. Dies “lehrt” Claude, parallele Aufrufe zu vermeiden.Speziell für parallele Tool-Nutzung:Siehe die allgemeinen Formatierungsanforderungen oben für andere Formatierungsregeln.2. Schwaches PromptingStandard-Prompting ist möglicherweise nicht ausreichend. Verwenden Sie stärkere Sprache:3. Parallele Tool-Nutzung messenUm zu überprüfen, ob parallele Tool-Aufrufe funktionieren:4. Modellspezifisches Verhalten
- ❌ Falsch: Separate Benutzernachrichten für jedes Tool-Ergebnis senden
- ✅ Richtig: Alle Tool-Ergebnisse müssen in einer einzigen Benutzernachricht sein
- Claude Opus 4.1, Opus 4 und Sonnet 4: Exzellent bei paralleler Tool-Nutzung mit minimalem Prompting
- Claude Sonnet 3.7: Benötigt möglicherweise stärkeres Prompting oder token-effiziente Tool-Nutzung
- Claude Haiku: Weniger wahrscheinlich, parallele Tools ohne explizites Prompting zu verwenden