Autorhinweis: Tiefgehende Analyse der grundlegenden Ursache des Fehlers content should be a valid list beim Aufruf des Claude Opus 4.6 Thinking-Modells über einen API-Proxy-Dienst. Erläuterung der Formatunterschiede und Kompatibilitätslösungen zwischen den beiden Endpunkten /v1/messages und /v1/chat/completions.
Haben Sie schon einmal diese Situation erlebt? Sie verwenden das claude-opus-4-6-thinking-Modell, der Aufruf über /v1/chat/completions (OpenAI-Format) funktioniert einwandfrei, aber sobald Sie auf /v1/messages (das native Anthropic-Format) wechseln, erhalten Sie den Fehler content: Input should be a valid list? Dieses scheinbar kontraintuitive Phänomen beleuchtet tatsächlich tiefgreifende Kompatibilitätsprobleme des Thinking-Modells zwischen den beiden API-Formaten. Dieser Artikel geht von den zugrundeliegenden API-Formaten aus und erklärt die Fehlerursache sowie die korrekte Aufrufmethode vollständig.
Kernwert: Nach dem Lesen dieses Artikels verstehen Sie die Verhaltensunterschiede des Thinking-Modells in den beiden API-Formaten, lösen den Fehler content should be a valid list und beherrschen den korrekten Umgang mit Thinking-Blöcken in Mehrfachdialogkonversationen.

Kernpunkte zur API-Kompatibilität des Claude Thinking-Modells
Zuerst die direkte Antwort auf dieses "kontraintuitive" Phänomen.
| Punkt | Erklärung | Auswirkung |
|---|---|---|
| Ursache des Fehlers | Der API-Proxy-Dienst übergibt content: "string" an /v1/messages, das content: [list] erwartet |
Formatinkongruenz führt zu 400-Fehlern |
| OpenAI-Format funktioniert | /v1/chat/completions erlaubt content als String, entfernt thinking-Blöcke automatisch |
Einfaches Format, gute Kompatibilität |
| Anthropic-Format schlägt fehl | /v1/messages erfordert streng, dass content eine Liste von Inhaltsblöcken ist, und thinking muss an erster Stelle stehen |
Unvollständige Formatkonvertierung durch den Proxy |
| Modellnamensunterschied | claude-opus-4-6-thinking ist ein Alias auf der Proxy-Plattform, der offizielle Modellname ist claude-opus-4-6 |
Thinking wird über Parameter, nicht den Modellnamen, aktiviert |
| Korrekte Vorgehensweise | Verwenden Sie das OpenAI-Format für den Aufruf oder stellen Sie sicher, dass der Proxy die content-Formatkonvertierung korrekt verarbeitet | Richtigen Endpunkt + korrekte Parameterübergabe wählen |
Technische Ursache der API-Fehler beim Claude Thinking-Modell
Die Fehlermeldung content: Input should be a valid list offenbart einen entscheidenden Formatunterschied:
Die native Anthropic-API (/v1/messages) erfordert, dass das content-Feld ein Array von Inhaltsblöcken (list) ist:
{
"role": "assistant",
"content": [
{"type": "thinking", "thinking": "Lassen Sie mich dieses Problem analysieren...", "signature": "CpcH..."},
{"type": "text", "text": "Das ist meine Antwort..."}
]
}
Das OpenAI-kompatible Format (/v1/chat/completions) erlaubt content als reinen String:
{
"role": "assistant",
"content": "Das ist meine Antwort..."
}
Wenn die Kanal-Konfiguration einer API-Proxy-Plattform (wie das APIYI-Backend) auf das /v1/messages-Format eingestellt ist und der Upstream-Client einen String-content im OpenAI-Format sendet, muss der Proxy "string" in [{"type": "text", "text": "string"}] konvertieren. Wenn diese Konvertierung unvollständig ist – insbesondere wenn die Antwort des Thinking-Modells in die nächste Konversationsrunde zurückgesendet wird – löst dies den Input should be a valid list-Fehler aus.
Detaillierter Vergleich der beiden Endpunktformate für das Claude Thinking-Modell-API
Das ist der Schlüssel zum Verständnis dieses Problems: Die Anforderungen der beiden Endpunkte an das content-Feld sind grundlegend verschieden.
Formatunterschiede des Claude Thinking-Modell-APIs
| Vergleichsdimension | /v1/chat/completions (OpenAI) |
/v1/messages (Anthropic) |
|---|---|---|
| content-Typ | string oder array |
Muss array sein (Liste von Inhaltsblöcken) |
| thinking-Rückgabe | Gibt keinen detaillierten Denkprozess zurück | Gibt Inhaltsblöcke vom Typ thinking zurück |
| signature-Übergabe | Wird in provider_specific_fields platziert |
Direkt im signature-Feld des thinking-Blocks |
| Mehrrunden-Dialog | Reine Textübergabe, keine Sorge um thinking-Reihenfolge | Assistant-Nachrichten müssen mit einem thinking-Block beginnen |
| Aktivierungsmethode für thinking | Modellnamenssuffix oder Parameter | Parameter thinking: {"type": "adaptive"} |
| prompt caching | Nicht unterstützt | Unterstützt |
| Denkprozess sichtbar | Nicht sichtbar | Sichtbar (summarized thinking) |
Vergleich der Anfrageformate für das Claude Thinking-Modell-API
OpenAI-Format-Aufruf (empfohlen für Proxy-Szenarien):
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://vip.apiyi.com/v1"
)
response = client.chat.completions.create(
model="claude-opus-4-6-thinking", # Alias auf der Proxy-Plattform
messages=[
{"role": "user", "content": "Analysieren Sie die Geschäftsperspektiven von Quantencomputing"}
],
max_tokens=16000
)
print(response.choices[0].message.content)
Code für den nativen Anthropic-Format-Aufruf anzeigen
import anthropic
client = anthropic.Anthropic(api_key="YOUR_API_KEY")
response = client.messages.create(
model="claude-opus-4-6", # Offizieller Modellname, ohne -thinking
max_tokens=16000,
thinking={
"type": "adaptive" # Aktiviert thinking über Parameter
},
messages=[
{"role": "user", "content": "Analysieren Sie die Geschäftsperspektiven von Quantencomputing"}
]
)
# In der Antwort ist content eine Liste, die thinking- und text-Blöcke enthält
for block in response.content:
if block.type == "thinking":
print(f"[Denkprozess] {block.thinking[:100]}...")
elif block.type == "text":
print(f"[Antwort] {block.text}")
Wichtige Unterschiede:
- Der Modellname ist
claude-opus-4-6(ohne das-thinking-Suffix) - thinking wird über den Parameter
thinking={"type": "adaptive"}aktiviert - Antwort-content ist eine Liste von Inhaltsblöcken, kein String
- Bei Mehrrunden-Dialogen muss die vollständige content-Liste (inkl. thinking-Blöcke) zurückgegeben werden
🎯 Aufrufempfehlung: Wenn Sie das Claude Thinking-Modell über eine Proxy-Plattform aufrufen, verwenden Sie vorrangig
/v1/chat/completions(OpenAI-Format) für die beste Kompatibilität.
Der OpenAI-kompatible Endpunkt der APIYI-Plattform apiyi.com ist bereits für das Thinking-Modell angepasst und verarbeitet die Konvertierung von thinking-Blöcken automatisch.

