DeepSeek V4 Pro (0813): Passback del Pensiero e Matrice 3-API

AIHubMix15 min di lettura
DeepSeek V4 Pro (0813): Passback del Pensiero e Matrice 3-API

Questo articolo copre le note di utilizzo e le problematiche per deepseek-v4-pro-0813. Su AIHubMix, il modello è disponibile attraverso le API di Chat Completions, Responses e Messaggi compatibili con Claude. Vedi anche: Documentazione ufficiale delle API di DeepSeek.

Le conclusioni "Verificate" e i campioni di risposte in ciascuna sezione provengono da chiamate effettive effettuate il 2026-08-13 tramite le API di AIHubMix (Chat Completions / Responses / Messages); gli elementi di specifica non contrassegnati come "Verificati" provengono dalla documentazione ufficiale di DeepSeek.

1. Posizionamento del Modello e Specifiche a Colpo d'Occhio

V4 Pro è il livello di alta gamma della generazione V4 di DeepSeek (il leggero deepseek-v4-flash è il suo gemello). La linea di rilascio risale a DeepSeek-V4 Preview del 2026-04-24, e 0813 è l'etichetta della VERSIONE DEL MODELLO che DeepSeek ha assegnato all'attuale build. Oltre alle specifiche grezze, quattro cose lo distinguono:

  • Un modello di frontiera sparsa: 1.6T parametri totali / 49B attivati (un'architettura MoE, o mixture-of-experts — ogni passaggio di inferenza attiva solo un sottoinsieme di reti esperte: i parametri totali determinano la capacità di conoscenza, i parametri attivati determinano il costo computazionale per chiamata). La scheda del modello elenca attenzione ibrida CSA+HCA, mHC e l'ottimizzatore Muon.
  • Pesi aperti sotto MIT: deepseek-ai/DeepSeek-V4-Pro è pubblicato su HuggingFace sotto la licenza MIT (una delle licenze open-source più permissive — l'uso commerciale e la ridistribuzione closed-source sono entrambi consentiti) e può essere auto-ospitato. MIT è raro per un modello di queste dimensioni. Le note di auto-ospitaggio della scheda del modello suggeriscono anche una finestra di contesto di ≥384K token quando si esegue in Think Max (il livello di pensiero più alto) — quella è una guida per il deployment per l'auto-ospitaggio, non una specifica dell'API ospitata.
  • Il supporto multi-protocollo è di prima parte, non traduzione di terze parti: DeepSeek stesso offre un'API di Chat di OpenAI, un endpoint compatibile con Anthropic (/anthropic, che mappa claude-opus* su questo modello), e l'API Responses (DeepSeek descrive il supporto nativo per il formato, con adattamenti per Codex). Offre anche il completamento FIM (fill-in-the-middle) come funzionalità Beta su un endpoint separato, che non fa parte delle tre API di AIHubMix.
  • Un gap di ~120× tra i prezzi di cache-hit e cache-miss: il meccanismo di pricing pubblicato da DeepSeek è cache-hit $0.003625/M contro cache-miss $0.435/M (output $0.87/M), e il caching è automatico senza parametri da impostare. Per i carichi di lavoro che riutilizzano lunghi prefissi (prompt di sistema, documenti lunghi), quel gap domina il conto. Il prezzo al dettaglio effettivo è quello che mostra la pagina del modello.
Elemento Valore
Nome del modello su AIHubMix deepseek-v4-pro-0813
Finestra di contesto 1M token (1.000.000)
Output massimo La formulazione ufficiale è MAX OUTPUT MAXIMUM: 384K (il conteggio esatto dei token e il valore predefinito non sono pubblicati)
Modalità di input Solo testo. La pagina di compatibilità delle Responses afferma esplicitamente che gli input di immagini e file non sono supportati; la pagina dei Messaggi contrassegna esplicitamente i blocchi type="image" come Non Supportati; su Chat Completions il messaggio dell'utente content accetta solo una stringa, senza parti di contenuto multimodale
Modalità di pensiero Ibrida (pensiero / non pensiero), pensiero attivato per impostazione predefinita
Livelli di pensiero reasoning_effort accetta low / high / max, predefinito high; medium e xhigh sono mappati a high per compatibilità
API disponibili Chat Completions, Responses, Messages (compatibili con Claude)
Verificato: superare max_tokens viene rifiutato dalla validazione piuttosto che troncato silenziosamente — inviare max_tokens=9999999 restituisce HTTP 400, e il corpo dell'errore nomina il campo e fornisce il limite 393216.
# max_tokens=9999999 -> HTTP 400
"...max_tokens... 393216"
Le immagini non generano un errore, ma vengono scartate: la formulazione ufficiale per l'API Responses è "Gli input di immagini e file non sono supportati (le parti input_image non causano un errore, ma vengono sostituite con un testo segnaposto)" — una parte input_image non fallisce la richiesta, viene sostituita da testo segnaposto. Su Chat Completions il messaggio dell'utente content accetta solo una stringa, e su Messages i blocchi type="image" sono contrassegnati come Non Supportati. Quando si costruisce un instradamento multimodale, non trattare mai "nessun errore" come prova che il modello abbia effettivamente visto l'immagine.

2. Come Si Disattiva il Pensiero? Tre API, Tre Forme di Campo

V4 Pro pensa per impostazione predefinita: non inviare alcun parametro e la risposta tornerà con contenuto di pensiero. Disattivarlo utilizza una forma di campo diversa su ciascuna delle tre API.

Chat Completions

Utilizza l'oggetto thinking di alto livello.

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": "Qual è 2 + 2?"}],
    extra_body={"thinking": {"type": "disabled"}},
)

# Pensiero attivato  (predefinito): message.reasoning_content presente, reasoning_tokens = 43
# Pensiero disattivato (disabilitato): reasoning_content assente, reasoning_tokens assenti
Verificato: con thinking.type="disabled", sia message.reasoning_content che usage.completion_tokens_details.reasoning_tokens scompaiono insieme, il che conferma che l'interruttore ha avuto effetto.

Responses

Non c'è un interruttore separato su Responses; disattivare il pensiero significa impostare il livello su none.

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Qual è 2 + 2?",
    reasoning={"effort": "none"},
)

