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:

1

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?”
2

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 von tool_use, der Claudes Absicht signalisiert.
3

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 einen tool_result-Inhaltsblock enthält.
4

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:

ParameterBeschreibung
nameDer Name des Tools. Muss dem Regex ^[a-zA-Z0-9_-]{1,64}$ entsprechen.
descriptionEine detaillierte Klartextbeschreibung dessen, 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.

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:

In dieser Umgebung haben Sie Zugriff auf eine Reihe von Tools, die Sie zur Beantwortung der Frage des Benutzers verwenden können.
{{ FORMATIERUNGSANWEISUNGEN }}
String- und Skalar-Parameter sollten wie angegeben spezifiziert werden, während Listen und Objekte das JSON-Format verwenden sollten. Beachten Sie, dass Leerzeichen für String-Werte nicht entfernt werden. Die Ausgabe muss kein gültiges XML sein und wird mit regulären Ausdrücken geparst.
Hier sind die verfügbaren Funktionen im JSONSchema-Format:
{{ TOOL-DEFINITIONEN IM JSON-SCHEMA }}
{{ BENUTZER-SYSTEMPROMPT }}
{{ TOOL-KONFIGURATION }}

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:

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

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:

JSON
{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "<thinking>Um diese Frage zu beantworten, werde ich: 1. Das get_weather Tool verwenden, um das aktuelle Wetter in San Francisco zu erhalten. 2. Das get_time Tool verwenden, um die aktuelle Zeit in der America/Los_Angeles Zeitzone zu erhalten, die San Francisco, CA abdeckt.</thinking>"
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": {"location": "San Francisco, CA"}
    }
  ]
}

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 Typ auto ist, stellt dies sicher, dass Claude höchstens ein Tool verwendet
  • Wenn der tool_choice Typ any oder tool 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 dem input_schema des Tools.

Wenn Sie eine Tool-Nutzungsantwort erhalten, sollten Sie:

  1. Extrahieren Sie name, id und input aus dem tool_use Block.
  2. Führen Sie das tatsächliche Tool in Ihrem Codebase aus, das diesem Tool-Namen entspricht, und übergeben Sie die Tool-input.
  3. Setzen Sie das Gespräch fort, indem Sie eine neue Nachricht mit der role von user senden und einen content Block, 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") oder Liste von verschachtelten Inhaltsblöcken (z.B. "content": [{"type": "text", "text": "15 Grad"}]). Diese Inhaltsblöcke können die Typen text oder image verwenden.
    • is_error (optional): Auf true 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 -Antworten
  • tool_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):

ModellTool-AuswahlToken-Anzahl des Tool-Nutzungs-Systemprompts
Claude 3.5 Sonnet (Okt)auto
any, tool
346 Token
313 Token
Claude 3 Opusauto
any, tool
530 Token
281 Token
Claude 3 Sonnetauto
any, tool
159 Token
235 Token
Claude 3 Haikuauto
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: