Home → Assistenza

400 su una chiamata a strumento: ogni tool_use ha bisogno del suo tool_result

Ogni blocco tool_use in un messaggio dell'assistente deve ricevere risposta con un blocco tool_result con lo stesso id, nel messaggio utente immediatamente successivo, prima di qualsiasi altro contenuto. Se ne salti uno tra tanti, li riordini o metti del testo prima, la richiesta successiva viene rifiutata.

Cosa vedi

Perché succede

La conversazione viene riprodotta per intero a ogni chiamata, quindi l'API convalida tutta la struttura ogni volta, compresi i turni accettati in precedenza. Ecco perché l'errore indica un messaggio più vecchio di quello che hai appena inviato.

Le chiamate a strumenti in parallelo sono l'innesco abituale. Un modello può emettere diversi blocchi tool_use in un solo turno, e il codice di gestione scritto per una sola chiamata risponde al primo e scarta il resto.

Uno strumento che fallisce produce comunque un risultato. Omettere il blocco perché la tua funzione ha lanciato un'eccezione è esattamente la forma che l'API rifiuta: restituisci invece un tool_result con il testo dell'errore.

Come risolvere

  1. Rispondi a ogni id, in ordineRaccogli gli id tool_use dal turno dell'assistente, eseguili ed emetti un tool_result per id, nello stesso ordine, all'inizio del messaggio utente successivo.
  2. Restituisci gli errori come risultatiQuando uno strumento lancia un'eccezione, invia un tool_result con il messaggio di errore come contenuto. Il modello lo gestisce bene; un blocco mancante no.
  3. Metti il testo dopo i risultatiSe vuoi aggiungere una nota dell'utente nello stesso turno, mettila dopo tutti i blocchi tool_result, mai prima.
Su APICLAN il traffico delle chiamate a strumenti viene addebitato come normali token di input e output. Una richiesta rifiutata non viene mai eseguita, quindi non viene addebitata, ma il retry sì: per questo correggere l'abbinamento è meglio che aggirarlo a forza di retry.

Articoli correlati

Unexpected token '<' quando chiami un'API compatibile con OpenAI401 invalid API key: quando la chiave sembra giusta ma continua a fallire

Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway compatibile con OpenAI in produzione, non raccolto da altri siti.