La domanda operativa: l’integrazione conserva lo stato corretto?
DeepSeek V3.2 ha introdotto il supporto alle chiamate agli strumenti in modalità di ragionamento, secondo l’annuncio del fornitore e la relativa guida agli strumenti. Questa capacità pone una domanda ingegneristica precisa: quando l’assistente richiede uno strumento, l’applicazione lo esegue e il risultato torna al modello, la richiesta successiva conserva lo stato richiesto dall’API? Non è possibile rispondere basandosi sul nome del modello o su una singola dimostrazione. Occorre verificare il contratto dei messaggi e le risposte che l’applicazione elabora effettivamente.
L’analisi ha un obiettivo circoscritto: verificare un’integrazione esistente o stabilire quali prove manchino prima di mantenerla o pianificare un cambiamento. Non intende misurare l’intelligenza generale del modello, confrontare punteggi né dedurre come ragioni internamente. Una chiamata a uno strumento che sembra corretta in un test manuale non dimostra che il servizio gestisca bene i nuovi tentativi, lo streaming, i risultati inattesi o il turno successivo dell’utente.
La documentazione DeepSeek indica che, quando si usano strumenti in modalità di ragionamento, le richieste successive dello stesso turno devono reinviare il campo `reasoning_content` insieme allo stato pertinente. La documentazione segnala inoltre che, nelle circostanze descritte, la sua omissione può causare un errore 400. La conseguenza pratica è importante: un livello intermedio che ricostruisce la cronologia, filtra i campi o converte i formati può interrompere la sequenza anche se la prima richiesta funziona.
La disponibilità di un identificatore di modello è una verifica distinta dalla correttezza del flusso. DeepSeek offre un endpoint per consultare i modelli disponibili; il risultato va controllato nell’ambiente e alla data del test, anziché dedurlo da un esempio statico o dal nome di una pagina. Allo stesso modo, un riferimento a V4 nel centro di trasparenza non dimostra da solo che un determinato identificatore sia abilitato per un account, né che un’integrazione possa passare a quel modello senza modifiche.
Ricostruire il ciclo senza perdere messaggi
Un test affidabile inizia rappresentando il flusso come una sequenza esplicita. L’applicazione invia messaggi al modello; il modello può restituire una richiesta di utilizzo di uno strumento; l’applicazione esegue l’operazione autorizzata e aggiunge il risultato come messaggio dello strumento; infine invia la continuazione al modello. Nei flussi con modalità di ragionamento e strumenti, la guida DeepSeek aggiunge il requisito di conservare `reasoning_content` nelle richieste successive pertinenti. Il dettaglio preciso dipende dal formato API e dalla struttura della risposta, quindi è opportuno consultare la documentazione dell’endpoint usato dall’integrazione.
Non ridurre la cronologia a una frase come «il modello ha chiesto di cercare». Nei registri di test conserva la sequenza dei ruoli, gli identificatori delle chiamate, se presenti, gli argomenti generati, il risultato associato a ciascuna chiamata e i campi reinviati dall’integrazione. Se il prodotto trasforma la risposta prima di salvarla, registra anche la trasformazione o una traccia comparabile. In questo modo si può distinguere un errore del modello da un messaggio eliminato dal middleware, una chiamata associata in modo errato o un risultato mai arrivato alla richiesta successiva.
Non confondere l’API Chat Completions con gli altri formati documentati da DeepSeek. La guida agli strumenti distingue il modo in cui le chiamate vengono inserite in Chat Completions, Anthropic API e Responses API. Un’integrazione che cambia formato non deve supporre che basti rinominare i campi: deve convalidare l’ordine, la rappresentazione delle chiamate e il modo in cui ciascun formato esprime la continuazione.
Il requisito di conservazione non significa nemmeno che si debba reinviare all’infinito tutto ciò che è stato generato in ogni turno. La documentazione sulla modalità di ragionamento distingue le richieste con strumenti dalle conversazioni senza strumenti. Perciò il protocollo deve testare separatamente la continuazione dello stesso turno e un nuovo turno dell’utente. Non eliminare né conservare contenuti per intuizione: segui il formato documentato e verificalo con richieste controllate.
Sequenza minima da poter ricostruire
- 01Salva la richiesta iniziale inviata a DeepSeek, compresi l’identificatore del modello configurato e la modalità selezionata.
- 02Registra la risposta dell’assistente distinguendo il testo visibile dalle eventuali richieste di strumenti e dai relativi argomenti.
- 03Convalida gli argomenti ed esegui uno strumento simulato o autorizzato; associa il risultato alla chiamata corrispondente.
- 04Crea la richiesta successiva conservando i messaggi e i campi richiesti dal formato e dalla modalità documentati.
- 05Salva la risposta di continuazione e verifica se l’agente conclude, richiede un altro strumento o restituisce un errore.
- 06Ripeti con un nuovo turno dell’utente per verificare che la cronologia venga reimpostata o prosegua secondo la politica esplicita del prodotto.
Cosa verificare in base all’interfaccia utilizzata
Questa tabella orienta la revisione, ma non sostituisce la specifica aggiornata dell’endpoint né un test autenticato.
| Interfaccia o situazione | Verifica | Evidenza attesa |
|---|---|---|
| Chat Completions con strumenti | Esamina la struttura dei messaggi e lo stato reinviato nella continuazione. | La richiesta successiva riproduce la sequenza necessaria e non scarta i campi richiesti. |
| Anthropic API o Responses API | Usa la rappresentazione della chiamata e della continuazione prevista da quella specifica interfaccia. | La conversione tra formati non altera l’ordine né l’associazione tra chiamata e risultato. |
| Conversazione senza strumenti | Testala come caso distinto dal flusso con strumenti. | L’applicazione segue le regole documentate per questo caso, senza copiare meccanicamente lo stato di un altro flusso. |
| Disponibilità del modello | Interroga l’endpoint che elenca i modelli dall’ambiente in cui verrà eseguita l’integrazione. | L’identificatore osservato e la risposta sono registrati con data e ambiente. |
Un protocollo riproducibile con strumenti simulati
Prima di testare strumenti reali, crea versioni simulate che restituiscano risultati noti. Uno strumento simulato riduce il rischio di modificare dati, chiamare servizi esterni o confondere una risposta variabile con una regressione. Definisci in anticipo i criteri di superamento: per esempio, che l’applicazione esegua una sola volta una chiamata valida, associ il risultato a quella chiamata e invii la continuazione con i campi richiesti. La politica precisa dipende dal prodotto e deve essere messa per iscritto prima del test.
Comincia con un solo strumento e una richiesta semplice. Controlla che l’applicazione rilevi la chiamata, convalidi il nome e gli argomenti, esegua l’operazione simulata e aggiunga la risposta corrispondente. Verifica poi che la richiesta successiva conservi lo stato richiesto e che il modello risponda tenendo conto del risultato. Non basta ottenere una risposta finale plausibile: confronta la sequenza acquisita con quella che l’applicazione avrebbe dovuto inviare.
Successivamente, concatena due strumenti: il primo restituisce un dato necessario al secondo. Questo caso aiuta a scoprire se l’applicazione termina il turno troppo presto, reinvia un risultato precedente o interpreta come nuova una chiamata già eseguita. Non dare per scontato che il modello scelga sempre l’ordine desiderato. Il criterio è che l’orchestratore elabori in modo sicuro le richieste ricevute e mantenga un’associazione univoca fra ciascuna chiamata e il relativo risultato.
Testa anche la modalità streaming. La documentazione DeepSeek include esempi di streaming nella modalità di ragionamento, ma un’integrazione deve verificare il proprio lettore di eventi: una risposta parziale non equivale necessariamente a una chiamata completa e pronta per essere eseguita. Accumula e analizza l’output secondo il formato documentato; non eseguire uno strumento prima di aver ricevuto e convalidato la struttura necessaria. Registra i frammenti e l’evento finale pertinente, senza supporre che il testo mostrato nell’interfaccia utente rifletta da solo lo stato del protocollo.
Gli argomenti malformati vanno trattati come input non attendibile, anche quando sono stati generati dal modello. Prova campi mancanti, tipi inattesi, valori fuori intervallo e nomi di strumenti sconosciuti. L’applicazione deve rifiutare o gestire in modo controllato i dati che non rispettano il proprio schema. L’output del modello non concede autorizzazioni: permessi, limiti e convalide competono all’applicazione.
Includi risultati vuoti, errori simulati e risposte contraddittorie. L’agente non dovrebbe inventare che un’operazione sia riuscita se lo strumento ha segnalato un errore, né ripetere un’azione con effetti senza una politica di idempotenza. Nei casi contraddittori, stabilisci quale fonte prevale e se occorre chiedere chiarimenti o l’intervento di una persona. Sono decisioni di prodotto, non proprietà garantite dalla presenza di `reasoning_content`.
Matrice minima di casi di regressione
Per ogni esecuzione, annota il risultato osservato e il criterio di superamento definito dal team.
| Caso | Rischio esaminato | Verifica |
|---|---|---|
| Un solo strumento, risultato valido | Perdita di stato alla prima continuazione | La risposta dello strumento viene aggiunta e il modello riceve lo stato richiesto. |
| Due strumenti concatenati | Ordine errato o chiamata duplicata | Ogni risultato viene associato una sola volta alla chiamata corrispondente. |
| Streaming | Esecuzione basata su un output parziale | Lo strumento viene eseguito solo dopo aver convalidato la chiamata completa. |
| Argomenti non validi | Uso di parametri non sicuri | L’applicazione rifiuta o gestisce l’input senza eseguire un’operazione non autorizzata. |
| Risultato vuoto o errore | Successo inventato o nuovo tentativo incontrollato | Agente e applicazione rappresentano l’errore secondo la politica definita. |
| Nuovo turno dell’utente | Conservazione o cancellazione errata della cronologia | La sequenza rispetta la politica esplicita di continuità e il formato API. |
Gli errori che l’applicazione deve saper rilevare
Il primo errore consiste nell’omettere lo stato richiesto quando si costruisce una continuazione. La guida alla modalità di ragionamento documenta un errore 400 nel caso degli strumenti quando `reasoning_content` viene omesso nelle condizioni specificate. Registra il codice di risposta e una versione ripulita della richiesta in uscita; non usare il messaggio di errore come pretesto per riprovare senza modifiche. La correzione deve derivare dalla struttura effettivamente inviata dal client e dalla specifica aggiornata.
Il secondo errore è eseguire due volte la stessa operazione. Può verificarsi se l’applicazione riprova dopo un’interruzione di rete senza sapere se lo strumento abbia già prodotto effetti, oppure se interpreta frammenti dello streaming come richieste separate. La prevenzione dipende dal tipo di strumento: quando opportuno, usa identificatori di operazione, deduplicazione o conferma umana. Uno strumento di sola lettura e un trasferimento di denaro non richiedono necessariamente la stessa politica.
Occorre anche individuare i cicli: il modello richiede di nuovo un’azione equivalente, lo strumento restituisce un risultato che non viene aggiunto oppure l’orchestratore conserva uno stato obsoleto. Definisci limiti di iterazioni e di tempo, prevedendo un’uscita controllata quando vengono raggiunti. Un limite non garantisce una risposta corretta, ma riduce la possibilità che un problema d’integrazione provochi un consumo indefinito di risorse o la ripetizione di effetti.
Una quarta categoria di errore si verifica quando gli argomenti e i risultati vengono convalidati solo nell’interfaccia del modello. Il client deve controllare lo schema, il nome dello strumento, i permessi dell’utente e l’ambito dell’operazione. Deve inoltre gestire risultati parziali, vuoti o incompatibili con il formato previsto. Il modello può aiutare a interpretare le informazioni, ma la responsabilità di decidere quali azioni eseguire resta all’applicazione.
Infine, distingui un errore API da un errore di business. Un 400 relativo alla struttura della richiesta richiede di esaminare il contratto inviato; un errore dello strumento può dipendere da permessi, connettività o dati. In entrambi i casi, registra la categoria e il punto della sequenza in cui si è verificato. Evita di presentare come certa una causa che i registri non permettono di distinguere.
Cosa registrare e cosa limitare
Per consentire a un’altra persona di riprodurre un errore, registra la data, l’ambiente, l’identificatore del modello richiesto, la modalità, il formato API, le opzioni pertinenti e la sequenza dei messaggi. Aggiungi le richieste e le risposte degli strumenti, gli errori, la durata e i token quando la risposta API li fornisce. Annota anche se è stato usato lo streaming e come il client ha ricomposto la risposta. Un registro che non indica il punto esatto in cui un campo è stato perso o trasformato può nascondere proprio il difetto che si sta cercando.
Riduci al minimo i dati personali e i segreti. Oscura credenziali, identificatori sensibili e contenuti non necessari per diagnosticare il flusso; quando possibile, usa strumenti simulati per riprodurre i casi. Definisci controlli di accesso e tempi di conservazione coerenti con la politica del team. Non salvare indiscriminatamente l’intera cronologia di produzione solo perché potrebbe agevolare una sessione di debug.
Tratta `reasoning_content` con particolare cautela. La documentazione lo identifica come un campo pertinente allo scambio con l’API in alcuni flussi, ma questo non lo rende una prova affidabile del fatto che il modello abbia seguito una catena di ragionamento completa o vera. Il contenuto può essere sensibile e non dovrebbe essere mostrato, conservato o usato per valutare una spiegazione come se fosse una verifica del processo interno. Per controllare il comportamento, usa input controllati, chiamate osservabili, risultati e criteri di accettazione.
I registri devono distinguere i fatti dalle interpretazioni. «La richiesta di continuazione inviata non conteneva il campo» è un’osservazione verificabile se è stato conservato il relativo registro. «Il modello ha dimenticato ciò che pensava» è una spiegazione speculativa e antropomorfica. Mantenere questa distinzione evita che un’ipotesi diventi una diagnosi operativa priva di prove.
Mantenere, correggere o preparare una migrazione
Una decisione di manutenzione dovrebbe basarsi su prove raccolte nell’ambiente reale. Interroga l’endpoint ufficiale per l’elenco dei modelli con le credenziali e i permessi che userà l’applicazione, registra l’identificatore restituito e ripeti la verifica nell’ambiente di distribuzione. La pagina della specifica descrive l’endpoint, ma non sostituisce una richiesta aggiornata: un esempio o un riferimento storico non certificano la disponibilità in uno specifico account. Confronta anche l’alias configurato con la versione fissata e documenta quale comportamento si aspetta l’integrazione.
La cronologia pubblica può orientare la ricerca, ma non è sufficiente a risolvere la questione. Il centro di trasparenza DeepSeek elenca V3.2 e V4 con informazioni sulla pubblicazione, mentre il registro delle modifiche permette di esaminare gli aggiornamenti degli alias e gli annunci di dismissione. Prima di migrare, verifica in queste fonti quale identificatore è disponibile e quale cambiamento è stato annunciato, quindi conferma il risultato tramite l’API del tuo account. La documentazione fornita non giustifica l’ipotesi che esista un percorso di migrazione automatico, né l’affermazione di un’equivalenza funzionale tra modelli.
La guida agli strumenti illustra le differenze tra interfacce; perciò anche una migrazione di formato va trattata come un cambiamento d’integrazione. Esegui la stessa batteria di regressione sulla soluzione attuale e su quella candidata: una chiamata, una catena, streaming, input non validi, errori degli strumenti e continuazione in un nuovo turno. Confronta criteri specifici del prodotto, non un’impressione generale. Esamina permessi, latenza, errori e costi secondo ciò che l’organizzazione considera rilevante, senza confondere la compatibilità sintattica con l’equivalenza di comportamento.
Se l’integrazione supera i test e l’identificatore è ancora disponibile, mantenerla può essere ragionevole, nel rispetto della politica di supporto e del livello di rischio accettabile per il team. Se la causa di un errore è la perdita di stato, correggila e ripeti la batteria prima di prendere una decisione sul modello. Se si prepara una migrazione, conserva un percorso di ripristino già testato, limita la fase iniziale della distribuzione e definisci i segnali che dovranno interrompere il cambiamento. Sono raccomandazioni operative, non garanzie del fornitore.
La conclusione utile non è che `reasoning_content` «spieghi» l’agente, ma che faccia parte di un contratto da testare esplicitamente nelle circostanze documentate. Un team può decidere con maggiore rigore quando dispone di una sequenza riproducibile, criteri definiti in anticipo, registri ridotti al minimo e una verifica aggiornata della disponibilità. Se manca una di queste prove, l’incertezza deve essere riportata nella decisione.
Lista di controllo prima di decidere
- 01Verifica la disponibilità dell’identificatore nell’ambiente e nell’account pertinenti; salva la data e il risultato.
- 02Conferma nella documentazione il formato API, i requisiti della modalità di ragionamento e la gestione degli strumenti applicabili.
- 03Esegui la batteria di regressione con strumenti simulati e criteri di superamento definiti per iscritto prima del test.
- 04Esamina errori, chiamate duplicate, limiti di iterazione, argomenti e associazione dei risultati.
- 05Consulta il registro delle modifiche e le informazioni sui modelli; non dedurre compatibilità o equivalenza dalla sola cronologia.
- 06Approva la manutenzione o la migrazione coinvolgendo un responsabile, definendo le condizioni di ripristino e registrando esplicitamente le incertezze.
Questioni aperte
- La disponibilità effettiva degli identificatori dipende dal risultato aggiornato dell’endpoint dei modelli e dall’account; questo articolo non la conferma tramite una richiesta in tempo reale.
- Le informazioni fornite non consentono di affermare che esista un percorso di migrazione automatico o un’equivalenza di comportamento tra V3.2 e V4.
- La conservazione della cronologia tra turni dipende dal formato API e dalla politica di conversazione dell’applicazione; va verificata per l’interfaccia specifica.
- I criteri di superamento, i limiti ai nuovi tentativi e le politiche di autorizzazione sono decisioni del team e vanno adattati agli strumenti e ai rischi del prodotto.
Continua a esplorare
Fonti consultate
Correzioni e trasparenza
Se trovi un dato errato o non aggiornato, inviaci la pagina e la fonte da verificare.
Proponi una correzione