Warum funktioniert das Claude Thinking Modell API mit dem OpenAI-Format besser?
Dies ist der kontraintuitivste Teil: Die Verwendung des "nicht-nativen" OpenAI-Formats für den Aufruf des Claude Thinking Modells bietet eine bessere Kompatibilität. Dafür gibt es drei Gründe:
Grund 1: Unterschiedliche Toleranz des content-Formats
Das OpenAI-Format erlaubt, dass content entweder ein einfacher String "hallo" oder ein Array von Inhaltsblöcken [{"type":"text","text":"hallo"}] ist. Das native Anthropic-Format akzeptiert nur das Array-Format, ein String-Format führt direkt zu einem Fehler.
Wenn Client-Code den Inhalt als String übergibt (das Standardverhalten des OpenAI SDKs) und der Proxy den OpenAI-Format-Kanal verwendet, sind Client- und Upstream-Endpunktformate konsistent, es gibt kein Konvertierungsproblem. Verwendet der Proxy jedoch den Anthropic-Format-Kanal, wird der String nicht akzeptiert.
Grund 2: Automatisches Entfernen der Thinking-Blöcke
Der OpenAI-Kompatibilitätsmodus entfernt automatisch die Thinking-Blöcke aus der Claude-Antwort und gibt nur den endgültigen Text zurück. Das bedeutet:
- Der Client erhält keine Thinking-Blöcke
- In der nächsten Konversationsrunde müssen keine Thinking-Blöcke zurückgesendet werden
- Es gibt kein Problem mit der Reihenfolge der Thinking-Blöcke
Das native Anthropic-Format erfordert hingegen, dass Thinking-Blöcke in mehreren Konversationsrunden vollständig erhalten bleiben und Assistant-Nachrichten mit einem Thinking-Block beginnen müssen. Wenn der Proxy diese Sortieranforderung nicht korrekt verarbeitet, kommt es zu einem Fehler.
Grund 3: Problem mit der Übergabe von thoughtSignature
Wie bereits erwähnt, enthalten die Thinking-Blöcke im Anthropic-Format eine kryptografische Signatur (signature), die unverändert zurückgesendet werden muss. Das OpenAI-Format überspringt diesen Schritt direkt – es gibt keine Signatur zurück und erfordert auch keine Rückgabe einer Signatur.
🎯 Empfehlung zur Auswahl: Beim Aufruf des Claude Thinking Modells über einen API-Proxy sollten Sie vorrangig das
/v1/chat/completions-Format verwenden, um Kompatibilitätsprobleme mit dem Thinking-Block-Format zu vermeiden.
Der OpenAI-kompatible Endpunkt von APIYI apiyi.com ist bereits vollständig für Thinking-Modelle angepasst.
Vergleich der API-Aufrufmethoden für das Claude Thinking Modell
Drei API-Aufrufmethoden für das Claude Thinking Modell
| Methode | Endpunkt | Formatkompatibilität | Thinking sichtbar | Prompt Caching |
|---|---|---|---|---|
| OpenAI-Format-Proxy | /v1/chat/completions |
Beste (String-Content) | Unsichtbar | Nicht unterstützt |
| Native Anthropic-Direktverbindung | /v1/messages |
Muss Format strikt einhalten | Sichtbar | Unterstützt |
| Anthropic-Format-Proxy | /v1/messages (Proxy) |
Hängt von der Proxy-Implementierung ab | Hängt vom Proxy ab | Teilweise unterstützt |
Unterschiede in den Modellnamen für das Claude Thinking Modell API
Verschiedene Plattformen verwenden unterschiedliche Namenskonventionen für Thinking-Modelle, was oft zu Verwirrung führt:
| Plattform | Modellname | Thinking-Aktivierungsmethode |
|---|---|---|
| Anthropic offiziell | claude-opus-4-6 |
thinking: {"type": "adaptive"} Parameter |
| API-Proxy (z.B. APIYI) | claude-opus-4-6-thinking |
Modellnamensuffix aktiviert implizit |
| OpenRouter | anthropic/claude-opus-4.6 |
Parameter-Aktivierung |
| AWS Bedrock | anthropic.claude-opus-4-6-v1 |
Parameter-Aktivierung |
In der offiziellen Anthropic API gibt es keinen Modellnamen claude-opus-4-6-thinking. Das Suffix -thinking ist eine Namenskonvention von Proxy-Plattformen, die es Benutzern ermöglicht, die Thinking-Funktion direkt über den Modellnamen zu aktivieren, ohne Parameter manuell setzen zu müssen.
Hinweis: Wenn Sie auf APIYI apiyi.com den Modellnamen
claude-opus-4-6-thinkingverwenden, fügt die Plattform automatisch den Parameterthinking: {"type": "adaptive"}zur Anfrage hinzu. So erhalten Sie mit dem OpenAI SDK direkt Thinking-Fähigkeiten, ohne Code ändern zu müssen.
Häufige Fallstricke bei der Claude Thinking Modell-API und ihre Lösungen

