Dieser Artikel behandelt die Nutzungshinweise und Stolpersteine für deepseek-v4-pro-0813. Auf AIHubMix ist das Modell über die Chat Completions, Responses und Claude-kompatiblen Messages APIs verfügbar. Siehe auch: Offizielle DeepSeek API-Dokumentation.
Die "Verifizierten" Schlussfolgerungen und Beispielantworten in jedem Abschnitt stammen von tatsächlichen Aufrufen, die am 2026-08-13 über die AIHubMix APIs (Chat Completions / Responses / Messages) gemacht wurden; Spezifikationspunkte, die nicht als "Verifiziert" gekennzeichnet sind, stammen aus der offiziellen Dokumentation von DeepSeek.
1. Modellpositionierung und Spezifikationen auf einen Blick
V4 Pro ist die High-End-Stufe der V4-Generation von DeepSeek (das leichte deepseek-v4-flash ist sein Geschwistermodell). Die Veröffentlichungsreihe geht zurück auf DeepSeek-V4 Preview am 2026-04-24, und 0813 ist das MODELLVERSION-Label, das DeepSeek der aktuellen Version zugewiesen hat. Neben den Rohspezifikationen unterscheiden sich vier Dinge:
- Ein spärliches Grenzmodell: 1,6T Gesamtparameter / 49B aktivierte (eine MoE- oder Mischung-von-Experten-Architektur — jeder Inferenzdurchlauf aktiviert nur eine Teilmenge von Expertennetzwerken: Gesamtparameter bestimmen die Wissenskapazität, aktivierte Parameter bestimmen die Berechnungskosten pro Aufruf). Die Modellkarte listet CSA+HCA hybride Aufmerksamkeit, mHC und den Muon-Optimierer auf.
- Offene Gewichte unter MIT:
deepseek-ai/DeepSeek-V4-Proist unter der MIT-Lizenz auf HuggingFace veröffentlicht (eine der permissivsten Open-Source-Lizenzen — kommerzielle Nutzung und geschlossene Quellverteilung sind beide erlaubt) und kann selbst gehostet werden. MIT ist für ein Modell dieser Größe ungewöhnlich. Die Selbsthosting-Hinweise auf der Modellkarte legen auch ein Kontextfenster von ≥384K Tokens nahe, wenn es im Denk-Max-Modus (dem höchsten Denklevel) ausgeführt wird — das ist eine Bereitstellungshinweise für das Selbsthosting, keine Spezifikation der gehosteten API. - Multi-Protokoll-Unterstützung ist First-Party, keine Third-Party-Übersetzung: DeepSeek selbst bietet eine OpenAI Chat API, einen Anthropic-kompatiblen Endpunkt (
/anthropic, derclaude-opus*auf dieses Modell abbildet) und die Responses API (DeepSeek beschreibt native Unterstützung für das Format, mit Anpassungen für Codex). Es bietet auch FIM (Fill-in-the-Middle) Completion als Beta-Funktion auf einem separaten Endpunkt, der nicht Teil der drei AIHubMix APIs ist. - Ein ~120× Unterschied zwischen Cache-Hit- und Cache-Miss-Preisen: DeepSeeks veröffentlichtes Preismechanismus ist Cache-Hit $0.003625/M vs Cache-Miss $0.435/M (Ausgabe $0.87/M), und Caching ist automatisch ohne Parameter, die gesetzt werden müssen. Für Workloads, die lange Präfixe wiederverwenden (Systemaufforderungen, lange Dokumente), dominiert dieser Unterschied die Rechnung. Die tatsächlichen Einzelhandelspreise sind das, was die Modellseite anzeigt.
| Artikel | Wert |
|---|---|
| Modellname auf AIHubMix | deepseek-v4-pro-0813 |
| Kontextfenster | 1M Tokens (1.000.000) |
| Maximale Ausgabe | Offizielle Formulierung ist MAX OUTPUT MAXIMUM: 384K (die genaue Tokenanzahl und der Standard sind nicht veröffentlicht) |
| Eingabemodalitäten | Nur Text. Die Kompatibilitätsseite für Responses gibt ausdrücklich an, dass Bild- und Dateieingaben nicht unterstützt werden; die Seite für Messages kennzeichnet type="image" Blöcke als Nicht Unterstützt; bei Chat Completions akzeptiert die Benutzer-Nachricht content nur einen String, ohne multimodale Inhaltsbestandteile |
| Denkmodus | Hybrid (denken / nicht denken), denken standardmäßig aktiviert |
| Denkstufen | reasoning_effort akzeptiert low / high / max, Standard high; medium und xhigh sind zur Kompatibilität auf high abgebildet |
| Verfügbare APIs | Chat Completions, Responses, Messages (Claude-kompatibel) |
Verifiziert: das Überschreiten vonmax_tokenswird von der Validierung abgelehnt, anstatt stillschweigend abgeschnitten zu werden — das Senden vonmax_tokens=9999999gibt HTTP 400 zurück, und der Fehlertext nennt das Feld und gibt die Obergrenze393216an.
# max_tokens=9999999 -> HTTP 400
"...max_tokens... 393216"
❗ Bilder verursachen keinen Fehler, werden aber verworfen: die offizielle Formulierung für die Responses API lautet "Bild- und Dateieingaben werden nicht unterstützt (input_image Teile verursachen keinen Fehler, werden jedoch durch Platzhaltertext ersetzt)" — eininput_imageTeil führt nicht zum Fehlschlagen der Anfrage, sondern wird durch Platzhaltertext ersetzt. Bei Chat Completions akzeptiert die Benutzer-Nachrichtcontentnur einen String, und bei Messages sindtype="image"Blöcke als Nicht Unterstützt gekennzeichnet. Bei der Erstellung multimodaler Routen sollte "kein Fehler" niemals als Beweis dafür behandelt werden, dass das Modell das Bild tatsächlich gesehen hat.
2. Wie schaltet man das Denken aus? Drei APIs, drei Feldformen
V4 Pro denkt standardmäßig: senden Sie keine Parameter und die Antwort kommt mit Denkinhalt zurück. Das Ausschalten erfolgt mit einer anderen Feldform in jeder der drei APIs.
Chat Completions
Verwenden Sie das oberste thinking Objekt.
from openai import OpenAI
client = OpenAI(
base_url="https://aihubmix.com/v1",
api_key="<AIHUBMIX_API_KEY>",
)
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "Was ist 2 + 2?"}],
extra_body={"thinking": {"type": "disabled"}},
)
# Denken an (Standard): message.reasoning_content vorhanden, reasoning_tokens = 43
# Denken aus (deaktiviert): reasoning_content fehlt, reasoning_tokens fehlen
Verifiziert: mitthinking.type="disabled"verschwinden sowohlmessage.reasoning_contentals auchusage.completion_tokens_details.reasoning_tokenszusammen, was bestätigt, dass der Schalter wirksam wurde.
Responses
Es gibt keinen separaten Schalter für Responses; das Ausschalten des Denkens bedeutet, das Niveau auf none zu setzen.
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Was ist 2 + 2?",
reasoning={"effort": "none"},
)
# effort="none": usage.output_tokens_details.reasoning_tokens = 0
# output[0] ist das Nachrichtenobjekt direkt (kein Denkobjekt)
# effort nicht gesetzt : output beginnt immer mit einem Denkobjekt
Verifiziert:reasoning.effort="none"unterscheidet sich deutlich vom Standardniveau (Denk-Tokens fallen auf null, dasreasoningAusgabeelement verschwindet), was bestätigt, dass es wirksam wurde.
Messages
Gleicher Name und gleiche Form wie Chat Completions: das oberste thinking Objekt.
from anthropic import Anthropic
client = Anthropic(
api_key="<AIHUBMIX_API_KEY>",
base_url="https://aihubmix.com",
)
response = client.messages.create(
model="deepseek-v4-pro-0813",
max_tokens=1024,
messages=[{"role": "user", "content": "Was ist 2 + 2?"}],
extra_body={"thinking": {"type": "disabled"}},
)
# Denken an (Standard): content = [Denkblock, Textblock]
# Denken aus (deaktiviert): content = [Textblock]
Verifiziert: einmal deaktiviert, verschwindet derthinkingBlock vollständig und nur dertextBlock bleibt.
Zu Denkstufen:lowundmaxgaben beide 200 bei Chat Completions in Tests zurück (highist der Standard und gilt, wenn das Feld weggelassen wird), aber die Denk-Tokens zeigen keinen monotonen Unterschied zwischen den Stufen für die gleiche Frage (einfache Frage: low=43 / max=27; schwierige Frage: low=114 / max=92), und nichts wird in der Antwort zurückgegeben — die Stufen werden akzeptiert, aber kein unterscheidbares Signal ist aus der Antwort beobachtbar. Bei Responses kann nur dienoneStufe (Denken aus) von der Antwortseite bestätigt werden.
3. Warum gibt eine Mehrturn-Konversation plötzlich 400 zurück? Denkverlauf muss wörtlich zurückgegeben werden
Dies ist der häufigste Stolperstein mit diesem Modell: Im Denkmodus muss eine Mehrturn-Konversation den Denkinhalt der vorherigen Runde wörtlich zurückgeben, sonst wird die Anfrage abgelehnt. Nicht verschlechtert, nicht von geringerer Qualität — ein harter HTTP 400.
Die drei APIs tragen den gleichen Denkinhalt unter verschiedenen Feldnamen:
| API | Passback-Form | Fehlertext bei Fehlen |
|---|---|---|
| Chat Completions | Das reasoning_content Feld in der Assistenten-Nachricht |
Der `reasoning_content` im Denkmodus muss an die API zurückgegeben werden. |
| Responses | Das Ausgabeelement mit type="reasoning" im input Array |
Der `reasoning_text` im Denkmodus muss an die API zurückgegeben werden. |
| Messages | Der thinking Block innerhalb der Assistenten-Inhaltsblöcke |
Der `content[].thinking` im Denkmodus muss an die API zurückgegeben werden. |
Verifiziert (Auslösebedingungen): diese Validierung wird konsequent bei Mehrturn-Anfragen, die tools tragen ausgelöst (das Modell gibt einen Werkzeugaufruf aus, dann wird das Werkzeugergebnis zurückgesendet). Bei einfachen Mehrturn-Anfragen ohne Werkzeuge, bei denen das Modell direkt antwortet, wurde die Validierung in dieser Testrunde nicht ausgelöst und die Anfrage gab 200 zurück. Mit anderen Worten, die Werkzeugorchestrierung (Agenten-/Funktionsaufruf-Workloads) ist der Bereich, in dem Sie am wahrscheinlichsten darauf stoßen, also behandeln Sie den Denkinhalt als Teil des Gesprächszustands, den Sie beibehalten und wiedergeben.Chat Completions
# Mehrturn: die vorherige Assistenten-Nachricht wörtlich zurückgeben, einschließlich reasoning_content
messages = [
{"role": "user", "content": "Was ist 1 + 1? Merke dir das Ergebnis."},
{
"role": "assistant",
"content": "2",
"reasoning_content": "<reasoning_content aus der vorherigen Antwort>",
},
{"role": "user", "content": "Füge 1 zum Ergebnis hinzu."},
]
# Weglassen von reasoning_content -> HTTP 400 invalid_request_error
Verifiziert: eine historische Assistenten-Nachricht, der reasoning_content fehlt, gibt 400 zurück; das Hinzufügen macht die identische Anfrage 200 zurückgeben und korrekt fortfahren.Responses
# Mehrturn: input = vorheriges input + response.output (Denkobjekt enthalten) + neue Nachricht
input = previous_input + response.output + [
{"role": "user", "content": "Füge 1 zum Ergebnis hinzu."}
]
# Herausfiltern des type="reasoning" Objekts -> HTTP 400
Verifiziert: das Einfügen vonresponse.outputso wie es ist, ist alles, was nötig ist. Das Herausfiltern von Ausgabeelementen nachtype == "message"beim Zusammenstellen der Historie entfernt dasreasoningObjekt und löst die 400 aus — dies ist der häufigste Weg, um darauf zu stoßen.
Messages
# Mehrturn: die response.content wörtlich als Assistenten-Nachricht zurückgeben
messages = [
{"role": "user", "content": "Wie ist das Wetter in Paris?"},
{"role": "assistant", "content": response.content}, # Denk- + Werkzeugnutzungsblöcke
{"role": "user", "content": [tool_result_block]},
]
# Entfernen des Denkblocks -> HTTP 400
Verifiziert: das Entfernen desthinkingBlocks aus dem Inhaltsarray gibt 400 zurück (miterror.typeaufinvalid_request_errorgesetzt).
4. Werkzeugaufruf
Jede API erklärt Werkzeuge in ihrer eigenen Protokollform; die Formen sind nicht austauschbar.
Chat Completions
Verschachtelte Form (ein function Objekt, das name / parameters umschließt). Ein benannter Funktionsaufruf tool_choice erzwingt den Aufruf.
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "Wie ist das Wetter in Paris?"}],
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Wetter für eine Stadt abrufen",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
},
}],
tool_choice={"type": "function", "function": {"name": "get_weather"}},
)
# Beobachtet: finish_reason "tool_calls", tool_calls[0].function.arguments = {"city": "Paris"}
❗ Verifiziert:tool_choice: "required"kann nicht verwendet werden, während das Denken aktiviert ist — es gibt 400 zurückDer Denkmodus unterstützt diesen tool_choice nicht; das Deaktivieren des Denkens (thinking.type="disabled") lässt die identische Anfrage 200 zurückgeben. Wenn Sie "muss ein Werkzeug aufrufen" Semantik benötigen, verwenden Sie stattdessen einen benannten Funktionsaufruftool_choice(wie oben, was mit aktiviertem Denken funktioniert), oder schalten Sie das Denken zuerst aus und verwenden Sie dannrequired.
Responses
Flache Form (type / name / parameters auf derselben Ebene).
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Wie ist das Wetter in Paris?",
tools=[{
"type": "function",
"name": "get_weather",
"description": "Wetter für eine Stadt abrufen",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
)
# Beobachtete Ausgabeelemente: ["reasoning", "function_call"]; arguments = {"city": "Paris"}
Verifiziert: das Kopieren der verschachtelten Form von Chat Completions (function: {...}) in Responses gibt 400 zurück — verwenden Sie die flache Form.tool_choice: "required"unterliegt der gleichen Denkmodus-Einschränkung wie bei Chat.
Messages
Anthropic-native Form (input_schema), mit tool_choice: {"type": "any"}, um einen Aufruf zu erzwingen.
response = client.messages.create(
model="deepseek-v4-pro-0813",
max_tokens=1024,
tools=[{
"name": "get_weather",
"description": "Wetter für eine Stadt abrufen",
"input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
}],
tool_choice={"type": "any"},
messages=[{"role": "user", "content": "Wie ist das Wetter in Paris?"}],
)
# Beobachtet: der Inhalt enthält einen Werkzeugnutzungsblock, name = get_weather, input = {"city": "Paris"}
❗ Parallele Werkzeugaufrufe können nicht deaktiviert werden, gemäß DeepSeeks eigenem Design — die offizielle Anthropic-Kompatibilitätsseite besagt in der Zeiletool_choice, dassdisable_parallel_tool_use wird ignoriert, und die Responses-Seite besagt ebenfallsparallel_tool_calls | Ignored (parallele Werkzeugaufrufe sind immer aktiviert). Tests stimmen überein: das Fragen nach zwei Städten gleichzeitig mitdisable_parallel_tool_use: truegibt immer noch zweitool_useBlöcke zurück. Wenn Sie serielle Ausführung benötigen, nehmen Sie den ersten Aufruf oder stellen Sie sie selbst auf der Client-Seite in Warteschlange.
Werkzeuganzahl und Kontextkosten: das Senden von 200 Funktionsdefinitionen in einer einzigen Anfrage gab immer noch 200 mit einer normalen Antwort zurück und löste keine Zählvalidierung aus (beobachtet auf diesem Pfad; höhere Zählungen wurden nicht getestet). Aber prompt_tokens für diese Anfrage erreichte 6.105 — Werkzeugdefinitionen gehen vollständig in den Kontext ein und werden abgerechnet. Wenn Sie viele Werkzeuge haben, kürzen Sie das Werkzeugset pro Szenario, anstatt alles bedingungslos zu deklarieren.5. Strukturierte Ausgabe
Chat Completions
response_format unterstützt den JSON-Modus.
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "Gib {\"a\": 1} als JSON zurück."}],
response_format={"type": "json_object"},
)
# Beobachteter Antwortinhalt: {"a":1}
Verifiziert: die Ausgabe ist gültiges JSON.
Responses
Erklären Sie ein JSON-Schema über text.format, wobei der strict Modus unterstützt wird.
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Gib die Zahl 1 unter dem Schlüssel a zurück.",
text={
"format": {
"type": "json_schema",
"name": "extract",
"strict": True,
"schema": {"type": "object", "properties": {"a": {"type": "integer"}}, "required": ["a"]},
}
},
)
# Beobachteter Ausgabetext: {"a":1}
Verifiziert: die Ausgabe entspricht strikt dem gegebenen Schema.
Messages
Das Messages (Anthropic) Protokoll hat kein Äquivalent zu response_format / text.format. Der übliche Workaround besteht darin, das Schema in einem Werkzeug zu tragen — erklären Sie ein Werkzeug, dessen input_schema Ihr Zielschema ist, setzen Sie tool_choice: {"type": "any"} und lesen Sie das strukturierte Ergebnis aus dem input des tool_use Blocks. Diese Testrunde hat dieses Muster nicht speziell verifiziert; wenn Sie harte Schema-Garantien benötigen, ziehen Sie Chat Completions oder Responses vor.
6. Wie aktivieren Sie das Kontext-Caching? Sie tun es nicht, es ist automatisch
Das Kontext-Caching (identische Präfixe werden wiederverwendet, und der zwischengespeicherte Teil wird zu einem niedrigeren Satz abgerechnet) ist standardmäßig aktiviert und benötigt keine Parameter. Eine zweite Anfrage mit dem gleichen langen Präfix meldet den Treffer in usage, unter einem Feldnamen, der je nach API variiert. Für Caching-Details und aktuelle Preise siehe die Modellseite; für die Caching-Strategie über Modelle hinweg und Techniken zur Trefferquote siehe Praktiken zum Prompt-Caching.
Chat Completions
# Nutzung des zweiten Aufrufs mit einem identischen langen Präfix
"prompt_tokens_details": {"cached_tokens": 640} # erster Aufruf: 0
Verifiziert: zwei aufeinanderfolgende Aufrufe mit dem gleichen langen Präfix auf demselben Kanal verschoben cached_tokens von 0 auf 640.Responses
# Nutzung des zweiten Aufrufs mit identischen langen Anweisungen
"input_tokens_details": {"cached_tokens": 896} # erster Aufruf: 0
Messages
# Nutzung eines Aufrufs, dessen langes Systempräfix bereits vorgewärmt wurde
"cache_read_input_tokens": 896
Verifiziert: das obige Präfix wurde durch eine Responses-Anfrage mit identischem Inhalt vorgewärmt, und der erste Messages-Aufruf traf sofort 896 — konsistent mit dem Caching, das auf dem Inhaltspräfix basiert und über Protokolloberflächen hinweg geteilt wird.
7. logprobs: Chat gibt zwei Kanäle zurück
logprobs (Log-Wahrscheinlichkeiten — das Detail des Modells zur Zuversicht pro Kandidaten-Token) kommt in verschiedenen Formen in den beiden APIs zurück, und der Parsing-Code muss sie separat behandeln.
Chat Completions
completion = client.chat.completions.create(
model="deepseek-v4-pro-0813",
messages=[{"role": "user", "content": "Sag hi."}],
logprobs=True,
top_logprobs=2,
)
# Beobachtet: choices[0].logprobs enthält ZWEI Arrays
# logprobs.content[] -> Tokens der endgültigen Antwort
# logprobs.reasoning_content[] -> Tokens des Denktextes
❗ Verifiziert: Chat gibt Log-Wahrscheinlichkeiten sowohl fürcontentals auch fürreasoning_contentzurück. Code, der nurlogprobs.contentliest, gemäß der Standard-Antwortform von OpenAI, wird keinen Fehler auslösen, aber den Denkkanal stillschweigend verpassen; wenn Ihr Code von einem einzelnen Array unterlogprobsausgeht, fügen Sie zuerst eine Formüberprüfung hinzu.
Responses
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Sag hi.",
top_logprobs=3,
)
# Beobachtet: logprobs nur im letzten Nachrichtenobjekt
# output[-1].content[0].logprobs[] mit logprob + top_logprobs-Details
Verifiziert: Responses fügt logprobs nur dem letzten Textobjekt an — keines der dualen Kanalformen, die bei Chat gesehen wurden.
Messages
Das Messages (Anthropic) Protokoll hat kein äquivalentes Feld. Für Details zur Token-Wahrscheinlichkeit verwenden Sie Chat Completions oder Responses.
8. Welche APIs können das Web durchsuchen?
Websuche hier ist ein serverseitiges Werkzeug (die Abfrage läuft auf dem Server; der Client gibt die Anfrage nie selbst aus), und es wird tatsächlich sowohl in den Responses- als auch in den Messages-APIs getestet.
Responses
response = client.responses.create(
model="deepseek-v4-pro-0813",
input="Was ist die neueste stabile Version von Python?",
tools=[{"type": "web_search"}],
)
# Beobachtete Ausgabeelementfolge:
# ["reasoning", "web_search_call", "reasoning", "message"]
Verifiziert: ein web_search_call Element erscheint in der Ausgabefolge, was bedeutet, dass der Server tatsächlich eine Abfrage durchgeführt hat.Messages
response = client.messages.create(
model="deepseek-v4-pro-0813",
max_tokens=1024,
tools=[{"type": "web_search_20250305", "name": "web_search"}],
messages=[{"role": "user", "content": "Was ist die neueste stabile Version von Python?"}],
)
# Beobachtete Inhaltsblockfolge:
# ["thinking", "server_tool_use", "web_search_tool_result", "thinking", "text"]
# usage.server_tool_use.web_search_requests = 1
Verifiziert: usage.server_tool_use.web_search_requests zählt 1 — die Abfrage wurde tatsächlich durchgeführt und abgerechnet.Chat Completions
Websuche kann bei Chat nicht ausgelöst werden. DeepSeeks offizielle Chat API-Referenz enthält kein Suchwerkzeugfeld irgendwo im Anfrage-Schema (das ist eine Abwesenheit, die durch das Durchgehen der Feldliste eins nach dem anderen festgestellt wurde; DeepSeek hat keine ausdrückliche Erklärung zur Unterstützung abgegeben). Die API mit einer ausdrücklichen offiziellen Unterstützungsanweisung für serverseitige Suche ist Responses (web_search), und die offizielle Messages-Kompatibilitätsseite listet ebenfalls die suchbezogenen Inhaltsblöcke auf.
# Drei Kontrollgruppen, dieselbe Frage, die aktuelle Informationen erfordert, alle HTTP 200:
# A kein Suchfeld -> "kann nicht abrufen", annotations = null
# B web_search_options -> "kann nicht abrufen", annotations = null, Nutzung identisch mit A
# C enable_search -> "kann nicht abrufen", annotations = null, Nutzung identisch mit A
Verifiziert: das Senden vonweb_search_optionsoderenable_searchlöst keinen Fehler aus, aber es ruft auch nichts ab — die Antwort trägt keineannotations(die Zitationsliste, die an eine Antwort angehängt wird, wenn die Websuche läuft), und die Nutzung entspricht der Kontrollgruppe Feld für Feld. Für den Webzugang verwenden Sie stattdessen die Responses- oder Messages-API.
9. Nutzungshinweise: DeepSeeks Design vs Abweichungen auf unserem Weg
Alles unten gibt HTTP 200 zurück, während es gegenintuitiv funktioniert. Die Ursachen sind unterschiedlich, und so ist auch, was Sie dagegen tun sollten, daher werden sie separat aufgelistet: die erste Gruppe ist, wie DeepSeek das Modell entworfen hat, und ein Wechsel des Anbieters wird daran nichts ändern; die zweite Gruppe ist das aktuelle Verhalten auf dem AIHubMix-Pfad, an dem wir arbeiten.
9.1 Nach DeepSeeks Design
| Verhalten | Offizielle Formulierung | Was zu tun ist |
|---|---|---|
| Responses behält keinen Sitzungsstatus oder Metadaten bei | Die offizielle Responses-Kompatibilitätsseite besagt zeilenweise, store | Nicht unterstützt. Die Antwort trägt immer store: false, metadata | Nicht unterstützt, und safety_identifier | Nicht unterstützt (von diesen vier Feldern ist nur user unterstützt). Tests stimmen überein: die Anfrage gibt 200 zurück, aber metadata ist null, safety_identifier fehlt, und store ist immer false |
Behalten Sie die Anfrage-Korrelationsdaten auf dem Client; verlassen Sie sich nicht auf serverseitige Speicherung |
| Sampling-Parameter haben keinen Einfluss im Denkmodus | DeepSeek gibt ausdrücklich an, dass temperature und top_p im Denkmodus stillschweigend inert sind. In Tests geben beide 200 zurück, ohne dass etwas zurückgegeben wird und ohne Änderung der Antwortform |
Verlassen Sie sich nicht auf Sampling-Parameter für die Stabilität der Ausgabe im Denkmodus; verwenden Sie strukturierte Ausgaben, wenn Sie Determinismus benötigen |
| Präfixfortsetzung / FIM ist nur am offiziellen Beta-Endpunkt verfügbar | Die offizielle Beschreibung von prefix lautet "(Beta) … Sie müssen base_url="https://api.deepseek.com/beta" setzen, um diese Funktion zu nutzen", und die FIM-Vervollständigung ist ebenfalls eine Beta-Funktion. Verifiziert auf AIHubMix-Produktion: das Senden von prefix: true gegen den Standardendpunkt gibt 200 zurück, aber das Präfix wird stillschweigend verworfen, was in Richtung der offiziellen Formulierung konsistent ist |
Für kontrolliertes Ausgabeformat verwenden Sie strukturierte Ausgaben (Abschnitt 5) oder stop Trunkierung |
| Parallele Werkzeugaufrufe können nicht deaktiviert werden | Siehe Abschnitt 4: DeepSeek gibt auf beiden Seiten, Responses und Anthropic, an, dass der Schalter ignoriert wird und paralleles Aufrufen immer aktiviert ist | Stellen Sie Anfragen auf dem Client in Warteschlange, wenn Sie serielle Ausführung benötigen |
9.2 Aktuelles Verhalten auf dem AIHubMix-Pfad
| Verhalten | Was Tests zeigen | Was zu tun ist |
|---|---|---|
Nicht-standard type auf Responses-Fehlerobjekten |
Der error.type bei 4xx-Antworten ist Aihubmix_api_error, während die gleiche Fehlerklasse bei Messages den kanonischen invalid_request_error zurückgibt |
Branch auf den HTTP-Statuscode, nicht auf die error.type Zeichenfolge |
| Denk-Tokens werden als 0 bei Messages gezählt | Die Antwort trägt einen thinking Block, dennoch ist usage.output_tokens_details.thinking_tokens immer 0, was dem tatsächlich produzierten Denkinhalt widerspricht; unter dem Anthropic-Vertrag, gegen den wir integrieren, ist dieses Feld erforderlich und sollte ≤ output_tokens sein |
Für die Kostenrechnung des Denkens verwenden Sie completion_tokens_details.reasoning_tokens bei Chat oder output_tokens_details.reasoning_tokens bei Responses |
Messages gibt model als deepseek-v4-pro zurück |
Die Anfrage sendet deepseek-v4-pro-0813 und die Antwort gibt deepseek-v4-pro zurück. Die Ursache ist die Benennung: DeepSeeks einziger offizieller API-Modellname ist deepseek-v4-pro, und 0813 ist sein Versionslabel |
Machen Sie das model Feld der Antwort nicht zur einzigen Grundlage für Modell-Routing-Prüfungen oder Nutzungsgenehmigungen |
9.3 Von DeepSeek undefiniert, also kein Urteil in beide Richtungen
Das Senden eines Wertes außerhalb des Enums für reasoning_effort (z.B. bogus_xyz) gibt 200 mit einer normalen Antwort zurück, keinen Fehler und keinen beobachtbaren Effekt. Die Tatsache ist klar genug — dieser Pfad validiert derzeit das reasoning_effort Enum nicht. Was unklar ist, ist, ob es sollte: DeepSeek veröffentlicht das legale Enum, erklärt aber nie, ob ein illegaler Wert abgelehnt werden sollte, sodass es keine Basis gibt, gegen die man urteilen kann, was bedeutet, dass dies weder als offizielles Verhalten noch als Defekt auf unserem Weg zählt. Der sichere clientseitige Ansatz: validieren Sie den Wert selbst und verlassen Sie sich nicht darauf, dass die API es abfängt.
10. Fähigkeit × API-Unterstützungsmatrix
Die Zellen unten geben die Parameter-/Feldschreibung für jede API an. Außer wo als DeepSeeks ausdrückliche Formulierung gekennzeichnet, stammen alle Schlussfolgerungen aus tatsächlichen Aufrufen, die am 2026-08-13 gegen die AIHubMix Produktions-APIs gemacht wurden.
| Fähigkeit | Chat Completions | Responses | Messages |
|---|---|---|---|
| Grundlegende Chat-/Systemanweisungen | ✅ messages |
✅ input + instructions |
✅ messages + oberstes system |
| Streaming | ✅ stream + stream_options |
✅ stream (response.created … response.completed) |
✅ stream (message_start … message_stop) |
| Ausgabedeckel | ✅ max_tokens (400, wenn überschritten, Obergrenze 393216) |
✅ max_output_tokens |
✅ max_tokens |
| Deaktivierung des Denkens | ✅ thinking: {"type": "disabled"} |
✅ reasoning: {"effort": "none"} |
✅ thinking: {"type": "disabled"} |
| Denkstufe | 🟡 reasoning_effort akzeptiert, kein unterscheidbares Signal |
✅ reasoning.effort (nur none bestätigbar) |
🟡 output_config.effort akzeptiert, nichts wird zurückgegeben |
| Denkinhalt zurückgegeben | ✅ reasoning_content Feld |
✅ reasoning Ausgabeelement |
✅ thinking Inhaltsblock |
| Obligatorischer Denkverlauf-Passback | ✅ fehlendes reasoning_content → 400 |
✅ fehlendes reasoning Element → 400 |
✅ fehlender thinking Block → 400 |
| Werkzeugaufruf | ✅ verschachtelte tools + benannter tool_choice |
✅ flache tools |
✅ input_schema + tool_choice: {"type":"any"} |
Erzwingen eines Aufrufs mit required |
❗ 400, während das Denken aktiviert ist; deaktivieren Sie zuerst das Denken | ❗ dasselbe wie links | ✅ {"type": "any"} |
| Parallele Werkzeugaufrufe (nicht deaktivierbar) | ➖ kein solches Feld in der offiziellen Chat-API | ❗ DeepSeek gibt an, dass parallel_tool_calls ignoriert wird und paralleles Aufrufen immer aktiviert ist |
❗ DeepSeek gibt an, dass disable_parallel_tool_use ignoriert wird; Tests geben immer noch zwei tool_use Blöcke zurück |
| Strukturierte Ausgabe | ✅ response_format (json_object) |
✅ text.format (json_schema + strict) |
➖ kein Protokollfeld; tragen Sie das Schema in einem Werkzeug |
| Automatische Trefferzählung für Cache-Hits | ✅ usage.prompt_tokens_details.cached_tokens |
✅ usage.input_tokens_details.cached_tokens |
✅ usage.cache_read_input_tokens |
| logprobs | ❗ dualer Kanal: content + reasoning_content |
✅ top_logprobs nur im letzten Textelement |
➖ |
| Websuche | ➖ kein Suchfeld in der offiziellen Chat-API; das Senden eines solchen ruft ebenfalls nichts ab | ✅ tools: [{"type": "web_search"}] |
✅ web_search_20250305 |
| Stoppsequenzen | ✅ stop |
➖ kein Stoppsequenzfeld im Protokoll (nur max_output_tokens begrenzt die Länge) |
✅ stop_sequences (stop_reason: "stop_sequence") |
Legende: ✅ verifiziert funktionierend · 🟡 akzeptiert, aber nicht bestätigbar effektiv · ❗ benötigt Aufmerksamkeit (siehe die obigen Hinweise) · ➖ kein solches Konzept in dieser API
FAQ
Welche APIs unterstützt deepseek-v4-pro-0813 auf AIHubMix?
Chat Completions (/v1/chat/completions), Responses (/v1/responses) und die Claude-kompatible Messages API (/v1/messages).
Warum gibt eine Mehrturn-Konversation plötzlich 400 zurück?
Die häufigste Ursache ist ein Denkverlauf, der nicht zurückgegeben wurde. Im Denkmodus muss der Denkinhalt der vorherigen Runde wörtlich wiedergegeben werden: reasoning_content in der Assistenten-Nachricht für Chat, das type="reasoning" Ausgabeelement für Responses und der thinking Inhaltsblock für Messages. Mehrturn mit Werkzeugen ist der Bereich, in dem dies am stärksten zuschlägt — viele Frameworks filtern Ausgabeelemente nach type == "message" beim Zusammenstellen der Historie, was das Denkobjekt entfernt.
Kann das Denken ausgeschaltet werden?
Ja. Senden Sie thinking: {"type": "disabled"} bei Chat oder Messages und reasoning: {"effort": "none"} bei Responses. Sobald es ausgeschaltet ist, verschwinden sowohl der Denkinhalt als auch die Denk-Tokens.
Unterscheiden sich die drei reasoning_effort Stufen?low / high / max werden alle akzeptiert (Standard high; medium und xhigh werden zur Kompatibilität auf high abgebildet). In Tests zeigen die Denk-Tokens für die gleiche Frage keinen monotonen Unterschied zwischen den Stufen und nichts wird zurückgegeben, sodass der Unterschied von der Anruferseite nicht bestätigt werden kann. Nur die none Stufe bei Responses (Denken aus) erzeugt einen klar beobachtbaren Unterschied.
Warum gibt tool_choice: "required" 400 zurück?
Dieser Wert wird nicht akzeptiert, während das Denken aktiviert ist (der Fehlertext lautet Der Denkmodus unterstützt diesen tool_choice nicht). Verwenden Sie einen benannten Funktionsaufruf tool_choice ({"type": "function", "function": {"name": "..."}}), um einen bestimmten Aufruf mit aktiviertem Denken zu erzwingen, oder deaktivieren Sie zuerst das Denken und verwenden Sie dann required.
Wie aktivieren Sie das Kontext-Caching?
Sie tun es nicht — es ist automatisch. Stellen Sie den stabilen, unveränderlichen Inhalt (Systemaufforderungen, Wissensschnipsel, Werkzeugdefinitionen) an den Anfang der Anfrage, und die Trefferanzahl wird in der Nutzung gemeldet: prompt_tokens_details.cached_tokens bei Chat, input_tokens_details.cached_tokens bei Responses und cache_read_input_tokens bei Messages.
Für Preise und Echtzeitstatus siehe die Modellseite deepseek-v4-pro-0813; für weitere Modelle besuchen Sie die Modellgalerie.
Verwandte praktische Anleitungen: Kimi K3 praktische Anleitung (neue Parameter und eine Drei-API-Unterstützungsmatrix) und GPT-5.6 Prompt-Caching und Abrechnungsänderungen.




