Zum Hauptinhalt springen
Lektion 12 von 12 · KI-Logik mit Mistral: reasoning_effort, Small 4 und Large 4

Die richtige Anstrengungsstufe für das Nachdenken wählen

Lektion 12 von 12 Aktualisiert am 2. November 2026 Entwickler
Auf dieser Seite
  1. Zwei Regler statt einer Modellpalette
  2. Die Entscheidungsmatrix
  3. Berechnen Sie vor dem Skalieren
  4. Eine Routing-Architektur
  5. Best Practices für die Produktion
  6. Kurzzusammenfassung
  7. Wichtige Erkenntnisse
  8. Testen Sie Ihr Wissen

Lektion am 2. November 2026 überarbeitet. Sie verglich zuvor die „anpassbare” Nachdenkfähigkeit von Mistral Small mit die „native” von Magistral, doch Magistral wurde am 31. Juli 2026 eingestellt. Die Wahl liegt nun zwischen Generalistenmodellen und reasoning_effort-Stufen. Quellen: Nachdenken · Small 4 und Large 4 Modellkarten.

Zwei Regler statt einer Modellpalette

Die Wahl eines Nachdenkmodells bei Mistral bedeutete früher die Auswahl zwischen zwei getrennten Modellsammlungen. Heute bedeutet es das Einstellen zweier Regler: das Modell (Small 4 für die meisten Aufgaben, Large 4 für die schwierigsten Fälle) und die Anstrengungsstufe (none oder high bei Small 4; low, medium oder high bei Large 4). Eine einzelne Anwendung kann und sollte häufig mehrere Kombinationen nutzen.

Die Entscheidungsmatrix

SituationStarteinstellungWarum
Faktenfrage, Umschreibung, ExtraktionSmall 4, noneEs gibt nichts zu überlegen: Nachdenken würde nur Latenz und Token hinzufügen
Mehrstufige Berechnung, routinemäßiges Debugging, einfache VergleicheSmall 4, highNachdenken korrigiert Verkettungsfehler für einen moderaten Aufwand
Zusammenfassung oder Umschreibung auf Large 4Large 4, lowLarge 4 akzeptiert none nicht; low ist die wirtschaftlichste Stufe
Mehrkriterienanalyse, Migrationsplan, subtile FehlerLarge 4, medium dann highTesten Sie zuerst die Zwischenstufe; steigen Sie auf, wenn die Qualität es erfordert
Kritische Entscheidung (rechtlich, finanziell, medizinisch)Large 4, high + ÜberprüfungNachdenken reduziert Fehler, eliminiert sie aber nicht: eine zweite Durchsicht oder menschliche Prüfung bleibt notwendig

Diese Matrix bietet Startpunkte, keine absoluten Wahrheiten: Ihre eigenen Evaluierungen entscheiden. Denken Sie auch daran, dass Large 4 ab dem 2. November 2026 in der öffentlichen Vorschau (Public Preview) verfügbar ist.

Berechnen Sie vor dem Skalieren

Die aufgeführten Preise (pro Million Token, aufgezeichnet am 2. November 2026) ermöglichen es Ihnen, die Kosten einer Einstellung aus dem usage-Feld in den Antworten zu schätzen:

RATES = {  # USD pro Million Token: (Eingabe, Ausgabe)
    "mistral-small-2603": (0.15, 0.60),
    "mistral-large-4-0": (0.70, 2.10),
    "mistral-medium-3-5": (1.50, 7.50),   # veraltet, Einstellung am 30. April 2027
}

def cost(response, model):
    """Kosten einer Antwort, einschließlich Nachdenken (ohne Rabatte für Caches)."""
    input_rate, output_rate = RATES[model]
    u = response.usage
    return (u.prompt_tokens * input_rate + u.completion_tokens * output_rate) / 1_000_000

Addieren Sie diese Kosten pro Anforderungstyp über einige Tage des echten Datenverkehrs: diese Zahl zeigt Ihnen, ob eine generalisierte high-Einstellung nachhaltig ist.

Eine Routing-Architektur

In einer echten Anwendung sind die meisten Anfragen einfach. Das Bezahlen für Nachdenken bei diesen Anfragen bringt keinen Mehrwert. Der folgende Router fragt zunächst Small 4 ohne Nachdenken ab, um die Komplexität der Frage zu schätzen, und leitet die Anfrage dann an die entsprechende Einstellung weiter:

import os
from mistralai.client import Mistral

class ReasoningRouter:
    """Leitet jede Frage an ein Modell und eine Anstrengungsstufe weiter."""

    def __init__(self):
        self.client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

    def complexity(self, question):
        r = self.client.chat.complete(
            model="mistral-small-2603",
            messages=[{"role": "user", "content":
                f"Bewerten Sie die Komplexität dieser Frage von 0 bis 10. Antworten Sie nur mit der Zahl: {question}"}],
            reasoning_effort="none",
        )
        try:
            return min(max(int(str(r.choices[0].message.content).strip()), 0), 10)
        except ValueError:
            return 5  # konservativer Wert, falls die Antwort keine Zahl ist

    def respond(self, question, system_prompt=None):
        score = self.complexity(question)
        if score <= 3:
            model, level = "mistral-small-2603", "none"
        elif score <= 7:
            model, level = "mistral-small-2603", "high"
        else:
            model, level = "mistral-large-4-0", "high"
        messages = [{"role": "system", "content": system_prompt}] if system_prompt else []
        messages.append({"role": "user", "content": question})
        return self.client.chat.complete(model=model, messages=messages, reasoning_effort=level)