# effort="none": usage.output_tokens_details.reasoning_tokens = 0
#                output[0] è l'elemento del messaggio direttamente (nessun elemento di ragionamento)
# effort non impostato : output inizia sempre con un elemento di ragionamento
Verificato: reasoning.effort="none" differisce osservabilmente dal livello predefinito (i token di pensiero scendono a zero, l'elemento di reasoning scompare), il che conferma che ha avuto effetto.

Messages

Stesso nome e stessa forma di Chat Completions: l'oggetto thinking di alto livello.

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": "Qual è 2 + 2?"}],
    extra_body={"thinking": {"type": "disabled"}},
)

# Pensiero attivato  (predefinito): content = [blocco di pensiero, blocco di testo]
# Pensiero disattivato (disabilitato): content = [blocco di testo]
Verificato: una volta disabilitato, il blocco thinking scompare completamente e rimane solo il blocco text.
Sui livelli di pensiero: low e max hanno entrambi restituito 200 su Chat Completions nei test (high è il predefinito e si applica quando il campo è omesso), ma i conteggi dei token di pensiero non mostrano alcuna differenza monotonica tra i livelli per la stessa domanda (domanda facile: low=43 / max=27; domanda difficile: low=114 / max=92), e nulla viene restituito nella risposta — i livelli sono accettati, ma non è osservabile alcun segnale distintivo dalla risposta. Su Responses, solo il livello none (pensiero disattivato) può essere confermato dal lato della risposta.

