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.

json
{
  "model": "bedrock/claude-sonnet-5",
  "messages": [{ "role": "user", "content": "Ist 9,11 größer als 9,9?" }],
  "reasoning": { "effort": "high" }
}
FeldTypBedeutung
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_tokensGanzzahlEin exaktes Denk-Budget, für Modelle, die eines akzeptieren. Begrenzt auf 1024–128000.
excludeBooleanTrotzdem denken, die Gedanken aber nicht zurückgeben.
enabledBooleanfalse 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.

json
{
  "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:

json
{
  "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

typeEnthältAnmerkung
reasoning.texttext, teils signatureDas 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.summarysummaryEine vom Anbieter geschriebene Zusammenfassung, für Modelle, die ihre Gedanken nie offenlegen.
reasoning.encrypteddataDenken, 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.

json
{ "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:

json
{
  "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.

json
{ "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.

Verwandt

Streaming API-Referenz