Der Klassifizierungsaufruf kostet wenig: ein paar Dutzend Token auf dem günstigsten Modell, ohne Nachdenken. Passen Sie die Schwellenwerte nach Beobachtung an, indem Sie die Qualität und die Kosten jeder Verzweigung vergleichen.

Best Practices für die Produktion

Nutzungsdaten pro Verzweigung protokollieren. Speichern Sie für jede Antwort das Modell, die Stufe, usage.prompt_tokens, usage.completion_tokens und die oben berechneten Kosten. Ohne diese Zahlen können Sie nicht feststellen, ob sich Nachdenken lohnt.

Datumsgebundene Identifikatoren festlegen. Verwenden Sie in der Produktion mistral-small-2603 statt mistral-small-latest: ein Alias kann sich auf eine neue Version umschalten, ohne dass Ihr Code geändert werden muss. Zentralisieren Sie diese Identifikatoren in einer einzigen Konfiguration.

MODELS = {
    "fast": ("mistral-small-2603", "none"),
    "reasoning": ("mistral-small-2603", "high"),
    "deep": ("mistral-large-4-0", "high"),
}

Planen Sie eine Fallback-Lösung. Da Large 4 in der öffentlichen Vorschau ist, schützt ein Fallback auf Small 4 im high-Modus Ihre Anwendung, falls der Aufruf fehlschlägt. Alle SDK-HTTP-Fehler leiten von MistralError ab:

from mistralai.client import errors

def query_with_fallback(client, messages):
    try:
        return client.chat.complete(model="mistral-large-4-0", messages=messages, reasoning_effort="high")
    except errors.MistralError:
        return client.chat.complete(model="mistral-small-2603", messages=messages, reasoning_effort="high")

Achten Sie auf Verfallsdaten. Die Mistral-Modellseite listet Verfalls- und Einstellungstermine auf. Medium 3.5 wird am 30. April 2027 eingestellt: Wenn Sie es verwenden, ist das Datum bereits festgelegt.

Kurzzusammenfassung

Nachdenken gibt dem Modell einen Raum zum Überlegen, bevor es antwortet; bei Mistral konfigurieren Sie dies pro Anfrage mit reasoning_effort, dessen Werte vom Modell abhängen. Die Antwort kommt dann als Fragmente an – Überlegung und Antwort –, die Sie lesen müssen, auch im Streaming-Modus, und für mehrstufige Gespräche vollständig wiedergeben. Agenten und die Conversations-API tragen die gleiche Einstellung in completion_args. Magistral ist eingestellt: Small 4 und Large 4 übernehmen, wobei Medium 3.5 nur als Übergangsschritt dient. Schließlich ist Nachdenken dort gerechtfertigt, wo es Wege zu erkunden und Fehler zu fangen gibt (Mathematik, Code, Entscheidungen), und es muss immer gemessen werden: Qualität, Token, Latenz.

Wichtige Erkenntnisse

  • Zwei Regler: das Modell (Small 4, Large 4) und die reasoning_effort-Stufe
  • Small 4 im none-Modus für einfache Aufgaben, im high-Modus für mehrstufige; Large 4 für die schwierigsten Fälle
  • Berechnen Sie jede Einstellung aus usage und offiziellen Preisen, bevor Sie sie skalieren
  • Ein Router reserviert Nachdenken für Anfragen, die davon profitieren
  • In der Produktion: datumsgebundene Identifikatoren, Protokollierung der Nutzung, Fallback von Large 4 auf Small 4

Testen Sie Ihr Wissen

Fünf Fragen, um die wesentlichen Inhalte des Kurses zu validieren.

1. Welche `reasoning_effort`-Werte akzeptiert Mistral Large 4, und welchen lehnt es ab?

Antwort: low, medium und high (die Dokumentation empfiehlt high als Startpunkt). Es lehnt none ab: die Stufe, die in der Vorschau so genannt wurde, heißt jetzt low.

2. Wo befindet sich der Denktext in einer Antwort mit Nachdenken?

Antwort: In einem ThinkChunk (Typ thinking) innerhalb der message.content-Liste. Sein thinking-Feld ist selbst eine Liste von TextChunk-Objekten, aus denen Sie das text-Feld lesen. Die endgültige Antwort befindet sich in einem obersten TextChunk.

3. Was müssen Sie in die Historie eines mehrstufigen Gesprächs bei Chat Completions zurückgeben?

Antwort: Die vollständige Nachricht des Assistenten, einschließlich Denkfragmenten. Das Entfernen des Denkens spart Token, verschlechtert aber die Qualität nachfolgender Runden erheblich.

4. Ihr Code ruft immer noch `magistral-medium-latest` auf: Was sollten Sie tun?

Antwort: Migrieren Sie sofort, da Magistral am 31. Juli 2026 eingestellt wurde. Zielen Sie auf Small 4, wenn die Qualität ausreicht, sonst auf Large 4 mit reasoning_effort="high"; Medium 3.5, der vorgesehene Ersatz, ist selbst bis zum 30. April 2027 veraltet. Entfernen Sie prompt_mode und das Denktemplate aus Systemprompts.

5. Wie setzen Sie `reasoning_effort` in einem Mistral-Agenten fest?

Antwort: Im completion_args-Feld des Agenten, beispielsweise completion_args={"reasoning_effort": "high"}. Bei der Conversations-API verwenden Sie dasselbe Feld bei jedem start oder append.