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

Der Parameter reasoning_effort

Lektion 2 von 12 Aktualisiert am 2. November 2026 Entwickler
Auf dieser Seite
  1. Die Tiefe des Denkens einstellen
  2. Akzeptierte Werte, Modell für Modell
  3. Implementierung in Python
  4. Die Ebene nach Aufgabe wählen
  5. Die Kosten messen
  6. Routing nach Komplexität
  7. Grenzen, die zu kennen sind
  8. Kernaussagen

Lektion am 2. November 2026 überarbeitet. Die vorherige Version behauptete, dass reasoning_effort nur zwei Werte akzeptiere und ausschließlich für Mistral Small verfügbar sei. Tatsächlich hängen die akzeptierten Werte vom Modell ab, und Mistral Large 4 bietet drei Optionen. Quelle: Reasoning (Mistral-Dokumentation).

Die Tiefe des Denkens einstellen

Anpassbare Vernunft beruht auf einem einfachen Prinzip: Sie entscheiden pro Anfrage, wie viel Zeit das Modell vor der Antwort überlegen soll. Der Heißheiß heißt reasoning_effort. Sie übergeben ihn im API-Aufruf auf derselben Ebene wie das Modell und die Nachrichten; keine weitere Konfiguration ist erforderlich.

Akzeptierte Werte, Modell für Modell

Dies ist der häufigste Fehler: die akzeptierten Werte hängen vom Modell ab.

ModellDokumentierte WerteOffizielle Empfehlung
Mistral Small 4 (mistral-small-2603)high, none—
Mistral Medium 3.5 (mistral-medium-3-5)high, nonehigh für agentische Workflows und Code
Mistral Large 4 (mistral-large-4-0)low, medium, highBeginnen Sie mit high, wechseln Sie dann zu medium oder low, wenn Token oder Latenz wichtiger sind

Bei Small 4 und Medium 3.5 erzeugt high ein vollständiges Vernunftfragment vor der Antwort, zum Preis eines höheren Token-Verbrauchs; none reduziert die Vernunft auf das Minimum und lässt sie in der Antwort weg. Bei Large 4 gibt es drei Stufen: low für einfache Aufgaben, medium, um Qualität, Token und Latenz auszubalancieren, und high für komplexe Aufgaben. Large 4 akzeptiert none nicht: Die Dokumentation gibt an, dass der Wert, der in der Vorschau als none bezeichnet wurde, nun low heißt.

Ein letzter Nuance: Die Typisierung ReasoningEffort in den SDKs enthält auch minimal, xhigh und max, da die Aufzählung alle Modelle auf der Plattform abdeckt (max wird beispielsweise vom Drittanbieter-Modell zai-glm-5-3 verwendet). Nur weil ein Wert in der Aufzählung erscheint, bedeutet das nicht, dass Ihr Modell ihn akzeptiert.

Implementierung in Python

import os
from mistralai.client import Mistral

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

# Mistral Small 4, tiefgehende Vernunft
response_high = client.chat.complete(
    model="mistral-small-2603",
    messages=[{"role": "user", "content": "Lösen Sie x^3 - 6x^2 + 11x - 6 = 0 und überprüfen Sie jede Wurzel."}],
    reasoning_effort="high",
)

# Mistral Small 4, direkte Antwort
response_none = client.chat.complete(
    model="mistral-small-2603",
    messages=[{"role": "user", "content": "Was ist die Hauptstadt von Portugal?"}],
    reasoning_effort="none",
)

# Mistral Large 4, mittleres Niveau
response_medium = client.chat.complete(
    model="mistral-large-4-0",
    messages=[{"role": "user", "content": "Vergleichen Sie zwei Caching-Strategien für eine Hochleistungs-API."}],
    reasoning_effort="medium",
)

Die Antwortstruktur ändert sich je nach Einstellung. Bei high ist message.content eine Liste, die mit einem Vernunftfragment beginnt; bei none ist es ein einfacher String. Ihr Code muss daher beide Formen verarbeiten, wie die nächste Lektion zeigt.

In TypeScript folgt der Parameter der JavaScript-Schreibweise und lautet reasoningEffort:

import { Mistral } from '@mistralai/mistralai';

const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });

