Tool-Nutzung (Funktionsaufrufe)
Claude ist in der Lage, mit externen clientseitigen Tools und Funktionen zu interagieren, wodurch Sie Claude mit Ihren eigenen benutzerdefinierten Tools ausstatten können, um eine größere Vielfalt an Aufgaben auszuführen.
Lernen Sie alles, was Sie für die Beherrschung der Tool-Nutzung mit Claude benötigen, in unserem neuen umfassenden Tool-Nutzungs-Kurs! Bitte teilen Sie weiterhin Ihre Ideen und Vorschläge über dieses Formular.
Hier ist ein Beispiel, wie man Tools für Claude über die Messages API bereitstellt:
Wie die Tool-Nutzung funktioniert
Integrieren Sie externe Tools mit Claude in diesen Schritten:
Stellen Sie Claude Tools und eine Benutzeranfrage zur Verfügung
- Definieren Sie Tools mit Namen, Beschreibungen und Eingabe-Schemata in Ihrer API-Anfrage.
- Fügen Sie eine Benutzeranfrage hinzu, die diese Tools benötigen könnte, z.B. “Wie ist das Wetter in San Francisco?”
Claude entscheidet sich für die Verwendung eines Tools
- Claude bewertet, ob Tools bei der Beantwortung der Benutzeranfrage helfen können.
- Falls ja, erstellt Claude eine korrekt formatierte Tool-Nutzungsanfrage.
- Die API-Antwort hat einen
stop_reason
vontool_use
, der Claudes Absicht signalisiert.
Extrahieren Sie die Tool-Eingabe, führen Sie Code aus und geben Sie Ergebnisse zurück
- Extrahieren Sie auf Ihrer Seite den Tool-Namen und die Eingabe aus Claudes Anfrage.
- Führen Sie den eigentlichen Tool-Code clientseitig aus.
- Setzen Sie das Gespräch mit einer neuen
user
-Nachricht fort, die einentool_result
-Inhaltsblock enthält.
Claude verwendet das Tool-Ergebnis zur Formulierung einer Antwort
- Claude analysiert die Tool-Ergebnisse, um seine endgültige Antwort auf die ursprüngliche Benutzeranfrage zu erstellen.
Hinweis: Schritte 3 und 4 sind optional. Für einige Arbeitsabläufe könnte Claudes Tool-Nutzungsanfrage (Schritt 2) alles sein, was Sie benötigen, ohne Ergebnisse an Claude zurückzusenden.
Tools werden vom Benutzer bereitgestellt
Es ist wichtig zu beachten, dass Claude keinen Zugriff auf eingebaute serverseitige Tools hat. Alle Tools müssen explizit von Ihnen, dem Benutzer, in jeder API-Anfrage bereitgestellt werden. Dies gibt Ihnen volle Kontrolle und Flexibilität über die Tools, die Claude verwenden kann.
Die Computer-Nutzung (Beta) ist eine Ausnahme - sie führt Tools ein, die von Anthropic bereitgestellt, aber von Ihnen, dem Benutzer, implementiert werden.
Wie man die Tool-Nutzung implementiert
Auswahl eines Modells
Verwenden Sie im Allgemeinen Claude 3.5 Sonnet oder Claude 3 Opus für komplexe Tools und mehrdeutige Anfragen; sie handhaben mehrere Tools besser und suchen bei Bedarf nach Klärung.
Verwenden Sie Claude 3.5 Haiku oder Claude 3 Haiku für einfache Tools, beachten Sie aber, dass sie fehlende Parameter ableiten können.
Spezifizierung von Tools
Tools werden im tools
Top-Level-Parameter der API-Anfrage spezifiziert. Jede Tool-Definition enthält:
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. |
Tool-Nutzungs-Systemprompt
Wenn Sie die Anthropic API mit dem tools
Parameter aufrufen, erstellen wir einen speziellen Systemprompt aus den Tool-Definitionen, der Tool-Konfiguration und jedem benutzerspezifischen Systemprompt. Der erstellte Prompt ist darauf ausgelegt, das Modell anzuweisen, das/die angegebene(n) Tool(s) zu verwenden und den notwendigen Kontext für die ordnungsgemäße Funktionsweise 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 zu verwenden sind. 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. Fügen Sie erst dann Beispiele hinzu, wenn Sie die Beschreibung vollständig ausgearbeitet haben.
Die gute Beschreibung erklärt klar, was das Tool tut, 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.
Steuerung von Claudes Ausgabe
Erzwingen der Tool-Nutzung
In manchen Fällen möchten Sie vielleicht, 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 im tool_choice
Feld wie folgt angeben:
Bei der Arbeit mit dem tool_choice Parameter haben wir drei mögliche Optionen:
auto
erlaubt Claude zu entscheiden, ob es bereitgestellte Tools aufrufen soll oder nicht. Dies ist der Standardwert.any
sagt Claude, 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.
Dieses Diagramm veranschaulicht, wie jede Option funktioniert:
Beachten Sie, dass wenn Sie tool_choice
als any
oder tool
haben, wir die Assistenten-Nachricht vorausfüllen, um die Verwendung eines Tools zu erzwingen. Dies bedeutet, dass die Modelle keinen Chain-of-Thought text
Inhaltsblock vor tool_use
Inhaltsblöcken ausgeben werden, auch wenn sie explizit darum gebeten werden.
Unsere Tests haben gezeigt, dass dies die Leistung nicht reduzieren sollte. Wenn Sie Chain-of-Thought beibehalten möchten (besonders bei Opus), während Sie immer noch die Verwendung eines bestimmten Tools anfordern, können Sie {"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? Verwende das get_weather Tool in deiner Antwort.
JSON-Ausgabe
Tools müssen nicht unbedingt clientseitige 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-Nutzungsbeispiele für ein vollständiges Arbeitsbeispiel.
Chain of Thought
Bei der Verwendung von Tools wird Claude oft seine “Gedankenkette” zeigen, d.h. die schrittweise Argumentation, die es verwendet, um das Problem zu zerlegen und zu entscheiden, welche Tools zu verwenden sind. Das Claude 3 Opus Modell wird dies tun, wenn tool_choice
auf auto
gesetzt ist (dies ist der Standardwert, siehe Erzwingen der Tool-Nutzung), und Sonnet und Haiku können dazu aufgefordert werden.
Zum Beispiel könnte Claude auf die Aufforderung “Wie ist das Wetter gerade in San Francisco und wie spät ist es dort?” wie folgt antworten:
Diese Gedankenkette gibt Einblick in Claudes Denkprozess und kann helfen, unerwartetes Verhalten zu debuggen.
Mit dem Claude 3 Sonnet Modell ist die Gedankenkette standardmäßig weniger häufig, aber Sie können Claude auffordern, seine Argumentation zu zeigen, indem Sie etwas wie "Bevor du antwortest, erkläre deine Argumentation Schritt für Schritt in Tags."
zur Benutzer-Nachricht oder zum System-Prompt hinzufügen.
Es ist wichtig zu beachten, dass während die <thinking>
Tags eine häufige Konvention sind, die Claude verwendet, um seine Gedankenkette zu kennzeichnen, sich das genaue Format (wie dieser XML-Tag genannt wird) im Laufe der Zeit ändern kann. Ihr Code sollte die Gedankenkette wie jeden anderen vom Assistenten generierten Text behandeln und sich nicht auf das Vorhandensein oder die spezifische Formatierung der <thinking>
Tags verlassen.
Deaktivieren der parallelen 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
im tool_choice
Feld setzen.
- Wenn der
tool_choice
Typauto
ist, stellt dies sicher, dass Claude höchstens ein Tool verwendet - Wenn der
tool_choice
Typany
odertool
ist, stellt dies sicher, dass Claude genau ein Tool verwendet
Umgang mit Tool-Nutzungs- und Tool-Ergebnis-Inhaltsblöcken
Wenn Claude sich entscheidet, eines der von Ihnen bereitgestellten Tools zu verwenden, wird es eine Antwort mit einem stop_reason
von tool_use
und einem oder mehreren tool_use
Inhaltsblöcken in der API-Antwort zurückgeben, die Folgendes enthalten:
id
: Eine eindeutige Kennung für diesen bestimmten Tool-Nutzungsblock. Diese wird später verwendet, um die Tool-Ergebnisse zuzuordnen.name
: Der Name des verwendeten Tools.input
: Ein Objekt, das die Eingabe enthält, die an das Tool übergeben wird, entsprechend deminput_schema
des Tools.
Wenn Sie eine Tool-Nutzungsantwort erhalten, sollten Sie:
- Extrahieren Sie
name
,id
undinput
aus demtool_use
Block. - Führen Sie das tatsächliche Tool in Ihrem Codebase aus, das diesem Tool-Namen entspricht, und übergeben Sie die Tool-
input
. - Setzen Sie das Gespräch fort, indem Sie eine neue Nachricht mit der
role
vonuser
senden und einencontent
Block, 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"
) oder Liste von verschachtelten Inhaltsblöcken (z.B."content": [{"type": "text", "text": "15 Grad"}]
). Diese Inhaltsblöcke können die Typentext
oderimage
verwenden.is_error
(optional): Auftrue
setzen, wenn die Tool-Ausführung zu einem Fehler führte.
Nach Erhalt des Tool-Ergebnisses wird Claude diese Information verwenden, um eine Antwort auf die ursprüngliche Benutzeranfrage zu generieren.
Unterschiede zu anderen APIs
Im 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 clientseitige Inhalte und tool_result
, während assistant
Nachrichten KI-generierte Inhalte und tool_use
enthalten.
Fehlerbehandlung
Es gibt verschiedene Arten von Fehlern, die bei der Verwendung von Tools mit Claude auftreten können:
Tool-Nutzungsbeispiele
Hier sind einige Codebeispiele, die verschiedene Tool-Nutzungsmuster und -Techniken demonstrieren. Der Kürze halber sind die Tools einfache Tools, und die Tool-Beschreibungen sind kürzer als ideal wäre, um die beste Leistung zu gewährleisten.
Preisgestaltung
Tool-Nutzungsanfragen werden wie jede andere Claude API-Anfrage berechnet, basierend auf der Gesamtzahl der an das Modell gesendeten Eingabe-Token (einschließlich im tools
Parameter) und der Anzahl der generierten Ausgabe-Token.”
Die zusätzlichen Token aus der Tool-Nutzung stammen von:
- Dem
tools
Parameter in API-Anfragen (Tool-Namen, Beschreibungen und Schemata) tool_use
Inhaltsblöcken in API-Anfragen und -Antwortentool_result
Inhaltsblöcken in API-Anfragen
Wenn Sie tools
verwenden, fügen wir auch automatisch einen speziellen Systemprompt für das Modell hinzu, der die Tool-Nutzung ermöglicht. Die Anzahl der für jedes Modell erforderlichen Tool-Nutzungs-Token sind unten aufgeführt (ohne die oben aufgeführten zusätzlichen Token):
Modell | Tool-Auswahl | Token-Anzahl des Tool-Nutzungs-Systemprompts |
---|---|---|
Claude 3.5 Sonnet (Okt) | auto any , tool | 346 Token 313 Token |
Claude 3 Opus | auto any , tool | 530 Token 281 Token |
Claude 3 Sonnet | auto any , tool | 159 Token 235 Token |
Claude 3 Haiku | auto any , tool | 264 Token 340 Token |
Claude 3.5 Sonnet (Juni) | auto any , tool | 294 Token 261 Token |
Diese Token-Anzahlen werden zu Ihren normalen Ein- und Ausgabe-Token hinzugefügt, um die Gesamtkosten einer Anfrage zu berechnen. Siehe unsere Modellübersichtstabelle für aktuelle Preise pro Modell.
Wenn Sie einen Tool-Nutzungsprompt senden, wird wie bei jeder anderen API-Anfrage die Antwort sowohl Ein- als auch Ausgabe-Token-Anzahlen als Teil der gemeldeten usage
Metriken ausgeben.
Nächste Schritte
Erkunden Sie unser Repository mit sofort implementierbaren Tool-Nutzungs-Codebeispielen in unseren Kochbüchern:
Taschenrechner-Tool
Lernen Sie, wie Sie ein einfaches Taschenrechner-Tool mit Claude für präzise numerische Berechnungen integrieren.
Kundenservice-Agent
Bauen Sie einen reaktionsschnellen Kundenservice-Bot, der clientseitige Tools nutzt, um den Support zu verbessern.
JSON-Extraktor
Sehen Sie, wie Claude und Tool-Nutzung strukturierte Daten aus unstrukturiertem Text extrahieren können.
Was this page helpful?