Mehrwendige Gespräche: Beibehaltung des Denkverlaufs in der Historie
Auf dieser Seite
Lektion am 2. November 2026 überarbeitet. Sie behandelte zuvor den
prompt_mode-Parameter von Magistral, der mit diesem Modell entfernt wurde. Sie befasst sich nun mit einer Regel, die in der aktuellen Dokumentation hervorgehoben wird: In mehrwendigen Gesprächen muss der Denkverlauf in der Historie verbleiben. Quelle: Reasoning — Mehrwendige Gespräche.
Die Regel: Die vollständige Nachricht wiedergeben
Bei der Chat-Completions-API sind Sie dafür verantwortlich, die Gesprächshistorie bei jedem Turnus zu übermitteln. Die Versuchung ist groß, nur den Antworttext einzuschließen, der kürzer und lesbarer ist. Die Dokumentation von Mistral ist explizit: geben Sie immer die vollständige Nachricht des Assistenten wieder, einschließlich der Fragmente des Denkverlaufs. Das Entfernen des Denkverlaufs von einem Turnus zum nächsten verschlechtert die Modellleistung, da das Modell darauf angewiesen ist, um Kohärenz zu wahren. Das Einsparen von Tokens geht auf Kosten der Qualität.
Referenzcode
Der einfachste Ansatz besteht darin, das Nachrichtenobjekt, das vom SDK zurückgegeben wird, genau so in die Historie einzufügen:
import os
from mistralai.client import Mistral
from mistralai.client.models import TextChunk, UserMessage
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"], timeout_ms=300_000)
messages = []
for question in ["Was ist 17 × 23?", "Multiplizieren Sie nun dieses Ergebnis mit 3."]:
messages.append(UserMessage(content=question))
response = client.chat.complete(
model="mistral-large-4-0",
messages=messages,
reasoning_effort="high",
)
assistant_message = response.choices[0].message
# Anzeige: Nur Antworttext
content = assistant_message.content
if isinstance(content, str):
print(content)
else:
print("".join(c.text for c in content or [] if isinstance(c, TextChunk)))
# Historie: Vollständige Nachricht, einschließlich Denkverlauf
messages.append(assistant_message)
Der Parameter timeout_ms erhöht die Wartezeit des Clients, was nützlich ist, wenn ein langer Denkverlauf die Antwortzeit verlängert. Der entscheidende Punkt ist die letzte Zeile: Sie fügen keine Nachricht hinzu, die nur aus dem Text rekonstruiert wurde, sondern assistant_message selbst.
Die Kosten
Das offizielle Beispiel veranschaulicht die Auswirkung auf Tokens. Im ersten Turnus enthält die Anfrage 25 Eingabetokens: nur die Frage. Das Modell antwortet mit 187 Tokens, einschließlich des Denkverlaufs. Im zweiten Turnus steigt die Eingabe auf 221 Tokens: die erste Frage (25), die vollständige Antwort des ersten Turnus mit ihrem Denkverlauf (187) und die neue Frage (9). Ausgabetokens eines Turnus werden im nächsten zu Eingabetokens, und genau dies ermöglicht es dem Modell, unmissverständlich zu wissen, auf welches „Ergebnis” sich der Benutzer bezieht.
Bei einem langen Gespräch führt dieser Mechanismus dazu, dass die Historie mit jedem Turnus wächst. Zwei praktische Konsequenzen: Überwachen Sie usage.prompt_tokens, die mit dem Gespräch wachsen, und halten Sie das Kontextfenster des Modells im Blick (256.000 Tokens für Small 4, eine Million für Large 4). Wenn die Historie zu schwerfällig wird, beginnen Sie ein neues Gespräch mit einer Zusammenfassung des vorherigen, anstatt Denkverlaufsspuren zu entfernen.
Streaming und die Conversations-API
Im Streaming-Modus wird die Antwort in Paketen (Chunks) geliefert (Lektion 3): Für die Historie müssen Sie daher eine vollständige Nachricht selbst zusammenfügen, einschließlich des Denkverlaufs, was den Code komplizierter macht. Wenn Ihre Anwendung konversationsbasiert ist, bietet die Conversations-API eine Alternative: Die Historie wird serverseitig verwaltet, und Sie setzen den Austausch mit conversations.append fort, ohne vorherige Turnus erneut zu senden (Lektion 4).
Von Magistral generierte Historien
Wenn Sie Gespräche von Magistral erhalten, beachten Sie, dass deren Format variiert hat. Versionen 25.07 und 25.09 haben den Denkverlauf bereits in thinking-Fragmente getrennt, wie es heute der Fall ist. Version 25.06, die erste Veröffentlichung, platzierte den Denkverlauf direkt im Antworttext zwischen <think> und “ Tags. Bevor Sie solche Historien auf Small 4 oder Large 4 wiedergeben, testen Sie die Fortsetzung an wenigen Gesprächen: Es gibt keine Garantie, dass ein aktuelles Modell einen Denkverlauf, der in einem anderen Format von einem anderen Modell geschrieben wurde, nutzt.
Kernaussagen
- Bei Chat-Completions die vollständige Nachricht des Assistenten wiedergeben, einschließlich des Denkverlaufs
- Das Entfernen von Denkverlaufsfragmenten spart Tokens, verschlechtert die Qualität jedoch erheblich
- Ausgabetokens eines Turnus werden im nächsten zu Eingabetokens: Überwachen Sie
prompt_tokens - Bei Streaming vermeidet die Conversations-API die Notwendigkeit, die Historie manuell zusammenzufügen
- Historien von Magistral 25.06 mischten Denkverlauf und Antwort im Text und verwendeten
<think>-Tags