3. Perché Una Conversazione a Più Turni Restituisce Improvvisamente 400? La Cronologia di Pensiero Deve Essere Restituita Verbatim

Questo è il singolo tripwire più comune con questo modello: in modalità di pensiero, una conversazione a più turni deve restituire il contenuto di pensiero del turno precedente verbatim, altrimenti la richiesta viene rifiutata. Non degradato, non di qualità inferiore — un duro HTTP 400.

Le tre API portano lo stesso contenuto di pensiero sotto nomi di campo diversi:

API Forma di passback Corpo dell'errore quando mancante
Chat Completions Il campo reasoning_content nel messaggio dell'assistente Il `reasoning_content` in modalità di pensiero deve essere restituito all'API.
Responses L'elemento di output con type="reasoning" nell'array input Il `reasoning_text` in modalità di pensiero deve essere restituito all'API.
Messages Il blocco thinking all'interno dei blocchi di contenuto dell'assistente Il `content[].thinking` in modalità di pensiero deve essere restituito all'API.
Verificato (condizioni di attivazione): questa validazione si attiva costantemente su richieste a più turni che portano tools (il modello emette una chiamata a uno strumento, poi il risultato dello strumento viene restituito). Su richieste a più turni semplici senza strumenti, dove il modello risponde direttamente, la validazione non si è attivata in questo round di test e la richiesta ha restituito 200. In altre parole, l'orchestrazione degli strumenti (carichi di lavoro di agenti / chiamate a funzioni) è dove è più probabile che tu colpisca, quindi tratta il contenuto di pensiero come parte dello stato della conversazione che persisti e riproduci.

Chat Completions

# Multi-turno: restituire il messaggio precedente dell'assistente verbatim, incluso reasoning_content
messages = [
    {"role": "user", "content": "Qual è 1 + 1? Ricorda il risultato."},
    {
        "role": "assistant",
        "content": "2",
        "reasoning_content": "<reasoning_content dalla risposta precedente>",
    },
    {"role": "user", "content": "Aggiungi 1 al risultato."},
]

# Scartare reasoning_content -> HTTP 400 invalid_request_error
Verificato: un messaggio storico dell'assistente mancante di reasoning_content restituisce 400; aggiungerlo di nuovo fa sì che la richiesta identica restituisca 200 e continui correttamente.

Responses

# Multi-turno: input = input precedente + response.output (elemento di ragionamento incluso) + nuovo messaggio
input = previous_input + response.output + [
    {"role": "user", "content": "Aggiungi 1 al risultato."}
]

# Filtrare l'elemento type="reasoning" -> HTTP 400
Verificato: inserire response.output di nuovo così com'è è tutto ciò che serve. Filtrare gli elementi di output per type == "message" mentre si assembla la cronologia elimina l'elemento reasoning e attiva il 400 — questo è il modo più comune per essere colpiti.

Messages

# Multi-turno: restituire response.content verbatim come messaggio dell'assistente
messages = [
    {"role": "user", "content": "Qual è il tempo a Parigi?"},
    {"role": "assistant", "content": response.content},   # blocchi di pensiero + utilizzo dello strumento
    {"role": "user", "content": [tool_result_block]},
]

# Rimuovere il blocco di pensiero -> HTTP 400
Verificato: rimuovere il blocco thinking dall'array di contenuto restituisce 400 (con error.type impostato su invalid_request_error).

4. Chiamata agli Strumenti

Ogni API dichiara gli strumenti nella propria forma di protocollo; le forme non sono intercambiabili.

Chat Completions

Forma annidata (un oggetto function che avvolge name / parameters). Una tool_choice di funzione nominata forza la chiamata.

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "Qual è il tempo a Parigi?"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Ottieni il tempo per una città",
            "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
        },
    }],
    tool_choice={"type": "function", "function": {"name": "get_weather"}},
)

