Fehlerbehebung beim Nachdenken
Diagnostiziere und behebe die häufigsten Fehler beim Nachdenken: 400-Konfigurationsfehler, leere oder fehlende Thinking-Blöcke, Stopps wegen max_tokens und Cache-Misses.
Diese Seite behandelt die häufigsten Fehler beim Konfigurieren von „thinking" (Nachdenken) oder beim Round-Tripping von „thinking blocks" (Thinking-Blöcken), also beim Zurücksenden zurückgegebener Thinking-Blöcke in späteren Anfragen. Der erste Abschnitt ordnet jedem Modell die unterstützten Thinking-Konfigurationen und die abgelehnten Konfigurationen zu. Jeder der folgenden Abschnitte beginnt mit einem Symptom, das du beobachtest. So kannst du eine Fehlermeldung oder eine unerwartete Antwort direkt ihrer Ursache und Lösung zuordnen. Wie Nachdenken funktioniert, erfährst du in der Übersicht Nachdenken.
Unterstützung für Nachdenken, Standardwerte und abgelehnte Konfigurationen nach Modell
Die meisten Konfigurationsfehler beim Nachdenken sind eine Diskrepanz zwischen dem Wert von thinking.type in der Anfrage und dem, was das Modell unterstützt. Bei den meisten Modellen läuft Nachdenken als thinking: {type: "adaptive"}, und bei vielen ist es standardmäßig aktiviert. Einige frühere Modelle verwenden stattdessen „extended thinking" (erweitertes Nachdenken), einen veralteten manuellen Modus, der als thinking: {type: "enabled", budget_tokens: N} konfiguriert wird.
„Extended thinking“ (erweitertes Nachdenken) (thinking.type: "enabled" mit budget_tokens) ist auf den Claude 4.6-Modellen abgekündigt (Anfragen, die es verwenden, sind weiterhin erfolgreich). Claude 4.7 und spätere Modelle unterstützen es nicht und lehnen Anfragen, die es verwenden, mit einem 400-Fehler ab. Auf Claude 4.5 und früheren Modellen, die Nachdenken unterstützen, ist erweitertes Nachdenken der einzige verfügbare Denkmodus. Claude Mythos Preview unterstützt beide Modi. Wo beide Modi verfügbar sind, verwende stattdessen adaptives Nachdenken.
Die Tabelle listet auf, was jedes Modell unterstützt, was sein Standardwert ist und welche thinking.type-Werte es mit einem 400-Fehler ablehnt; jeder Wert, der nicht als abgelehnt aufgeführt ist, wird akzeptiert. Nur Claude Sonnet 5.5 akzeptiert "between_tools", und zwar anstelle von "disabled".
| Modell | Thinking-Typen | Standard | Mit 400 abgelehnt |
|---|---|---|---|
| Claude Fable 5.1 | Nur adaptiv | Immer an | "enabled", "disabled" |
| Claude Mythos 5.1 | Nur adaptiv | Immer an | "enabled", "disabled" |
| Claude Fable 5 | Nur adaptiv | Immer an | "enabled", "disabled" |
| Claude Mythos 5 | Nur adaptiv | Immer an | "enabled", "disabled" |
| Claude Mythos Preview | Adaptiv, erweitert | Immer an | "disabled" |
| Claude Opus 5.5 | Nur adaptiv | Immer an | "enabled", "disabled" |
| Claude Opus 5 | Nur adaptiv | An | "enabled", "disabled"2 |
| Claude Opus 4.8 | Nur adaptiv | Aus | "enabled" |
| Claude Opus 4.7 | Nur adaptiv | Aus | "enabled" |
| Claude Sonnet 5.5 | Adaptiv, between_tools3 | An | "enabled", "disabled" |
| Claude Sonnet 5 | Nur adaptiv | An | "enabled" |
| Claude Haiku 5.5 | Nur adaptiv | An | "enabled", "disabled"2 |
| Claude Opus 4.6 | Adaptiv, erweitert (abgekündigt)1 | Aus | Keine |
| Claude Sonnet 4.6 | Adaptiv, erweitert (abgekündigt)1 | Aus | Keine |
| Claude Opus 4.5 | Nur erweitert | Aus | "adaptive" |
| Claude Haiku 4.5 | Nur erweitert | Aus | "adaptive" |
| Claude Sonnet 4.5 | Nur erweitert | Aus | "adaptive" |
1 enabled und budget_tokens funktionieren bei diesen Modellen weiterhin, sind aber abgekündigt; verwende stattdessen adaptives Nachdenken.
2 Claude Opus 5 und Claude Haiku 5.5 akzeptieren "disabled" bei Effort high oder niedriger; die Kombination mit Effort xhigh oder max gibt einen 400-Fehler zurück. Bei Claude Opus 5 wird diese Einschränkung bei jeder Anfrage durchgesetzt. Bei Claude Haiku 5.5 gibt auch ein Effort pro Nachricht, der von der geltenden Stufe abweicht, einen 400-Fehler zurück.
3 Claude Sonnet 5.5 akzeptiert "between_tools" bei Effort high oder niedriger. Die Kombination mit Effort xhigh oder max gibt einen 400-Fehler zurück, ebenso ein Effort pro Nachricht, der von der geltenden Stufe abweicht.
Bei Modellen, die mit Immer an gekennzeichnet sind, lässt sich das Nachdenken nicht ausschalten. Modelle, die mit An gekennzeichnet sind, denken standardmäßig nach. Claude Opus 5, Claude Sonnet 5 und Claude Haiku 5.5 akzeptieren thinking: {type: "disabled"}. Sende bei Claude Sonnet 5.5 thinking: {type: "between_tools"}, um das vorgelagerte Nachdenken auszuschalten.
Frühere Claude-4-Modelle (Claude Opus 4.1, Claude Sonnet 4 und Claude Opus 4) unterstützen nur erweitertes Nachdenken. Informationen zu ihrer Verfügbarkeit findest du unter Modell-Abkündigungen. Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5 und Claude Mythos 5 sind unter Zero Data Retention nicht verfügbar, sofern Anthropic dies nicht ausdrücklich genehmigt hat.
Ein 400-Fehler meldet, dass "thinking.type.enabled" nicht unterstützt wird
Die Anfrage schlägt mit einem 400-Fehler fehl, dessen Meldung lautet:
"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.Das passiert, weil das angeforderte Modell erweitertes Nachdenken nicht mehr unterstützt (siehe die Konfigurationstabelle nach Modell).
Stelle die Anfrage auf thinking: {type: "adaptive"} um und steuere die Tiefe des Nachdenkens mit effort statt mit budget_tokens. Migration zu adaptivem Nachdenken führt dich durch die Umstellung.
Ein 400-Fehler nach dem Senden von thinking: {type: "disabled"}
Die Anfrage schlägt mit einem 400-Fehler fehl. Bei Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Opus 5.5 und Claude Mythos 5 lautet die Meldung:
"thinking.type.disabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.Bei Claude Mythos Preview, dem einzigen dieser Modelle, das erweitertes Nachdenken akzeptiert, lautet die Meldung:
"thinking.type.disabled" is not supported for this model. Thinking defaults to adaptive mode when not specified; use "thinking.type.enabled" with "budget_tokens" for extended thinking.Das passiert, weil das Nachdenken bei all diesen Modellen immer aktiviert ist (siehe die Konfigurationstabelle pro Modell).
Lass den Parameter thinking weg; diese Modelle denken ohne jede Konfiguration nach. Wenn dein Ziel war, den Thinking-Text aus den Antworten herauszuhalten, verwende display: "omitted", statt das Nachdenken zu deaktivieren; siehe Anzeige des Nachdenkens steuern.
Ein 400-Fehler bei "disabled" kann auch bei Claude Opus 5 und Claude Haiku 5.5 auftreten, bei denen thinking: {type: "disabled"} nur bei Effort high oder niedriger zulässig ist: Die Kombination mit Effort xhigh oder max wird abgelehnt. Senke das Effort-Level oder setze thinking auf {"type": "adaptive"}.
Bei Claude Sonnet 5.5 gibt thinking: {type: "disabled"} auf jedem Effort-Level einen 400-Fehler zurück. Die Meldung lautet:
To turn thinking off on this model, send "thinking": {"type": "between_tools"} instead of {"type": "disabled"}. The model does not think before responding. The short updates it writes between tool calls come back as thinking blocks.Um das vorgelagerte Nachdenken bei Claude Sonnet 5.5 auszuschalten, sende stattdessen thinking: {type: "between_tools"} bei Effort high oder niedriger.
Ein 400-Fehler meldet, dass "thinking.type.between_tools" nicht unterstützt wird
Die Anfrage schlägt mit einem 400-Fehler fehl, dessen Meldung lautet:
"thinking.type.between_tools" is not supported for this model.Das passiert, weil nur Claude Sonnet 5.5 thinking: {type: "between_tools"} akzeptiert (siehe die Konfigurationstabelle nach Modell).
Sende between_tools nur an Claude Sonnet 5.5. Bei anderen Modellen lässt du thinking weg oder verwendest einen thinking.type-Wert, den die Tabelle nicht als abgelehnt aufführt.
Ein 400-Fehler meldet, dass ein Effort-Level bei deaktiviertem Nachdenken nicht unterstützt wird
Bei Claude Sonnet 5.5 schlägt eine Anfrage mit thinking: {type: "between_tools"} bei Effort xhigh oder max mit einem 400-Fehler fehl, dessen Meldung lautet:
output_config.effort 'xhigh' is not supported when thinking is disabled on this model. Use effort 'high' or below, or enable thinking.Das passiert, weil Claude Sonnet 5.5 between_tools nur bei Effort high oder niedriger akzeptiert. Die Meldung besagt, dass das Nachdenken deaktiviert ist, weil between_tools kein vorgelagertes Nachdenken hat, auch wenn die Anfrage nicht "disabled" gesendet hat. Die Meldung nennt die Stufe, die die Anfrage gesendet hat.
Senke den Effort auf high oder niedriger. Um mit xhigh oder max zu arbeiten, verwende adaptives Nachdenken: Lass das Feld thinking weg oder sende thinking: {"type": "adaptive"}. Das meint die Meldung mit „enable thinking". Claude Sonnet 5.5 lehnt "enabled" mit einem 400-Fehler ab.
Claude Haiku 5.5 gibt dieselbe Meldung zurück, wenn eine Anfrage thinking: {type: "disabled"} bei Effort xhigh oder max sendet. Es akzeptiert "disabled" nur bei high oder niedriger. Senke den Effort oder setze thinking auf {"type": "adaptive"}.
Ein 400-Fehler meldet, dass sich der Effort bei deaktiviertem Nachdenken nicht ändern kann
Bei Claude Sonnet 5.5 schlägt eine Anfrage mit thinking: {type: "between_tools"}, deren Effort pro Nachricht die Stufe ändert, mit einem 400-Fehler fehl, dessen Meldung lautet:
messages.N: output_config.effort 'low' differs from the 'high' in effect before it; effort cannot change when thinking is disabled on this model. Use effort 'high', or enable thinking.Die Meldung besagt, dass das Nachdenken deaktiviert ist, weil between_tools kein vorgelagertes Nachdenken hat. Mit between_tools kann sich der Effort nicht mitten in der Konversation ändern: Ein output_config.effort pro Nachricht, der von der geltenden Stufe abweicht, gibt einen 400-Fehler zurück. messages.N ist die Position der Nachricht, die die neue Stufe gesetzt hat.
Entferne diesen Effort pro Nachricht oder setze ihn auf die geltende Stufe. Um den Effort pro Turn zu variieren, verwende adaptives Nachdenken: Lass das Feld thinking weg oder sende thinking: {"type": "adaptive"}. Das meint die Meldung mit „enable thinking“.
Claude Haiku 5.5 gibt dieselbe Meldung zurück, wenn eine Anfrage mit thinking: {type: "disabled"} einen Effort pro Nachricht setzt, der von der geltenden Stufe abweicht. Entferne diesen Effort pro Nachricht oder setze thinking auf {"type": "adaptive"}, um den Effort pro Turn zu variieren.
Ein 400-Fehler meldet, dass adaptives Nachdenken nicht unterstützt wird
Die Anfrage schlägt mit einem 400-Fehler fehl, dessen Meldung lautet:
adaptive thinking is not supported on this modelDas passiert, weil das Modell nur erweitertes Nachdenken unterstützt (siehe die Konfigurationstabelle nach Modell).
Verwende stattdessen thinking: {type: "enabled", budget_tokens: N}. Die Konfiguration findest du unter Erweitertes Nachdenken.
Ein 400-Fehler meldet, dass Thinking-Blöcke nicht verändert werden dürfen
Eine Anfrage, die Tool-Ergebnisse zurückgibt, schlägt mit einem 400-invalid_request_error fehl, dessen Meldung Folgendes enthält:
`thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modifiedIn Multi-Turn-Konversationen und bei „tool use" (Tool-Nutzung) sendest du frühere Assistant-Nachrichten an die API zurück, einschließlich ihrer thinking- und redacted_thinking-Blöcke. Die API prüft, ob sie unverändert ankommen. Dieser Fehler tritt auf, wenn die zurückgesendete Assistant-Nachricht von der abweicht, die die API zurückgegeben hat. Meist liegt das daran, dass dein Code Content-Blöcke nach Typ filtert und dabei redacted_thinking-Blöcke verwirft, oder dass er die Assistant-Nachricht neu aufbaut, statt sie unverändert zurückzugeben.
Gib den Assistant-Turn wortwörtlich zurück, einschließlich der Thinking-Blöcke. Die Regeln findest du unter Thinking-Blöcke beibehalten. Korrekten Code für jedes SDK zeigt das ausgearbeitete Round-Trip-Beispiel in Nachdenken in Tool- und Multi-Turn-Workflows.
Ein 400-Fehler meldet, dass die Signatur eines Thinking-Blocks ungültig ist
Eine Anfrage an Claude Fable 5.1, Claude Opus 5.5, Claude Sonnet 5.5 oder Claude Haiku 5.5, die frühere Thinking-Blöcke erneut sendet, schlägt mit einem 400-invalid_request_error fehl, dessen Meldung lautet:
messages.{i}.content.{j}: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block".Wenn die Anfrage den Beta-Header thinking-binding-controls-2026-08-01 nicht gesendet hat, ergänzt die Meldung That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.
Die Meldung endet in der Regel mit einem Satz, der benennt, was sich geändert hat: der system-Prompt, die tools-Liste, die erste abweichende Nachricht oder der erste abweichende Block, fehlender oder neuer Inhalt oder ein früherer Thinking-Block, der fehlt oder in falscher Reihenfolge steht. Dieser Satz ist für Menschen und Logs gedacht. Sein Wortlaut kann sich ändern, also gleiche ihn im Code nicht ab.
Wenn die Meldung nach Invalid `signature` in `thinking` block endet, konnte die Signatur selbst nicht verifiziert werden: Sie wurde abgeschnitten, verändert oder leer zurückgesendet, und prefix_mismatch_behavior greift nicht. Bearbeiteter Thinking-Text gibt einen anderen Fehler zurück. Siehe Ein 400-Fehler meldet, dass Thinking-Blöcke nicht verändert werden dürfen.
Bei Claude Fable 5.1, Claude Opus 5.5, Claude Sonnet 5.5 und Claude Haiku 5.5 akzeptiert die API einen erneut gesendeten Thinking-Block nur, solange der system-Prompt, die tools und die vorangehenden Nachrichten unverändert sind. Siehe Das Präfix unverändert lassen. Der Fehler bedeutet, dass sich zwischen den Anfragen etwas weiter vorne in der Konversation geändert hat: ein bearbeiteter, umsortierter oder entfernter Turn, eine Erinnerung pro Turn, die eingefügt und später entfernt wurde, ein neu aufgebauter system-Prompt oder ein neu aufgebautes tools-Array oder eine clientseitige Komprimierung, die die letzten Turns und ihr Nachdenken wortwörtlich beibehalten hat. Die Prüfung wird für neue Konten durchgesetzt, die am oder nach dem 31. August 2026 erstellt wurden, sowie für jede Anfrage, die thinking.block_binding.prefix_mismatch_behavior setzt. Serverseitige Komprimierung und Kontextbearbeitung lösen sie nie aus.
Um den Fehler zu beheben, halte den Verlauf append-only: Gib frühere Turns genau so zurück, wie sie gesendet und empfangen wurden, füge Anweisungen mit einer System-Nachricht mitten in der Konversation hinzu, statt system oder tools zu bearbeiten, und überlasse jegliches Kürzen der serverseitigen Kontextbearbeitung oder Komprimierung. Ein erneuter Versuch mit demselben Request-Body behebt den Fehler nicht. Um diese Anfrage ohne das ungültig gewordene Reasoning fortzusetzen, sende den Beta-Header thinking-binding-controls-2026-08-01 und setze thinking.block_binding.prefix_mismatch_behavior auf "drop_block". Alternativ entfernst du jeden thinking- und redacted_thinking-Block aus dem Verlauf (mindestens den genannten Block und jeden danach, in diesem Turn und allen späteren Turns), lässt die anderen Blöcke jedes Turns an ihrem Platz und versuchst es einmal erneut. Bei Claude Sonnet 5.5 und Claude Haiku 5.5 funktioniert block_binding nur mit thinking: {"type": "adaptive"}. Mit between_tools bei Claude Sonnet 5.5 oder thinking: {"type": "disabled"} bei Claude Haiku 5.5 hältst du den Verlauf append-only oder entfernst die Thinking-Blöcke ab dem bearbeiteten Turn.
Ein Block von einem Modell, das das Zielmodell nicht lesen kann, erzeugt diesen Fehler nie: Die API verwirft ihn und meldet ihn unter dem Beta-Header in input_transformations.
Das Feld thinking ist in der Antwort leer
Die Antwort enthält thinking-Blöcke, aber ihr thinking-Feld ist ein leerer String, und nur das Feld signature ist befüllt.
Das passiert, weil display bei neueren Modellen standardmäßig "omitted" ist. Dann werden Thinking-Blöcke ohne ihren Text zurückgegeben.
Setze display: "summarized" in deiner Thinking-Konfiguration, um den zusammengefassten Thinking-Text zu erhalten. Die Standardwerte pro Modell findest du unter Anzeige des Nachdenkens steuern. Wenn du nur die kurzen Statuszeilen möchtest, die manche Modelle zwischen Tool-Aufrufen schreiben, und nicht das eigentliche Nachdenken, setze stattdessen display: "updates" (Beta). Siehe Fortschrittsmeldungen zwischen Tool-Aufrufen.
Ein Block mit leerem thinking-Feld ist trotzdem vollständig, denn die signature enthält das Nachdenken. Sende ihn wie jeden anderen Block mit dem Turn zurück. Siehe Assistant-Turns genau so zurücksenden, wie sie zurückgegeben wurden.
Bei manchen Turns erscheint kein Thinking-Block
Manche Antworten enthalten überhaupt keinen thinking-Block, obwohl Nachdenken konfiguriert ist.
Das ist im adaptiven Modus normal: Claude überspringt das Nachdenken bei Anfragen, die es für einfach genug hält, um sie direkt zu beantworten.
Wenn du häufigeres oder tieferes Nachdenken möchtest, erhöhe effort oder steuere es über das Prompting. Siehe Steuern, wie oft Claude nachdenkt.
Ein erzwungenes tool_choice ({"type": "any"} oder ein benanntes Tool) gibt ebenfalls keinen thinking-Block zurück: Die Antwort beginnt mit dem Tool-Aufruf. Damit das Modell nachdenken kann, bevor es ein Tool aufruft, verwende tool_choice: {"type": "auto"} und gib im Prompt an, wann das Tool verwendet werden soll.
Tool-Aufrufe oder XML-Tags erscheinen in der Textausgabe
Gelegentlich schreibt eine Antwort einen Tool-Aufruf in ihren Text, statt einen tool_use-Block auszugeben. Oder sie enthält <thinking> oder andere interne XML-Tags in ihrem sichtbaren Text. Ein so durchgesickerter Tool-Aufruf wird nie ausgeführt. In agentischen Schleifen bleibt der durchgesickerte Text außerdem im Konversationsverlauf, sodass auch spätere Turns betroffen sind.
Das passiert bei Claude Opus 5, wenn das Nachdenken deaktiviert ist, am häufigsten bei Tool-lastigen Workloads wie der Suche. Regeln im System-Prompt, die das Modell anweisen, nicht nachzudenken oder nicht zu schlussfolgern, verstärken das Durchsickern von Tags.
Aktiviere das Nachdenken wieder (das ist der Standard) und steuere die Token-Kosten stattdessen über niedrigere effort-Level. Wenn deine Integration das Nachdenken deaktiviert lassen muss, wende die Prompting-Maßnahmen aus Betrieb mit deaktiviertem Nachdenken an.
Die Antwort stoppt mit stop_reason: "max_tokens"
Die Antwort endet mit stop_reason: "max_tokens", oft mit einem abgeschnittenen oder fehlenden Textblock.
Das passiert, weil Thinking-Token auf max_tokens angerechnet werden. Ein langer Thinking-Durchlauf kann das Budget daher aufbrauchen, bevor die Textantwort fertig ist.
Erhöhe max_tokens, damit Platz für Nachdenken und Text bleibt, oder senke effort, damit Claude weniger für das Nachdenken aufwendet. Siehe Kostenkontrolle und Nachdenken und das Kontextfenster.
Cache-Treffer sinken nach Änderung der Thinking-Einstellungen
cache_read_input_tokens fällt bei Anfragen, die zuvor den Cache getroffen haben, auf null.
Das passiert, weil die Thinking-Konfiguration und das Effort-Level (oder dessen Standardwert) Teil des gecachten Prompt-Präfixes sind. Jede Änderung daran beginnt ein neues Präfix. Ein Wechsel des Thinking-Modus, eine Änderung des Effort-Werts und eine Änderung von budget_tokens machen alle die Cache-Breakpoints der Nachrichten ungültig. Je nachdem, wo das Modell die Konfiguration rendert, können sie auch die Breakpoints für Tools und System-Prompt ungültig machen.
Halte die Thinking-Konfiguration und das Effort-Level über alle Anfragen einer Konversation hinweg konstant. Einen Parameter explizit auf seinen Standardwert zu setzen, entspricht dem Weglassen und macht den Cache nicht ungültig. Siehe Nachdenken und Prompt-Caching.
Das Setzen von Effort ändert das Nachdenken nicht
Du änderst effort, aber Häufigkeit oder Tiefe des Nachdenkens bleiben gleich.
Das passiert, weil Effort nur im adaptiven Modus der wichtigste Hebel für das Nachdenken ist. Bei Modellen, die nur erweitertes Nachdenken unterstützen, wird die Tiefe des Nachdenkens stattdessen über budget_tokens festgelegt.
Passe bei diesen Modellen budget_tokens an oder prüfe, in welchem Modus dein Modell läuft. Siehe Nachdenken und Effort. Claude Opus 4.5 ist das einzige Modell mit ausschließlich erweitertem Nachdenken, das Effort unterstützt. Dort wirkt Effort zusammen mit dem Budget. Siehe Budgetregeln und Feinabstimmung.
Nächste Schritte
Die Übersicht: was Nachdenken ist, wie du es konfigurierst und wie es mit Tools, Caching und Streaming zusammenwirkt.
Die vollständige Fehlerreferenz, einschließlich der 400-Fehler zur Thinking-Konfiguration mit ihren genauen Servermeldungen.
Stelle Anfragen mit budget_tokens auf adaptives Nachdenken mit Effort um.
Was this page helpful?