pro Model HubDocs
Funktionen

Reasoning

Den Denkmodus pro Modell ein- und ausschalten und den Gedankengang auslesen.

Einige Modelle können vor der Antwort „nachdenken“: Sie erzeugen zuerst einen Gedankengang und dann die eigentliche Antwort. Das verbessert die Ergebnisse bei Mathematik, Logik, Planung und kniffligen Analysen, kostet aber Zeit und Output-Token. Bei einfachen Aufgaben wie Zusammenfassungen, Übersetzungen oder Klassifikation lohnt es sich meist nicht.

Welches Modell kann was

ModellReasoningUmschalten
Mistral Small 24B
mistral-small-24b
Nicht verfügbar–
Qwen 3.8 27B
qwen3.8-27b
Standardmäßig anAusschalten: "reasoning_effort": "none" oder "chat_template_kwargs": {"enable_thinking": false}
Gemma 4 31B
gemma-4-31b
Optional (standardmäßig aus)Einschalten: "reasoning_effort": "low" oder "chat_template_kwargs": {"enable_thinking": true}
Qwen3-Coder-Next
qwen3-coder-next
Nicht verfügbar–
  • Optional (standardmäßig aus): Ohne Parameter antwortet das Modell direkt. Reasoning schaltest du pro Request ein.
  • Standardmäßig an: Das Modell denkt immer nach, außer du schaltest es pro Request aus.
  • Nicht verfügbar: Das Modell hat keinen Denkmodus, auch reasoning_effort erzeugt keinen Gedankengang.

Modellspezifische Details, z. B. welche Stufen von reasoning_effort ein Modell kennt, stehen auf der jeweiligen Modellseite unter API-Hinweise.

Ein- und ausschalten

Es gibt zwei gleichwertige Wege:

WegEinschaltenAusschalten
reasoning_effort (OpenAI-Standard)"low", "medium" (je nach Modell weitere Stufen)"none"
chat_template_kwargs{"enable_thinking": true}{"enable_thinking": false}

reasoning_effort funktioniert mit allen OpenAI-SDKs ohne Tricks und ist unsere Empfehlung. chat_template_kwargs ist kein Feld der OpenAI-API und muss im Python-SDK über extra_body übergeben werden. Modelle ohne Denkmodus lehnen es teilweise mit 400 ab.

response = client.chat.completions.create(
    model="gemma-4-31b",
    messages=[{"role": "user", "content": "Ein Zug fährt um 9:40 los, braucht 2 h 35 min und hat 17 min Verspätung. Wann kommt er an?"}],
    reasoning_effort="low",   # Denkmodus an
    max_tokens=4000,          # Platz für Gedankengang und Antwort
)
message = response.choices[0].message
print(message.reasoning_content)  # Gedankengang
print(message.content)            # Antwort: 12:32
print(response.usage.completion_tokens_details.reasoning_tokens)

# Alternative über chat_template_kwargs:
response = client.chat.completions.create(
    model="qwen3.8-27b",
    messages=[{"role": "user", "content": "Übersetze ins Englische: Guten Morgen!"}],
    extra_body={"chat_template_kwargs": {"enable_thinking": False}},  # Denkmodus aus
)

Gedankengang auslesen

Der Gedankengang steht getrennt von der Antwort im Feld reasoning_content der Nachricht, beim Streaming in delta.reasoning_content (vor den content-Stücken). Die eigentliche Antwort in content enthält keinen Gedankengang.

  • Zeige den Gedankengang höchstens als aufklappbares Detail an. Er ist ein Arbeitsstand, keine geprüfte Aussage.
  • Schicke ihn im Gesprächsverlauf nicht zurück: Frühere assistant-Nachrichten brauchen nur content.
  • Beim Python-SDK ist reasoning_content kein offizielles Feld. Lies es mit getattr(message, "reasoning_content", None), wenn du nicht sicher bist, dass Reasoning an war.

Verbrauch und max_tokens

Die Denk-Token zählen zu den completion_tokens und verbrauchen Credits wie jeder andere Output. Wie viele es waren, steht in usage.completion_tokens_details.reasoning_tokens. Der Gedankengang ist oft mehrere hundert bis einige tausend Token lang.

max_tokens begrenzt Gedankengang und Antwort zusammen. Ist es zu klein, endet die Ausgabe schon während des Nachdenkens: content ist dann null und finish_reason ist length. Setze max_tokens bei eingeschaltetem Reasoning großzügig oder lass es weg.

Kombination mit anderen Funktionen

Reasoning funktioniert zusammen mit Tool-Calling, strukturierten Ausgaben und Streaming. Bei strukturierten Ausgaben gilt das Schema nur für content, nicht für den Gedankengang.

Auf dieser Seite