# Osservato: finish_reason "tool_calls", tool_calls[0].function.arguments = {"city": "Parigi"}
Verificato: tool_choice: "required" non può essere utilizzato mentre il pensiero è attivato — restituisce 400 La modalità di pensiero non supporta questo tool_choice; disabilitare il pensiero (thinking.type="disabled") fa sì che la richiesta identica restituisca 200. Quando hai bisogno di semantica "deve chiamare uno strumento", usa una tool_choice di funzione nominata invece (come sopra, che funziona con il pensiero attivato), oppure disattiva prima il pensiero e poi usa required.

Responses

Forma piatta (type / name / parameters allo stesso livello).

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Qual è il tempo a Parigi?",
    tools=[{
        "type": "function",
        "name": "get_weather",
        "description": "Ottieni il tempo per una città",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
)

# Elementi di output osservati: ["reasoning", "function_call"]; arguments = {"city": "Parigi"}
Verificato: copiare la forma annidata di Chat Completions (function: {...}) in Responses restituisce 400 — usa la forma piatta. tool_choice: "required" è soggetto alla stessa restrizione della modalità di pensiero come su Chat.

Messages

Forma nativa di Anthropic (input_schema), con tool_choice: {"type": "any"} per forzare una chiamata.

response = client.messages.create(
    model="deepseek-v4-pro-0813",
    max_tokens=1024,
    tools=[{
        "name": "get_weather",
        "description": "Ottieni il tempo per una città",
        "input_schema": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]},
    }],
    tool_choice={"type": "any"},
    messages=[{"role": "user", "content": "Qual è il tempo a Parigi?"}],
)

# Osservato: il contenuto contiene un blocco di utilizzo dello strumento, nome = get_weather, input = {"city": "Parigi"}
La chiamata parallela agli strumenti non può essere disattivata, per design di DeepSeek — la pagina di compatibilità ufficiale di Anthropic afferma, nella riga tool_choice, che disable_parallel_tool_use è ignorato, e la pagina delle Responses afferma anche parallel_tool_calls | Ignored (la chiamata parallela agli strumenti è sempre abilitata). I test confermano: chiedere informazioni su due città contemporaneamente con disable_parallel_tool_use: true restituisce comunque due blocchi tool_use. Se hai bisogno di esecuzione seriale, prendi la prima chiamata o mettile in coda tu stesso sul lato client.
Conteggio degli strumenti e costo del contesto: inviare 200 definizioni di funzione in una singola richiesta ha comunque restituito 200 con una risposta normale e non ha attivato alcuna validazione del conteggio (osservato su questo percorso; conteggi più elevati non sono stati testati). Ma prompt_tokens per quella richiesta ha raggiunto 6.105 — le definizioni degli strumenti vanno nel contesto per intero e vengono addebitate. Quando hai molti strumenti, riduci il set di strumenti per scenario piuttosto che dichiarare tutto incondizionatamente.

5. Output Strutturato

Chat Completions

response_format supporta la modalità JSON.

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "Restituisci {\"a\": 1} come JSON."}],
    response_format={"type": "json_object"},
)

# Contenuto della risposta osservato: {"a":1}
Verificato: l'output è un JSON valido.

Responses

Dichiara uno Schema JSON tramite text.format, con modalità strict supportata.

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Restituisci il numero 1 sotto la chiave a.",
    text={
        "format": {
            "type": "json_schema",
            "name": "extract",
            "strict": True,
            "schema": {"type": "object", "properties": {"a": {"type": "integer"}}, "required": ["a"]},
        }
    },
)

# Testo di output osservato: {"a":1}
Verificato: l'output è conforme rigorosamente allo schema fornito.

Messages

Il protocollo Messages (Anthropic) non ha equivalente per response_format / text.format. La soluzione abituale è portare lo schema in uno strumento — dichiarare uno strumento il cui input_schema è il tuo schema target, impostare tool_choice: {"type": "any"}, e leggere il risultato strutturato dall'input del blocco tool_use. Questo round di test non ha verificato specificamente quel modello; quando hai bisogno di garanzie di schema rigorose, preferisci Chat Completions o Responses.

