Fehlerbehebung beim Denken
Diagnostiziere und behebe die häufigsten Fehler beim Denken: 400-Fehler bei der Konfiguration, leere oder fehlende Thinking-Blöcke, max_tokens-Stopps und Cache-Misses.
Diese Seite behandelt die häufigsten Fehler beim Konfigurieren von „thinking“ (Denken) oder beim Round-Tripping von Thinking-Blöcken (dem Zurücksenden zurückgegebener Thinking-Blöcke in späteren Anfragen). Der erste Abschnitt ordnet jedem Modell seine unterstützten Denkkonfigurationen und die von ihm abgelehnten zu; die darauffolgenden Abschnitte gehen jeweils von einem Symptom aus, das du beobachtest, sodass du eine Fehlermeldung oder eine unerwartete Antwort direkt ihrer Ursache und Lösung zuordnen kannst. Um zu erfahren, wie Denken funktioniert, siehe die Übersicht Denken.
Unterstützung für Denken, Standardwerte und abgelehnte Konfigurationen nach Modell
Die meisten Konfigurationsfehler beim Denken sind eine Diskrepanz zwischen dem thinking.type-Wert in der Anfrage und dem, was das Modell unterstützt. Auf den meisten Modellen läuft Denken als thinking: {type: "adaptive"}, und bei vielen ist es standardmäßig aktiviert. Einige frühere Modelle verwenden stattdessen „extended thinking“ (erweitertes Denken), einen veralteten manuellen Modus, der als thinking: {type: "enabled", budget_tokens: N} konfiguriert wird.
„Extended thinking“ (erweitertes Denken) (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 Denken unterstützen, ist erweitertes Denken der einzige verfügbare Denkmodus. Claude Mythos Preview unterstützt beide Modi. Wo beide Modi verfügbar sind, verwende stattdessen adaptives Denken.
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.
| Modell | Denktypen | 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 | 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 | Nur adaptiv | An | "enabled" |
| 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 auf diesen Modellen weiterhin, sind aber abgekündigt; verwende stattdessen adaptives Denken.
2 Claude Opus 5 akzeptiert "disabled" bei Effort high oder darunter; die Kombination mit Effort xhigh oder max gibt einen 400-Fehler zurück. Diese Einschränkung gilt für Claude Opus 5 und spätere Modelle und wird bei jeder Anfrage durchgesetzt.
Modelle, die mit Immer an gekennzeichnet sind, können Denken nicht ausschalten. Modelle, die mit An gekennzeichnet sind, denken standardmäßig, akzeptieren aber thinking: {type: "disabled"}.
Frühere Claude-4-Modelle (Claude Opus 4.1, Claude Sonnet 4 und Claude Opus 4) unterstützen nur erweitertes Denken. Siehe Modellabkündigungen für ihre Verfügbarkeit. Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5 und Claude Mythos 5 sind unter Zero Data Retention nicht verfügbar, sofern nicht ausdrücklich von Anthropic genehmigt.
Ein 400-Fehler besagt, 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.Dies geschieht, weil das von dir angeforderte Modell erweitertes Denken entfernt hat (siehe die Konfigurationstabelle pro Modell).
Stelle die Anfrage auf thinking: {type: "adaptive"} um und steuere die Denktiefe mit effort statt mit budget_tokens. Migration zu adaptivem Denken führt durch die Umstellung.
Ein 400-Fehler besagt, dass "thinking.type.disabled" nicht unterstützt wird
Die Anfrage schlägt mit einem 400-Fehler fehl, dessen Meldung lautet:
"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.Dies geschieht bei Modellen, bei denen Denken immer aktiviert ist: Claude Fable 5.1, Claude Mythos 5.1, Claude Fable 5, Claude Mythos 5 und Claude Mythos Preview lehnen "disabled" ab. Alle diese außer Claude Mythos Preview lehnen auch das im Fehlertext vorgeschlagene "thinking.type.enabled" ab.
Lass den thinking-Parameter weg; diese Modelle denken ohne jegliche Konfiguration. Wenn dein Ziel war, Denktext aus Antworten herauszuhalten, verwende display: "omitted" statt Denken zu deaktivieren; siehe Steuerung der Denkanzeige.
Ein 400-Fehler bei "disabled" kann auch bei Claude Opus 5 auftreten, das thinking: {type: "disabled"} nur bei Effort high oder darunter akzeptiert: Die Kombination mit Effort xhigh oder max wird abgelehnt. Senke die Effort-Stufe oder lass Denken aktiviert.
Ein 400-Fehler besagt, dass adaptives Denken nicht unterstützt wird
Die Anfrage schlägt mit einem 400-Fehler fehl, dessen Meldung lautet:
adaptive thinking is not supported on this modelDies geschieht, weil das Modell nur erweitertes Denken unterstützt (siehe die Konfigurationstabelle pro Modell).
Verwende stattdessen thinking: {type: "enabled", budget_tokens: N}; siehe Erweitertes Denken für die Konfiguration.
Ein 400-Fehler besagt, 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- und Tool-Nutzungs-Konversationen sendest du vorherige Assistant-Nachrichten, einschließlich ihrer thinking- und redacted_thinking-Blöcke, an die API zurück, und die API überprüft, dass sie unverändert ankommen. Dieser Fehler tritt auf, wenn die Assistant-Nachricht, die du zurücksendest, von der abweicht, die die API zurückgegeben hat, meistens weil dein Code Content-Blöcke nach Typ filtert und redacted_thinking-Blöcke verwirft oder 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. Siehe Thinking-Blöcke bewahren für die Regeln und den durchgearbeiteten Round-Trip in Denken in Tool- und Multi-Turn-Workflows für korrekten Code in jedem SDK.
Ein 400-Fehler besagt, dass die Signatur eines Thinking-Blocks ungültig ist
Eine Anfrage an Claude Fable 5.1, 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, fügt die Meldung That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header. hinzu. Die Meldung kann auch mit einem Satz enden, der die erste Nachricht benennt, die sich geändert hat. Wenn die Meldung überhaupt keine Begründungsklausel enthält, wurde der Inhalt des Blocks verändert. Siehe Ein 400-Fehler besagt, dass Thinking-Blöcke nicht verändert werden dürfen.
Auf Claude Fable 5.1 akzeptiert die API einen erneut gesendeten Thinking-Block nur, solange der system-Prompt, die tools und die Nachrichten, die ihm vorausgingen, unverändert sind. Der Fehler bedeutet, dass sich etwas Früheres in der Konversation zwischen den Anfragen geändert hat: ein bearbeiteter, umsortierter oder entfernter Turn, eine pro Turn eingefügte Erinnerung, die später entfernt wurde, ein neu aufgebauter system-Prompt oder ein neu aufgebautes tools-Array oder clientseitige Compaction, die aktuelle Turns und ihr Denken 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 Compaction und Kontextbearbeitung lösen sie nie aus.
Um das 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 Compaction. Das erneute Senden desselben Anfrage-Bodys beseitigt 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 entferne jeden thinking- und redacted_thinking-Block aus dem Verlauf (mindestens den benannten Block und jeden danach, in diesem Turn und allen späteren Turns), lass die anderen Blöcke jedes Turns an ihrem Platz und versuche es einmal erneut.
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 signature-Feld ist befüllt.
Dies geschieht, weil display auf neueren Modellen standardmäßig "omitted" ist, was Thinking-Blöcke ohne ihren Text zurückgibt.
Setze display: "summarized" in deiner Denkkonfiguration, um den zusammengefassten Denktext zu erhalten. Siehe Steuerung der Denkanzeige für die Standardwerte pro Modell. Wenn du nur die kurzen Statuszeilen möchtest, die einige Modelle zwischen Tool-Aufrufen schreiben, und nicht das Reasoning, setze stattdessen display: "updates" (Beta). Siehe Fortschrittsupdates zwischen Tool-Aufrufen.
Bei manchen Turns erscheint kein Thinking-Block
Manche Antworten enthalten überhaupt keinen thinking-Block, obwohl Denken konfiguriert ist.
Das ist im adaptiven Modus normal: Claude überspringt das Denken bei Anfragen, die es als einfach genug einschätzt, um sie direkt zu beantworten.
Wenn du häufigeres oder tieferes Denken möchtest, erhöhe effort oder steuere über Prompting; siehe Steuern, wie oft Claude denkt.
Tool-Aufrufe oder XML-Tags erscheinen in der Textausgabe
Eine Antwort schreibt gelegentlich einen Tool-Aufruf in ihren Text, statt einen tool_use-Block auszugeben, oder enthält <thinking>- oder andere interne XML-Tags in ihrem sichtbaren Text. Ein durchgesickerter Tool-Aufruf wird nie ausgeführt, und in agentischen Schleifen bleibt der durchgesickerte Text im Konversationsverlauf, sodass auch spätere Turns betroffen sind.
Dies geschieht bei Claude Opus 5, wenn Denken deaktiviert ist, am häufigsten bei Tool-intensiven Workloads wie der Suche. Regeln im System-Prompt, die das Modell anweisen, nicht zu denken oder nicht zu schlussfolgern, verstärken das Durchsickern von Tags.
Aktiviere Denken wieder (der Standard) und verwende stattdessen niedrigere effort-Stufen, um die Token-Kosten zu steuern. Wenn deine Integration Denken deaktiviert lassen muss, wende die Prompting-Gegenmaßnahmen in Betrieb mit deaktiviertem Denken an.
Die Antwort stoppt mit stop_reason: "max_tokens"
Die Antwort endet mit stop_reason: "max_tokens", oft mit einem abgeschnittenen oder fehlenden Textblock.
Dies geschieht, weil Denk-Token auf max_tokens angerechnet werden, sodass ein langer Denkdurchlauf das Budget aufbrauchen kann, bevor die Textantwort abgeschlossen ist.
Erhöhe max_tokens, um Platz sowohl für Denken als auch für Text zu lassen, oder senke effort, damit Claude weniger für das Denken aufwendet; siehe Kostenkontrolle und Denken und das Kontextfenster.
Cache-Treffer sinken nach Änderung der Denkeinstellungen
cache_read_input_tokens fällt bei Anfragen, die zuvor den Cache getroffen haben, auf null.
Dies geschieht, weil die Denkkonfiguration und die Effort-Stufe (oder ihr Standardwert) Teil des gecachten Prompt-Präfixes sind, sodass jede Änderung daran ein neues Präfix beginnt: Das Wechseln des Denkmodus, das Ändern des Effort-Werts und das Ändern von budget_tokens machen alle Nachrichten-Cache-Breakpoints ungültig und können je nachdem, wo das Modell die Konfiguration rendert, auch Tool- und System-Prompt-Breakpoints ungültig machen.
Halte die Denkkonfiguration und die Effort-Stufe über Anfragen hinweg konstant, die eine Konversation teilen; einen Parameter explizit auf seinen Standardwert zu setzen, ist gleichbedeutend mit dem Weglassen und macht nichts ungültig. Siehe Denken und Prompt-Caching.
Das Setzen von Effort ändert das Denken nicht
Du änderst effort, aber Häufigkeit oder Tiefe des Denkens bleiben gleich.
Dies geschieht, weil Effort nur im adaptiven Modus der primäre Hebel für das Denken ist. Auf Modellen, die nur erweitertes Denken unterstützen, wird die Denktiefe stattdessen durch budget_tokens festgelegt.
Passe auf diesen Modellen budget_tokens an oder prüfe, in welchem Modus dein Modell läuft; siehe Denken und Effort. Auf Claude Opus 4.5, dem einzigen Modell mit ausschließlich erweitertem Denken, das Effort unterstützt, wirkt Effort mit dem Budget zusammen; siehe Budgetregeln und Feinabstimmung.
Nächste Schritte
Die Übersicht: was Denken ist, wie du es konfigurierst und wie es mit Tools, Caching und Streaming zusammenspielt.
Die vollständige Fehlerreferenz, einschließlich der 400-Fehler bei der Denkkonfiguration mit ihren exakten Servermeldungen.
Stelle budget_tokens-Anfragen auf adaptives Denken mit Effort um.
Was this page helpful?