const response = await client.chat.complete({
  model: 'mistral-small-2603',
  messages: [{ role: 'user', content: 'Lösen Sie x^3 - 6x^2 + 11x - 6 = 0.' }],
  reasoningEffort: 'high',
});

Die Ebene nach Aufgabe wählen

Behalten Sie tiefgehende Vernunft für mehrstufige mathematische Probleme, komplexes Code-Debugging, vergleichende Analysen, Planung, Logikrätsel und Risikobewertungen zurück. Diese haben ein gemeinsames Merkmal: Es sind mehrere Wege möglich, und die falsche Wahl ist kostspielig.

Schalten Sie es aus (oder senken Sie es auf das niedrigste Niveau) für einfache faktische Fragen, Übersetzungen, Paraphrasierungen, die direkte Extraktion von Informationen und den alltäglichen Gesprächsverkehr. Das Modell muss hier nichts arbitrieren: Es holt Daten ab oder transformiert sie, und eine Vernunftsphase würde nur die Latenz erhöhen.

Die Kosten messen

Vernunft kostet Output-Token. Das offizielle Dokumentationsbeispiel gibt einen Eindruck von der Größenordnung: Ein Altersrätsel, das an Mistral Small 4 mit high gesendet wird, verbraucht 77 Eingabetoken und 1.114 Ausgabetoken. Bei Small 4 Listenpreis von 0,15 USD pro Million Eingabetoken und 0,60 USD pro Million Ausgabetoken kostet die Anfrage etwa 0,0007 USD. Das ist pro Einheit vernachlässigbar, aber über eine Million ähnliche Anfragen hinweg stellt die Vernunft allein mehrere hundert Dollar dar, ohne Gewinn, wenn die Hälfte der Fragen sie nicht benötigt hätte.

Das Feld usage in jeder Antwort gibt Ihnen die genaue Messung: Verfolgen Sie completion_tokens nach Anfrageart, bevor Sie eine Einstellung verallgemeinern.

Routing nach Komplexität

Eine einfache Abhilfe besteht darin, die Ebene basierend auf der Frage zu wählen, wobei Sie pro Modell eine Tabelle verwenden, um sicherzustellen, dass Sie niemals einen abgelehnten Wert senden:

LEVELS = {
    "mistral-small-2603": {"simple": "none", "complex": "high"},
    "mistral-large-4-0": {"simple": "low", "complex": "high"},
}

COMPLEX_WORDS = ("calculate", "prove", "compare", "analyze", "optimize", "debug", "why")

def query(client, question, model="mistral-small-2603", level=None):
    """Wählt reasoning_effort basierend auf der Frage oder wendet eine erzwungene Ebene an."""
    if level is None:
        is_complex = any(word in question.lower() for word in COMPLEX_WORDS)
        level = LEVELS[model]["complex" if is_complex else "simple"]
    return client.chat.complete(
        model=model,
        messages=[{"role": "user", "content": question}],
        reasoning_effort=level,
    )

Keyword-Heuristiken bleiben grob; sie genügen, um Vernunft für Anfragen zu reservieren, die davon profitieren, und das Argument level ermöglicht es Ihnen, eine Einstellung zu erzwingen. Lektion 12 schlägt eine vollständigere Routing-Architektur vor.

Grenzen, die zu kennen sind

Vernunft erhöht die Wahrscheinlichkeit einer korrekten Antwort; sie garantiert keine: Überprüfen Sie kritische Ergebnisse (Lektion 9). Sie erhöht auch die Latenz, was in einer konversationellen Schnittstelle wichtig ist. Schließlich muss der übergebene Wert dem aufgerufenen Modell entsprechen: Planen Sie für eine Tabelle wie die oben statt Strings in Ihrem Code zu streuen.

Kernaussagen

  • reasoning_effort steuert die Vernunft pro Anfrage, ohne weitere Konfiguration
  • Small 4 und Medium 3.5 akzeptieren high und none; Large 4 akzeptiert low, medium und high, nicht none
  • SDK-Aufzählungen enthalten Werte, die nicht alle Modelle akzeptieren
  • Bei high ist content eine Liste von Fragmenten; bei none ein String
  • Messen Sie die Kosten mit usage.completion_tokens und routen Sie nach Komplexität