6. Come Si Abilita il Caching del Contesto? Non Si Abilita, È Automatico

Il caching del contesto (i prefissi identici vengono riutilizzati e la porzione memorizzata viene addebitata a una tariffa inferiore) è attivato per impostazione predefinita e non richiede parametri. Una seconda richiesta con lo stesso lungo prefisso riporta il colpo in usage, sotto un nome di campo che varia a seconda dell'API. Per dettagli sul caching e prezzi attuali, vedere la pagina del modello; per la strategia di caching tra modelli e tecniche di tasso di colpi, vedere pratiche di caching dei prompt.

Chat Completions

# utilizzo della seconda chiamata con un lungo prefisso identico
"prompt_tokens_details": {"cached_tokens": 640}   # prima chiamata: 0
Verificato: due chiamate consecutive con lo stesso lungo prefisso sullo stesso canale hanno spostato cached_tokens da 0 a 640.

Responses

# utilizzo della seconda chiamata con istruzioni lunghe identiche
"input_tokens_details": {"cached_tokens": 896}    # prima chiamata: 0

Messages

# utilizzo di una chiamata il cui lungo prefisso di sistema era già stato riscaldato
"cache_read_input_tokens": 896
Verificato: il prefisso sopra è stato riscaldato da una richiesta di Responses con contenuto identico, e la prima chiamata a Messages ha colpito 896 immediatamente — coerente con il caching che si basa sul prefisso di contenuto e condiviso tra superfici di protocollo.

7. logprobs: Chat Restituisce Due Canali

logprobs (probabilità logaritmiche — il dettaglio di fiducia del modello per ogni token candidato) torna in forme diverse sulle due API, e il codice di parsing deve gestirle separatamente.

Chat Completions

completion = client.chat.completions.create(
    model="deepseek-v4-pro-0813",
    messages=[{"role": "user", "content": "Dì ciao."}],
    logprobs=True,
    top_logprobs=2,
)

# Osservato: choices[0].logprobs contiene DUE array
#   logprobs.content[]            -> token della risposta finale
#   logprobs.reasoning_content[]  -> token del testo di pensiero
Verificato: Chat restituisce probabilità logaritmiche sia per content che per reasoning_content. Il codice che legge solo logprobs.content, secondo la forma di risposta standard di OpenAI, non genererà errori ma perderà silenziosamente il canale di pensiero; se il tuo codice presume un singolo array sotto logprobs, aggiungi prima un controllo della forma.

Responses

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Dì ciao.",
    top_logprobs=3,
)

# Osservato: logprobs solo sull'elemento finale del messaggio
#   output[-1].content[0].logprobs[] con dettagli di logprob + top_logprobs
Verificato: Responses allega logprobs solo all'elemento di testo finale — nessuna delle forme a doppio canale viste su Chat.

Messages

Il protocollo Messages (Anthropic) non ha campo equivalente. Per dettagli sulla probabilità a livello di token, usa Chat Completions o Responses.

8. Quali API Possono Cercare nel Web?

La ricerca web qui è uno strumento lato server (il recupero avviene sul server; il client non emette mai la richiesta stessa), e viene realmente eseguita sia sulle API Responses che Messages nei test.

Responses

response = client.responses.create(
    model="deepseek-v4-pro-0813",
    input="Qual è l'ultima versione stabile di Python?",
    tools=[{"type": "web_search"}],
)

# Sequenza di elementi di output osservata:
# ["reasoning", "web_search_call", "reasoning", "message"]
Verificato: un elemento web_search_call appare nella sequenza di output, il che significa che il server ha effettivamente eseguito un recupero.

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": "Qual è l'ultima versione stabile di Python?"}],
)

