Nachdem Claude einen Tool-Aufruf angefordert hat, musst du die Funktion ausführen und die Ergebnisse zurücksenden. Dies vervollständigt den Tool-Nutzungs-Workflow, indem Claude die angeforderten Informationen bereitgestellt werden.
Die Tool-Funktion ausführen
Wenn Claude mit einem Tool-Use-Block antwortet, extrahierst du die Eingabeparameter und rufst deine Funktion auf. So greifst du auf die Tool-Parameter zu:
response.content[1].inputDies gibt dir ein Dictionary der Argumente, die Claude an deine Funktion übergeben möchte. Da deine Funktion Keyword-Argumente statt eines Dictionarys erwartet, verwendest du Pythons Unpacking-Syntax:
get_current_datetime(**response.content[1].input)
Tool-Result-Block
Nachdem du die Tool-Funktion ausgeführt hast, musst du die Ergebnisse mithilfe eines Tool-Result-Blocks an Claude zurücksenden. Dieser Block befindet sich innerhalb einer User-Nachricht und teilt Claude mit, was bei der Ausführung des Tools passiert ist.

Der Tool-Result-Block hat mehrere wichtige Eigenschaften:
- tool_use_id - Muss mit der id des ToolUse-Blocks übereinstimmen, dem dieses ToolResult entspricht
- content - Ausgabe der Ausführung deines Tools, als String serialisiert
- is_error - True, wenn ein Fehler aufgetreten ist
Umgang mit mehreren Tool-Aufrufen
Claude kann in einer einzigen Antwort mehrere Tool-Aufrufe anfordern. Wenn ein Nutzer beispielsweise fragt „Was ist 10 + 10 und was ist 30 + 30?", könnte Claude mit zwei separaten ToolUse-Blöcken antworten.

Jeder Tool-Aufruf erhält eine eindeutige ID, und du musst diese IDs beim Zurücksenden der Ergebnisse abgleichen. Dies stellt sicher, dass Claude weiß, welches Ergebnis zu welcher Anfrage gehört, selbst wenn die Ergebnisse in einer anderen Reihenfolge eintreffen.

Die Folgeanfrage erstellen
Deine Folgeanfrage an Claude muss den vollständigen Gesprächsverlauf plus das neue Tool-Ergebnis enthalten. Hier ist die Struktur:
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": response.content[1].id,
"content": "15:04:22",
"is_error": False
}]
})Der vollständige Nachrichtenverlauf enthält nun:
- Ursprüngliche User-Nachricht
- Assistant-Nachricht mit Tool-Use-Block
- User-Nachricht mit Tool-Result-Block
Die finale Anfrage stellen
Beim Senden der Folgeanfrage musst du weiterhin das Tool-Schema einbeziehen, auch wenn du nicht erwartest, dass Claude einen weiteren Tool-Aufruf durchführt. Claude benötigt das Schema, um die Tool-Referenzen in deinem Gesprächsverlauf zu verstehen.
client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema]
)
Claude antwortet dann mit einer finalen Nachricht, die die Tool-Ergebnisse in eine natürliche Antwort für den Nutzer einbindet. Der Tool-Nutzungs-Workflow ist nun abgeschlossen - du hast Claude erfolgreich ermöglicht, über deine benutzerdefinierte Funktion auf Echtzeitinformationen zuzugreifen.