Tool-Nutzung / Function Calling
Tool-Nutzung ermöglicht es Claude, Funktionen aufzurufen, die du definierst — eine Suche, einen Taschenrechner, deine Datenbank, jede beliebige API — und deren Ergebnisse zu verwenden. Sie ist die Grundlage jedes Agenten.
- Wie die vierstufige agentische Schleife funktioniert, von den Tool-Definitionen bis zur finalen Antwort
- Wie man ein Tool in Python mit Name, Beschreibung und JSON-Schema-Eingabe definiert
- Warum Tool-Beschreibungen als Prompts wirken, die prägen, wann und wie Claude sie aufruft
- Wie man Eingaben validiert, Fehler als Ergebnisse zurückgibt und serverseitige Tools sicher nutzt
Die Schleife
Tool-Nutzung ist ein Dialog, kein einzelner Aufruf. Du reichst Claude ein Menü von Tools; Claude wählt eines aus und pausiert; du führst es aus und meldest zurück; Claude fügt das Ergebnis in seine Antwort ein — und wiederholt das bei Bedarf.
- Du fügst eine Liste von Tool-Definitionen hinzu — jede mit einem Namen, einer Beschreibung und einer JSON-Schema-Eingabe.
- Wenn Claude beschließt, eines zu verwenden, gibt es einen tool_use-Block mit Argumenten zurück und stoppt.
- Du führst das Tool selbst aus und schickst die Ausgabe als tool_result zurück.
- Claude fährt fort, ruft möglicherweise weitere Tools auf, bis es antwortet.
Ein Tool definieren (Python)
Eine Tool-Definition ist einfach ein Name, eine Beschreibung in einfacher Sprache und ein JSON-Schema für die Eingabe. Übergib sie in tools und prüfe dann stop_reason, um zu erkennen, wann Claude handeln möchte.
get_weather-Tool + erster Aufruf
tools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
msg = client.messages.create(
model="claude-sonnet-5", max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Rome?"}],
)
# If msg.stop_reason == "tool_use": run the tool, then send a tool_result back.Tipps
Kleine Entscheidungen darüber, wie du Tools definierst und verarbeitest, machen einen großen Unterschied bei der Zuverlässigkeit.
- Beschreibungen sind Prompts. Eine klare Tool-
descriptionund Parameter-Dokumentation verbessern enorm, wann/wie Claude es aufruft. - Validiere Eingaben, die du erhältst, bevor du sie ausführst — vertraue ihnen niemals blind.
- Gib Fehler als Ergebnisse zurück. Wenn ein Tool fehlschlägt, schicke ein
tool_result, das den Fehler beschreibt, damit Claude sich erholen kann. - Serverseitige Tools. Anthropic bietet außerdem integrierte Tools an (z. B. Websuche, Codeausführung, Computer-Use) — prüfe die Dokumentation für das aktuelle Menü.
:::warning Tools = Aktionen = Risiko Ein Tool, das echte Aktionen ausführt, erbt ein Sicherheitsmodell. Wende das Least-Privilege-Prinzip an und behalte bei riskanten Aufrufen einen Menschen in der Schleife — siehe Agenten & Tools absichern. :::
Überprüfe dich selbst
0/3- Tool-Nutzung ist eine Schleife: Tool-Definitionen schicken, Claude gibt einen tool_use-Block zurück und stoppt, du führst aus und gibst ein tool_result zurück, Claude fährt fort, bis es antwortet.
- Eine Tool-Definition ist ein Name, eine Beschreibung und eine JSON-Schema-Eingabe — übergib sie in tools und prüfe stop_reason == tool_use.
- Beschreibungen sind Prompts; validiere Eingaben vor der Ausführung; gib Fehlschläge als tool_result-Fehler zurück, damit Claude sich erholen kann.
- Anthropic bietet außerdem serverseitige Tools an, und jedes Tool, das echte Aktionen ausführt, braucht Least Privilege plus einen Menschen in der Schleife.