Wird geladen

Mehrstufige Konversationen

Lektion 47 Min.

Wenn du mit der Anthropic API und Claude arbeitest, gibt es ein entscheidendes Konzept, das du verstehen musst: Claude speichert keinen deiner Konversationsverläufe. Jede Anfrage, die du stellst, ist völlig unabhängig, ohne Erinnerung an vorherige Austausche.

Das bedeutet, wenn du eine mehrstufige Konversation führen möchtest, bei der sich Claude an den Kontext früherer Nachrichten erinnert, musst du den Konversationszustand selbst verwalten.

Das Problem mit zustandslosen Konversationen

Angenommen, du fragst Claude „Was ist Quantencomputing?" und erhältst eine gute Antwort. Dann folgst du mit „Schreibe einen weiteren Satz" – Claude hat keine Ahnung, worauf du dich bezieht. Es wird einen Satz über etwas völlig Zufälliges schreiben, weil es sich nicht an die Diskussion über Quantencomputing erinnert.

Wie mehrstufige Konversationen funktionieren

Um den Konversationskontext aufrechtzuerhalten, musst du zwei Dinge tun:

  • Manuell eine Liste aller Nachrichten in deinem Code führen
  • Den vollständigen Nachrichtenverlauf mit jeder Anfrage senden

Hier ist der Ablauf, der tatsächlich funktioniert:

  1. Sende deine erste Benutzernachricht an Claude
  2. Nimm Claudes Antwort und füge sie als Assistant-Nachricht zu deiner Nachrichtenliste hinzu
  3. Füge deine Folgefrage als weitere Benutzernachricht hinzu
  4. Sende den gesamten Konversationsverlauf an Claude

Hilfsfunktionen erstellen

Um die Konversationsverwaltung zu vereinfachen, kannst du drei Hilfsfunktionen erstellen:

python
def add_user_message(messages, text):
    user_message = {"role": "user", "content": text}
    messages.append(user_message)

def add_assistant_message(messages, text):
    assistant_message = {"role": "assistant", "content": text}
    messages.append(assistant_message)

def chat(messages):
    message = client.messages.create(
        model=model,
        max_tokens=1000,
        messages=messages,
    )
    return message.content[0].text

Alles zusammenfügen

So verwendest du diese Funktionen, um eine Konversation aufrechtzuerhalten:

python
# Beginne mit einer leeren Nachrichtenliste
messages = []

# Füge die ursprüngliche Nutzerfrage hinzu
add_user_message(messages, "Define quantum computing in one sentence")

# Hole die Antwort von Claude
answer = chat(messages)

# Füge Claudes Antwort zum Gesprächsverlauf hinzu
add_assistant_message(messages, answer)

# Füge eine Anschlussfrage hinzu
add_user_message(messages, "Write another sentence")

# Hole die Antwort auf die Anschlussfrage mit vollständigem Kontext
final_answer = chat(messages)

Jetzt wird Claude verstehen, dass sich „Schreibe einen weiteren Satz" auf die Erweiterung der Definition von Quantencomputing bezieht, weil du den vollständigen Konversationskontext bereitgestellt hast.

Wichtige Erkenntnisse

Denke daran, dass jeder API-Aufruf an Claude unabhängig ist. Wenn du konversationellen Kontext möchtest, musst du:

  • Alle Nachrichten lokal in deiner Anwendung speichern
  • Den vollständigen Nachrichtenverlauf mit jeder Anfrage senden
  • Nachrichten ordnungsgemäß mit den Rollen „user" und „assistant" formatieren

Diese Hilfsfunktionen werden während deiner gesamten Arbeit mit Claude unerlässlich sein und es viel einfacher machen, Anwendungen zu erstellen, die sich wie natürliche Konversationen anfühlen, statt wie isolierte Frage-und-Antwort-Austausche.