Reasoning
Ein Reasoning-Parameter für jedes Modell, mit Gedanken, die Sie lesen, streamen und zurückschicken können.
Reasoning-Modelle denken, bevor sie antworten. Jeder Anbieter schreibt das anders: OpenAI und aktuelle Claude-Modelle nehmen ein Stärke-Wort, ältere Claude-Modelle ein Token-Budget, Google eine verschachtelte Thinking-Konfiguration. Kontinent nimmt eine Form und übersetzt sie.
{
"model": "bedrock/claude-sonnet-5",
"messages": [{ "role": "user", "content": "Ist 9,11 größer als 9,9?" }],
"reasoning": { "effort": "high" }
}| Feld | Typ | Bedeutung |
|---|---|---|
effort | "minimal" | "low" | "medium" | "high" | Wie intensiv gedacht wird. Bei effortbasierten Modellen (aktuelles Claude, Azure) wird es durchgereicht, sofern das Modell es in supported_efforts führt; sonst gilt die Standardstärke des Modells. Bei den älteren budgetbasierten Claude-Modellen wird daraus ein Anteil von max_tokens (high ≈ 80 %, medium ≈ 50 %, low ≈ 20 %). |
max_tokens | Ganzzahl | Ein exaktes Denk-Budget, für Modelle, die eines akzeptieren. Begrenzt auf 1024–128000. |
exclude | Boolean | Trotzdem denken, die Gedanken aber nicht zurückgeben. |
enabled | Boolean | false schaltet das Denken ab, wo das Modell es zulässt. |
Der ältere Boolean include_reasoning: true wird weiterhin akzeptiert und bedeutet reasoning: { enabled: true }.
Bei den budgetbasierten Modellen (fünf ältere Claude-Modelle auf Bedrock: Haiku 4.5, Sonnet 4.5, Opus 4.5, Opus 4.6 und Sonnet 4.6) werden reasoning.max_tokens und max_tokens gemeinsam aufgelöst: das Budget wird auf 1024–128000 begrenzt, und über ihm bleiben immer mindestens 1024 Tokens für die Antwort. Ist Ihr max_tokens zu klein für beides, wird zuerst das Budget gekürzt. Ihre Obergrenze bleibt, wo sie kann, unangetastet.
Geminis Denk-Budget wird unverändert weitergegeben, weil Google eigene Grenzen pro Modell hat und selbst durchsetzt. Bei effortbasierten Modellen (alle anderen Claude-Modelle, auf Bedrock und Vertex, sowie Azure) hat reasoning.max_tokens kein Gegenstück und wird ignoriert.
Welche Modelle denken
GET /v1/models sagt es zweifach: in der flachen Liste supported_parameters, die jedes Modell trägt, und bei denkenden Modellen in einem reasoning-Objekt mit den Details. Bei Modellen ohne Reasoning fehlt das Objekt ganz, und reasoning fehlt in der Liste.
{
"id": "bedrock/claude-sonnet-5",
"supported_parameters": ["max_tokens", "temperature", "top_p", "stop", "stream", "tools", "tool_choice", "reasoning", "include_reasoning"],
"reasoning": {
"supported_efforts": ["low", "medium", "high"],
"default_effort": "medium",
"supports_max_tokens": false,
"mandatory": false
}
}mandatory: true heisst: der Upstream lässt sich das Denken nicht abschalten (Azures GPT-5- und GPT-6-Familie und o-Serie, Gemini 2.5 Pro). Bei diesen Modellen wird enabled: false ignoriert statt mit einem Fehler beantwortet.
Die Gedanken lesen
Jede Antwort trägt das Denken zweimal, mit Absicht:
reasoning: ein einfacher String, den Sie aneinanderhängen und ausgeben können.reasoning_details[]: die strukturierte Form. Genau die schicken Sie zurück, um ein denkendes Gespräch fortzusetzen.
Ohne Streaming:
{
"choices": [{
"message": {
"role": "assistant",
"content": "Nein — 9,9 ist größer.",
"reasoning": "Zehntel vergleichen: 0,11 gegen 0,9…",
"reasoning_details": [{
"type": "reasoning.text",
"text": "Zehntel vergleichen: 0,11 gegen 0,9…",
"signature": "EqoBCkgIA…",
"format": "anthropic-claude-v1",
"index": 0
}]
}
}]
}Mit Streaming kommt das Denken vor der Antwort, im selben delta, das ein Client schon liest:
data: {"choices":[{"delta":{"role":"assistant","reasoning":"Zehntel ","reasoning_details":[{"type":"reasoning.text","text":"Zehntel ","index":0}]}}]}
data: {"choices":[{"delta":{"reasoning":"vergleichen…","reasoning_details":[{"type":"reasoning.text","text":"vergleichen…","index":0}]}}]}
data: {"choices":[{"delta":{"reasoning_details":[{"type":"reasoning.text","signature":"EqoBCkgIA…","index":0}]}}]}
data: {"choices":[{"delta":{"content":"Nein — 9,9 ist größer."}}]}
data: {"choices":[],"usage":{"prompt_tokens":19,"completion_tokens":214,"total_tokens":233}}
data: [DONE]
Detail-Typen
type | Enthält | Anmerkung |
|---|---|---|
reasoning.text | text, teils signature | Das Denken des Modells. Bei aktuellen Claude-Modellen ist das Anthropics Zusammenfassung des Denkens, nicht die rohe Gedankenkette. Die Signatur ist ein Integritätsnachweis. Behalten Sie sie. |
reasoning.summary | summary | Eine vom Anbieter geschriebene Zusammenfassung, für Modelle, die ihre Gedanken nie offenlegen. |
reasoning.encrypted | data | Denken, das existiert und nicht gelesen werden darf. Nie mit Klartext daneben. |
Verschlüsseltes Denken
Manche Modelle, vor allem Azures GPT-5- und o-Serie, denken und geben nur einen opaken Block zurück. Kontinent weist ihn als reasoning.encrypted ohne text aus.
{ "type": "reasoning.encrypted", "data": "gAAAAAB…", "format": "openai-responses-v1", "index": 0 }Das ist Absicht: Wir erfinden keine lesbaren Gedanken für ein Modell, das keine geliefert hat, und wir geben den Block an Sie weiter, statt ihn zu verstecken. Zurückschicken bewirkt bei Azure allerdings nichts: Das Gateway entfernt reasoning_details, bevor eine Anfrage an einen OpenAI-kompatiblen Anbieter geht. Nur die Thinking-Blöcke von Claude, auch geschwärzte, werden wieder eingespielt.
Ein denkendes Gespräch fortsetzen
Schicken Sie den Assistant-Zug mit seinen reasoning_details zurück:
{
"model": "bedrock/claude-sonnet-5",
"reasoning": { "effort": "high" },
"messages": [
{ "role": "user", "content": "Ist 9,11 größer als 9,9?" },
{
"role": "assistant",
"content": "Nein — 9,9 ist größer.",
"reasoning_details": [{ "type": "reasoning.text", "text": "Zehntel vergleichen…", "signature": "EqoBCkgIA…", "format": "anthropic-claude-v1", "index": 0 }]
},
{ "role": "user", "content": "Und 9,11 gegen 9,099?" }
]
}Details gehen an Anbieter, die sie prüfen können, und werden bei allen anderen verworfen. Eine Anthropic-Signatur bedeutet einem OpenAI-Deployment nichts, und sie mitzuschicken wäre ein Fehler statt einer Fortsetzung. Unsigniertes Denken wird ebenfalls verworfen: Claude lehnt Gedanken ab, die es sich nicht selbst zuordnen kann, ein Wiedereinspielen würde also die Anfrage scheitern lassen.
Die Gedanken verbergen
exclude: true lässt das Modell denken und entfernt das Denken aus der Antwort.
{ "reasoning": { "effort": "high", "exclude": true } }Sie zählen
Wo ein Anbieter den Denk-Anteil des Outputs ausweist, steht er in usage.completion_tokens_details.reasoning_tokens. Tut er es nicht, fehlt das Feld statt auf null zu stehen. Anthropic zählt das Denken innerhalb von output_tokens und trennt es nie ab, und eine Null würde behaupten, das Modell habe nicht gedacht.
Denk-Tokens werden abgerechnet, ob Sie sie lesen oder nicht. Es sind Output-Tokens, die das Modell erzeugt hat. exclude betrifft Ihre Oberfläche, nicht die Kosten.