# Sequenza di blocchi di contenuto osservata:
# ["thinking", "server_tool_use", "web_search_tool_result", "thinking", "text"]
# usage.server_tool_use.web_search_requests = 1
Verificato: usage.server_tool_use.web_search_requests conta 1 — la richiesta di recupero è realmente avvenuta ed è stata misurata.

Chat Completions

La ricerca web non può essere attivata su Chat. La documentazione ufficiale dell'API Chat di DeepSeek non contiene alcun campo di ricerca da nessuna parte nello schema della richiesta (quella è un'assenza stabilita esaminando l'elenco dei campi uno per uno; DeepSeek non ha fatto alcuna dichiarazione esplicita che nega il supporto). L'API con una dichiarazione ufficiale di supporto esplicito per la ricerca lato server è Responses (web_search), e la pagina di compatibilità ufficiale di Messages elenca anche i blocchi di contenuto correlati alla ricerca.

# Tre gruppi di controllo, stessa domanda che richiede informazioni in tempo reale, tutti HTTP 200:
# A nessun campo di ricerca       -> "impossibile recuperare", annotazioni = null
# B opzioni_web_search    -> "impossibile recuperare", annotazioni = null, utilizzo identico a A
# C enable_search         -> "impossibile recuperare", annotazioni = null, utilizzo identico a A
Verificato: inviare web_search_options o enable_search non genera errori, ma non recupera nulla nemmeno — la risposta non porta annotations (l'elenco delle citazioni allegato a una risposta quando viene eseguita la ricerca web), e l'utilizzo corrisponde al gruppo di controllo campo per campo. Per l'accesso al web, usa invece le API Responses o Messages.

9. Note di Utilizzo: Design di DeepSeek vs Deviations sul Nostro Percorso

Tutto ciò che segue restituisce HTTP 200 mentre si comporta in modo controintuitivo. Le cause differiscono, e così fa ciò che dovresti fare al riguardo, quindi sono elencate separatamente: il primo gruppo è come DeepSeek ha progettato il modello, e cambiare fornitore non cambierà questo; il secondo gruppo è il comportamento attuale sul percorso AIHubMix, su cui stiamo lavorando.

9.1 Per Design di DeepSeek

Comportamento Formulazione ufficiale Cosa fare
Responses non mantiene lo stato della sessione o i metadati La pagina di compatibilità ufficiale delle Responses afferma, riga per riga, store | Non supportato. La risposta porta sempre store: false, metadata | Non supportato, e safety_identifier | Non supportato (di quei quattro campi, solo user è Supportato). I test confermano: la richiesta restituisce 200, ma metadata è null, safety_identifier è assente, e store è sempre false Mantieni i dati di correlazione della richiesta sul client; non fare affidamento sulla retention lato server
I parametri di campionamento non hanno effetto in modalità di pensiero DeepSeek afferma esplicitamente che temperature e top_p sono silenziosamente inattivi in modalità di pensiero. Nei test entrambi restituiscono 200 senza nulla di restituito e senza cambiamenti nella forma della risposta Non fare affidamento sui parametri di campionamento per la stabilità dell'output in modalità di pensiero; usa output strutturati quando hai bisogno di determinismo
La continuazione del prefisso / FIM è disponibile solo sull'endpoint beta ufficiale La descrizione ufficiale di prefix è "(Beta) … Devi impostare base_url="https://api.deepseek.com/beta" per utilizzare questa funzionalità", e il completamento FIM è anch'esso una funzionalità Beta. Verificato su produzione AIHubMix: inviare prefix: true contro l'endpoint standard restituisce 200 ma il prefisso viene silenziosamente scartato, coerente con la formulazione ufficiale Per un formato di output controllato, usa output strutturati (sezione 5) o stop truncation
La chiamata parallela agli strumenti non può essere disabilitata Vedi sezione 4: DeepSeek afferma sia sulle pagine delle Responses che di Anthropic che l'interruttore è ignorato e la chiamata parallela è sempre attivata Metti in coda le chiamate sul client quando hai bisogno di esecuzione seriale

9.2 Comportamento Attuale sul Percorso AIHubMix

Comportamento Cosa mostrano i test Cosa fare
Tipo non standard sugli oggetti di errore delle Responses Il error.type sulle risposte 4xx è Aihubmix_api_error, mentre la stessa classe di errore su Messages restituisce il canonico invalid_request_error Dirigi in base al codice di stato HTTP, non sulla stringa error.type
I token di pensiero conteggiati come 0 su Messages La risposta porta effettivamente un blocco thinking, eppure usage.output_tokens_details.thinking_tokens è sempre 0, il che contraddice il contenuto di pensiero effettivamente prodotto; secondo il contratto di Anthropic contro cui ci integriamo, quel campo è richiesto e dovrebbe essere ≤ output_tokens Per la contabilizzazione del costo del pensiero, usa completion_tokens_details.reasoning_tokens su Chat o output_tokens_details.reasoning_tokens su Responses
Messages ripete model come deepseek-v4-pro La richiesta invia deepseek-v4-pro-0813 e la risposta ripete deepseek-v4-pro. La causa è il nome: l'unico nome ufficiale del modello API di DeepSeek è deepseek-v4-pro, e 0813 è la sua etichetta di versione Non fare dell'elemento model della risposta l'unica base per controlli di instradamento del modello o attribuzione dell'uso

9.3 Non Definito da DeepSeek, Quindi Nessun Giudizio Né da Una Parte Né dall'Altra

Inviare un valore al di fuori dell'enum per reasoning_effort (ad es. bogus_xyz) restituisce 200 con una risposta normale, nessun errore e nessun effetto osservabile. Il fatto è abbastanza chiaro — questo percorso attualmente non valida l'enum reasoning_effort. Ciò che non è chiaro è se dovrebbe: DeepSeek pubblica l'enum legale ma non afferma mai se un livello illegale dovrebbe essere rifiutato, quindi non c'è una base per giudicare, il che significa che questo non conta né come comportamento ufficiale né come difetto sul nostro percorso. L'approccio sicuro lato client: valida il livello tu stesso e non contare sull'API per catturarlo.

10. Matrice di Capacità × Supporto API

Le celle qui sotto forniscono la scrittura dei parametri / campi per ciascuna API. Tranne dove contrassegnato come formulazione esplicita di DeepSeek, ogni conclusione proviene da chiamate effettive effettuate il 2026-08-13 contro le API di produzione AIHubMix.

Capacità Chat Completions Responses Messages
Istruzioni di chat / sistema di base messages input + instructions messages + system di alto livello
Streaming stream + stream_options stream (response.createdresponse.completed) stream (message_startmessage_stop)
Soglia di output max_tokens (400 quando superato, soglia 393216) max_output_tokens max_tokens
Disabilitare il pensiero thinking: {"type": "disabled"} reasoning: {"effort": "none"} thinking: {"type": "disabled"}
Livello di pensiero 🟡 reasoning_effort accettato, nessun segnale distintivo reasoning.effort (solo none confermabile) 🟡 output_config.effort accettato, nulla restituito
Contenuto di pensiero restituito reasoning_content field reasoning output item thinking content block
Passback obbligatorio della cronologia di pensiero ✅ mancante reasoning_content → 400 ✅ mancante reasoning item → 400 ✅ mancante thinking block → 400
Chiamata agli strumenti ✅ annidato tools + nominato tool_choice ✅ piatta tools input_schema + tool_choice: {"type":"any"}
Forzare una chiamata con required ❗ 400 mentre il pensiero è attivato; disabilitare prima il pensiero ❗ stesso di sinistra {"type": "any"}
Chiamata parallela agli strumenti (non disabilitabile) ➖ nessun campo del genere nell'API Chat ufficiale ❗ DeepSeek afferma che parallel_tool_calls è ignorato e la chiamata parallela è sempre attivata ❗ DeepSeek afferma che disable_parallel_tool_use è ignorato; i test restituiscono comunque due blocchi tool_use
Output strutturato response_format (json_object) text.format (json_schema + strict) ➖ nessun campo di protocollo; porta lo schema in uno strumento
Misurazione automatica dei colpi di cache usage.prompt_tokens_details.cached_tokens usage.input_tokens_details.cached_tokens usage.cache_read_input_tokens
logprobs ❗ canale doppio: content + reasoning_content top_logprobs solo sull'elemento di testo finale
Ricerca web ➖ nessun campo di ricerca nell'API Chat ufficiale; inviare uno non recupera nemmeno tools: [{"type": "web_search"}] web_search_20250305
Sequenze di arresto stop ➖ nessun campo di sequenza di arresto nel protocollo (solo max_output_tokens limita la lunghezza) stop_sequences (stop_reason: "stop_sequence")

Legenda: ✅ verificato funzionante · 🟡 accettato ma non può essere confermato efficace · ❗ necessita attenzione (vedi le note sopra) · ➖ nessun concetto del genere su questa API

FAQ

Quali API supporta deepseek-v4-pro-0813 su AIHubMix?
Chat Completions (/v1/chat/completions), Responses (/v1/responses), e l'API Messages compatibile con Claude (/v1/messages).

Perché una conversazione a più turni restituisce improvvisamente 400?
La causa più comune è la cronologia di pensiero che non è stata restituita. In modalità di pensiero, il contenuto di pensiero del turno precedente deve essere riprodotto verbatim: reasoning_content nel messaggio dell'assistente per Chat, l'elemento di output type="reasoning" per Responses, e il blocco di contenuto thinking per Messages. Multi-turno con strumenti è dove questo colpisce di più — molti framework filtrano gli elementi di output per type == "message" mentre assemblano la cronologia, il che elimina l'elemento di ragionamento.

È possibile disattivare il pensiero?
Sì. Invia thinking: {"type": "disabled"} su Chat o Messages, e reasoning: {"effort": "none"} su Responses. Una volta disattivato, sia il contenuto di pensiero che i token di pensiero scompaiono.

I tre livelli di reasoning_effort differiscono?
low / high / max sono tutti accettati (predefinito high; medium e xhigh sono mappati a high per compatibilità). Nei test, i conteggi dei token di pensiero per la stessa domanda non mostrano alcuna differenza monotonica tra i livelli e nulla viene restituito, quindi la differenza non può essere confermata dal lato del chiamante. Solo il livello none su Responses (pensiero disattivato) produce una chiara differenza osservabile.

Perché tool_choice: "required" restituisce 400?
Quel valore non è accettato mentre il pensiero è attivato (il corpo dell'errore legge La modalità di pensiero non supporta questo tool_choice). Usa una tool_choice di funzione nominata ({"type": "function", "function": {"name": "..."}}) per forzare una chiamata specifica con il pensiero attivato, oppure disabilita prima il pensiero e poi usa required.

Come si abilita il caching del contesto?
Non si abilita — è automatico. Metti il contenuto stabile e immutabile (prompt di sistema, frammenti di conoscenza, definizioni di strumenti) all'inizio della richiesta, e il conteggio dei colpi viene riportato in usage: prompt_tokens_details.cached_tokens su Chat, input_tokens_details.cached_tokens su Responses, e cache_read_input_tokens su Messages.


Per prezzi e stato in tempo reale, vedere la pagina del modello deepseek-v4-pro-0813; per altri modelli, visita la galleria dei modelli.

Guide pratiche correlate: Guida pratica a Kimi K3 (nuovi parametri e una matrice di supporto a tre API) e caching dei prompt di GPT-5.6 e modifiche alla fatturazione.