Wird geladen

Umgang mit Nachrichtenblöcken

Lektion 247 Min.

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:

python
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 verwendet werden sollen

Der ToolUse-Block enthält:

  • Eine ID zur Verfolgung des Tool-Aufrufs
  • Den Namen der aufzurufenden Funktion (wie "get_current_datetime")
  • Eingabeparameter, formatiert als Dictionary
  • Die Typbezeichnung "tool_use"

Gesprächsverlauf mit Multi-Block-Nachrichten verwalten

Denke daran, dass Claude den Gesprächsverlauf nicht speichert - du musst ihn manuell verwalten. Wenn du mit Tool-Antworten arbeitest, musst du die gesamte Inhaltsstruktur bewahren, einschließlich aller Blöcke.

So fügst du eine Multi-Block-Assistant-Nachricht korrekt zu deinem Gesprächsverlauf hinzu:

messages.append({
    "role": "assistant",
    "content": response.content
})

Dies bewahrt sowohl den Text-Block als auch den Tool-Use-Block, was entscheidend ist, um den Gesprächskontext bei nachfolgenden API-Aufrufen aufrechtzuerhalten.

Der vollständige Tool-Nutzungsablauf

Der Tool-Nutzungsprozess folgt diesem Muster:

  1. Sende eine Benutzernachricht mit Tool-Schema an Claude
  2. Empfange eine Assistant-Nachricht mit Text-Block und Tool-Use-Block
  3. Extrahiere die Tool-Informationen und führe die eigentliche Funktion aus
  4. Sende das Tool-Ergebnis zusammen mit dem vollständigen Gesprächsverlauf zurück an Claude
  5. Empfange die endgültige Antwort von Claude

Jeder Schritt erfordert eine sorgfältige Handhabung der Nachrichtenstruktur, um sicherzustellen, dass Claude den vollständigen Kontext hat, den es benötigt, um genaue Antworten zu liefern.

Hilfsfunktionen aktualisieren

Wenn du Hilfsfunktionen wie add_user_message() und add_assistant_message() verwendet hast, musst du sie aktualisieren, um Multi-Block-Inhalte zu verarbeiten. Die aktuellen Versionen unterstützen wahrscheinlich nur einzelne Textblöcke, aber jetzt müssen sie die komplexeren Inhaltsstrukturen berücksichtigen, die Tool-Use-Blöcke enthalten.

Diese Handhabung von Multi-Block-Nachrichten ist essenziell für den Aufbau robuster Anwendungen, die Claudes Tool-Fähigkeiten nahtlos integrieren können, während ein ordnungsgemäßer Gesprächsfluss aufrechterhalten wird.