Häufig gestellte Fragen
F1: Verliert das Thinking-Modell seine Denkfähigkeit, wenn es im OpenAI-Format aufgerufen wird?
Nein. Der Denkprozess (thinking) des Modells findet serverseitig bei Anthropic statt und ist unabhängig vom Aufrufendpunkt-Format. Bei Verwendung des OpenAI-Formats führt das Modell weiterhin vollständige Denk- und Schlussfolgerungsprozesse durch, nur dass die Textzusammenfassung dieses Denkprozesses nicht an den Client zurückgegeben wird. Die Qualität und Tiefe der endgültigen Antwort bleibt gleich – Sie erhalten eine "durchdachte Antwort", sehen aber nicht die "Textaufzeichnung des Denkprozesses".
F2: In welchen Szenarien muss das native /v1/messages-Format verwendet werden?
Zwei Szenarien erfordern das native Format: 1) Sie müssen den Denkprozess des Modells (summarized thinking) sehen, z.B. für Debugging, Bildungszwecke oder zur Darstellung von Gedankenketten; 2) Sie müssen prompt caching nutzen, um Kosten zu senken – die Cache-Funktion ist nur am /v1/messages-Endpunkt verfügbar. Wenn Sie keines dieser Bedürfnisse haben, ist das OpenAI-Format einfacher. Der Aufruf über den OpenAI-kompatiblen Endpunkt von APIYI (apiyi.com) ist am einfachsten.
F3: Wie löse ich Kompatibilitätsprobleme, wenn der APIYI-Hintergrundkanal als /v1/messages konfiguriert ist?
Zwei Lösungen: 1) Wechseln Sie den Kanal zum OpenAI-Typ (/v1/chat/completions), um Formatkonvertierungsprobleme grundsätzlich zu vermeiden; 2) Wenn der /v1/messages-Kanal zwingend erforderlich ist, muss die Proxy-Schicht sicherstellen, dass string content vom Client korrekt in das Listenformat konvertiert wird und thinking blocks in Mehrfachdialogreihenfolge sowie signature korrekt verarbeitet werden. Lösung 1 ist einfacher und zuverlässiger.
F4: Was ist der Unterschied zwischen adaptive thinking und der alten extended thinking-Version?
Für Opus 4.6 wird thinking: {"type": "adaptive"} (adaptives Denken) empfohlen, wobei das Modell basierend auf der Problemkomplexität automatisch entscheidet, ob und wie tief es denken soll. Die alte Version thinking: {"type": "enabled", "budget_tokens": N} ist für Opus 4.6 und Sonnet 4.6 veraltet. Die neue Version fügt außerdem den Parameter effort (low/medium/high/max) hinzu, um die Denktiefe zu steuern, standardmäßig high.
Zusammenfassung
Die Kernpunkte zu Kompatibilitätsproblemen mit der Claude Thinking-Modell-API:
- Die Fehlerursache ist ein Nichtübereinstimmung des content-Formats: Die native Anthropic-API erfordert zwingend, dass content eine Liste (list) ist, während das OpenAI-Format Zeichenketten erlaubt – wenn ein Proxy-Kanal
/v1/messagesverwendet, der Client aber eine Zeichenkette sendet, kommt es zum FehlerInput should be a valid list. - Das OpenAI-Format bietet bessere Kompatibilität: Es entfernt automatisch thinking blocks, erfordert keine Rückübertragung von signature, und content kann eine Zeichenkette sein – die erste Wahl für Proxy-Szenarien.
- Das Suffix -thinking ist eine Proxy-Konvention, kein offizieller Modellname: Der offizielle Modellname ist
claude-opus-4-6, thinking wird über Parameter aktiviert.
Der einfachste Ansatz zum Aufruf des Claude Thinking-Modells über einen API-Proxy ist die einheitliche Verwendung des OpenAI-kompatiblen Formats.
Empfohlen wird der Aufruf über APIYI (apiyi.com). Die Plattform hat bereits Formatkompatibilitätsoptimierungen für Thinking-Modelle vorgenommen und bietet kostenlose Kontingente sowie eine einheitliche Schnittstelle für mehrere Modelle.
📚 Referenzen
-
Claude API Extended Thinking Dokumentation: Vollständige API-Referenz für den Denkmodus
- Link:
platform.claude.com/docs/en/build-with-claude/extended-thinking - Beschreibung: Enthält detaillierte Erklärungen zu adaptive thinking, effort-Parameter und Inhaltsblock-Formaten
- Link:
-
Claude API OpenAI SDK Kompatibilitätsdokumentation: Offizielle Anleitung zum Aufruf von Claude im OpenAI-Format
- Link:
platform.claude.com/docs/en/api/openai-sdk - Beschreibung: Enthält Kompatibilitätseinschränkungen und eine Liste nicht unterstützter Funktionen
- Link:
-
Claude API Fehlercode-Referenz: Erklärung aller API-Fehlertypen
- Link:
platform.claude.com/docs/en/api/errors - Beschreibung: Enthält konkrete Lösungsansätze für invalid_request_error
- Link:
-
APIYI Dokumentationszentrum: Aufruf des Claude Thinking-Modells über die OpenAI-kompatible Schnittstelle
- Link:
docs.apiyi.com - Beschreibung: Bereits für das Thinking-Modell formatiert, verarbeitet automatisch die Konvertierung von thinking blocks
- Link:
Autor: APIYI Technikteam
Technischer Austausch: Diskussionen sind in den Kommentaren willkommen. Weitere Ressourcen finden Sie im APIYI-Dokumentationszentrum unter docs.apiyi.com