tools
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
get_weather
erwartet ein Eingabeobjekt mit einem erforderlichen location
String und einem optionalen unit
String, der entweder “celsius” oder “fahrenheit” sein muss.tools
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:
Beispiel einer guten Tool-Beschreibung
Beispiel einer schlechten Tool-Beschreibung
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.
tool_choice
Feld wie folgt spezifizieren:
auto
erlaubt es Claude zu entscheiden, ob bereitgestellte Tools aufgerufen werden sollen oder nicht. Dies ist der Standardwert, wenn tools
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 keine tools
bereitgestellt werden.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.
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.
record_summary
Tool mit einem bestimmten Schema verwenden. Siehe Tool-Nutzung mit Claude für ein vollständiges funktionierendes Beispiel.
tool_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:
disable_parallel_tool_use=true
setzen, wenn tool_choice Typ auto
ist, was sicherstellt, dass Claude höchstens ein Tool verwendetdisable_parallel_tool_use=true
setzen, wenn tool_choice Typ any
oder tool
ist, was sicherstellt, dass Claude genau ein Tool verwendetVollständiges Beispiel für parallele Tool-Nutzung
Vollständiges Testskript für parallele Tools
System-Prompts für parallele Tool-Nutzung
Benutzernachrichten-Prompting
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.stop_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 dem input_schema
des Tools.Beispiel API-Antwort mit einem `tool_use` Inhaltsblock
name
, die id
und die input
aus dem tool_use
Block extrahieren.input
übergeben.role
von user
und einem content
Block senden, der den tool_result
Typ und die folgenden Informationen enthält:
tool_use_id
: Die id
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 Typen text
, image
oder document
verwenden.is_error
(optional): Auf true
setzen, wenn die Tool-Ausführung zu einem Fehler führte.Beispiel eines erfolgreichen Tool-Ergebnisses
Beispiel eines Tool-Ergebnisses mit Bildern
Beispiel eines leeren Tool-Ergebnisses
Beispiel eines Tool-Ergebnisses mit Dokumenten
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.max_tokens
Stop-Grundmax_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.
pause_turn
Stop-Grundpause_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
:
Tool-Ausführungsfehler
content
zusammen mit "is_error": true
zurückgeben:Ungültiger Tool-Name
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:<search_quality_reflection> Tags
Server-Tool-Fehler
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 aufgetretenParallele Tool-Aufrufe funktionieren nicht