Wenn du mit der Tool-Funktionalität von Claude arbeitest, wirst du auf eine neue Art von Antwortstruktur stoßen, die sich von den einfachen Textantworten unterscheidet, die du bisher gesehen hast. Anstatt nur einen einzelnen Textblock zurückzubekommen, kann Claude jetzt Multi-Block-Nachrichten zurückgeben, die sowohl Text als auch Informationen zur Tool-Nutzung enthalten.
Tool-fähige API-Aufrufe durchführen
Um Claude die Nutzung von Tools zu ermöglichen, musst du einen tools-Parameter in deinen API-Aufruf einbeziehen. So strukturierst du die Anfrage:
messages = []
messages.append({
"role": "user",
"content": "What is the exact time, formatted as HH:MM:SS?"
})
response = client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema],
)Der tools-Parameter nimmt eine Liste von JSON-Schemas entgegen, die die verfügbaren Funktionen beschreiben, die Claude aufrufen kann.
Multi-Block-Nachrichten verstehen
Wenn Claude sich entscheidet, ein Tool zu nutzen, gibt es eine Assistant-Nachricht mit mehreren Blöcken in der Inhaltsliste zurück. Dies ist eine bedeutende Veränderung gegenüber den einfachen, reinen Textantworten, mit denen du bisher gearbeitet hast.

Eine Multi-Block-Nachricht enthält typischerweise:
- Text-Block - Menschenlesbarer Text, der erklärt, was Claude tut (wie „Ich kann dir helfen, die aktuelle Uhrzeit herauszufinden. Lass mich diese Information für dich finden")
- ToolUse-Block - Anweisungen für deinen Code, welches Tool aufgerufen werden soll und welche Parameter zu verwenden sind
Der ToolUse-Block enthält:
- Eine ID zur Nachverfolgung des Tool-Aufrufs
- Den Namen der aufzurufenden Funktion (wie „get_current_datetime")
- Eingabeparameter, formatiert gemäß deinem JSON-Schema
- Die Typbezeichnung „tool_use"
Umgang mit Nachrichtenverlauf bei Multi-Block-Inhalten
Hier kommt der entscheidende Teil: Claude speichert den Gesprächsverlauf nicht, daher musst du ihn manuell verwalten. Wenn du mit Tool-Antworten arbeitest, musst du die gesamte Inhaltsstruktur bewahren, einschließlich aller Blöcke.
Anstatt nur den Text zu extrahieren, musst du den vollständigen Antwortinhalt anhängen:
messages.append({
"role": "assistant",
"content": response.content
})Dies bewahrt sowohl den Textblock als auch den ToolUse-Block und erhält so den vollständigen Gesprächskontext für zukünftige API-Aufrufe.
Der vollständige Ablauf
Der Prozess der Tool-Nutzung folgt diesem Muster:

- Sende die Nutzernachricht mit dem Tool-Schema an Claude
- Empfange die Multi-Block-Assistant-Nachricht (Text + Tool-Nutzung)
- Extrahiere die Tool-Aufrufinformationen und führe die Funktion aus
- Sende das Tool-Ergebnis mit dem vollständigen Nachrichtenverlauf zurück an Claude
- Empfange die finale Antwort von Claude
Jeder Schritt erfordert eine sorgfältige Handhabung der Nachrichtenstruktur, um die Kontinuität des Gesprächs zu bewahren. Die zentrale Erkenntnis ist, dass Tool-fähige Gespräche komplexere Nachrichtenformate beinhalten, aber das grundlegende Prinzip der Bewahrung des vollständigen Nachrichtenverlaufs bleibt dasselbe.
Hilfsfunktionen aktualisieren
Wenn du Hilfsfunktionen wie add_user_message und add_assistant_message verwendet hast, musst du sie aktualisieren, damit sie Multi-Block-Inhalte verarbeiten können. Die aktuellen Versionen unterstützen wahrscheinlich nur einzelne Textblöcke, aber jetzt müssen sie die komplexeren Inhaltsstrukturen berücksichtigen, die ToolUse-Blöcke enthalten.