
Il classico ciclo di tool calling è sempre stato un costo aggiuntivo — quattro strumenti, quattro round trip; quaranta strumenti, quaranta. Con chat gpt 5.6, OpenAI ha riscritto le regole del gioco: invece di eseguire ogni funzione una alla volta, GPT-5.6 ora scrive JavaScript che orchestra l’intera sequenza da solo, all’interno di una sandbox V8 isolata. Un primo cliente ha ridotto il consumo di token del 63,5% utilizzando lo stesso agente e lo stesso set di strumenti. OpenAI programmatic tool calling è stato rilasciato il 9 luglio 2026, esclusivamente tramite la Responses API, come principale novità al lancio in disponibilità generale di GPT-5.6.
Nel modello classico — il “function calling” — il modello emette una richiesta a uno strumento, il tuo codice la esegue, aggiungi il risultato e il modello lo legge prima di decidere cosa chiamare dopo. Quattro strumenti significano quattro round trip, e ogni iterazione rielabora tutti i risultati precedenti, facendo aumentare esponenzialmente il consumo di token. Il programmatic tool calling (detto anche “code mode”) cambia l’architettura: GPT-5.6 scrive JavaScript che orchestra l’intera sequenza — cicli, condizioni, esecuzioni parallele, aggregazione dei risultati — all’interno di una sandbox V8 isolata sul lato OpenAI. Il tuo codice riceve i risultati aggregati in un unico ciclo di risposta. Con la disponibilità generale è terminata una preview ristretta di due settimane (circa 20 organizzazioni approvate): Sol, Terra e Luna la supportano tutte; l’alias generico gpt-5.6 instrada a Sol.
“Il programmatic tool calling consente al modello di scrivere il livello di orchestrazione anziché eseguire un round trip per ogni funzione.” OpenAI — GPT-5.6 General Availability
OpenAI esegue ogni programma generato in un runtime V8) fresco e isolato — lo stesso motore che alimenta Chrome e Node.js — con supporto a JavaScript con top-level await. Ciò che non fornisce: Node.js o installazione di pacchetti, accesso diretto alla rete (niente fetch, niente WebSocket), un filesystem persistente, esecuzione di sottoprocessi o uno stato che persista tra le esecuzioni. Il codice generato può eseguire cicli, ramificazioni e aggregare risultati in memoria, ma l’unico canale verso il mondo esterno passa dagli strumenti che hai dichiarato. Il confine di sicurezza non si sposta: se non hai esposto uno strumento delete_record, nessun JavaScript generato potrà eliminare un record. Poiché la sandbox è isolata dall’infrastruttura dati di OpenAI, è idonea alla Zero Data Retention senza costi aggiuntivi per i container.
| Function calling classico | Programmatic tool calling | |
|---|---|---|
| Chi scrive il flusso di controllo | Il codice della tua applicazione | Il modello, come JavaScript |
| Round trip per N chiamate a strumenti | N, serializzati | Un unico ciclo di risposta |
| Dove gira l’orchestrazione | La tua infrastruttura | Sandbox V8 isolata |
| Strumenti eseguiti da | Il tuo codice | Sempre la tua superficie di strumenti dichiarati |
| Andamento del costo in token | Cresce con N | Fisso per ciclo di risposta |
Nel ciclo classico, un controllo su 12 stati di volo richiede 12 round trip serializzati, ognuno con un doppio costo — latenza e token, poiché i risultati precedenti rimangono nel contesto. Con gli agenti a catena la situazione peggiora ulteriormente: un agente in cinque passi che avvolge un ciclo da dieci chiamate genera 50 invocazioni fatturate al modello. Un cliente al lancio ha eseguito lo stesso agente con gli stessi strumenti bruciando il 63,5% di token in meno. OpenAI ha citato riduzioni dal 38% al 63,5% tra i primi clienti nominati — un intervallo che riflette quanto i tuoi cicli attuali si compongono in modo aggressivo.
Usa la Responses API (/v1/responses) — Chat Completions non supporta questa funzionalità. Aggiungi lo strumento hosted programmatic_tool_calling all’array tools e, per ogni strumento che il JavaScript del modello può invocare, imposta "allowed_callers": ["programmatic"]; per le mutazioni ad alto rischio, usa ["direct"] o ometti il campo. La qualità degli schemi conta ancora di più ora: una descrizione vaga che nel ciclo classico produceva una singola chiamata errata intercettabile viene integrata in un ciclo e ripetuta a ogni iterazione. Investi in tipi strict, enum per insiemi chiusi e descrizioni che indicano unità e formati. L’array allowed_callers è una superficie di opt-in selettivo — inizia con strumenti di sola lettura e idempotenti ed estendi l’accesso in modo incrementale.
Tutti e tre i livelli di GPT-5.6 lo supportano tramite la Responses API, in self-service con qualsiasi account API OpenAI — nessun piano richiesto né lista d’attesa dopo il 9 luglio 2026.
| Modello | Ruolo | Input / Output per 1M token |
|---|---|---|
gpt-5.6-sol | Flagship — ragionamento complesso, agenti a lungo orizzonte | $5.00 / $30.00 |
gpt-5.6-terra | Bilanciato — carichi di lavoro quotidiani | $2.50 / $15.00 |
gpt-5.6-luna | Veloce e a basso costo — pipeline ad alto volume | $1.00 / $6.00 |
Tutti e tre condividono una finestra di contesto di 1.050.000 token con un output massimo di 128.000 token. L’alias generico gpt-5.6 instrada a Sol — il livello più costoso — quindi non hardcodarlo in produzione. Luna è il punto di partenza ovvio per le pipeline ad alta frequenza, dove i risparmi sui round trip si sommano al basso costo per token; per ragionamenti complessi su molti strumenti, il vantaggio di Sol giustifica il prezzo più alto. Consulta la panoramica completa della famiglia di modelli chatgpt 5.6 per il confronto tra i livelli.
Entrambi eseguono codice ma risolvono problemi diversi. Code interpreter esegue Python come output finale — il calcolo stesso (analisi, grafici, trasformazioni di file) è il risultato. Il programmatic tool calling genera JavaScript il cui unico compito è coordinare gli strumenti dichiarati; il risultato è l’aggregazione dei dati, e il JavaScript non ha mai accesso alla rete. Usa code interpreter quando il calcolo è la risposta, il programmatic tool calling quando il collo di bottiglia è l’overhead di coordinazione; possono coesistere. Rispetto all’ultra mode — che coordina quattro agenti paralleli per migliorare la qualità del ragionamento (Sol 88,8% vs Sol Ultra 91,9% su Terminal-Bench 2.1, con un costo in token circa 4× superiore) — il programmatic tool calling riduce i round trip di esecuzione e abbassa il costo in token. La maggior parte degli agenti con molti strumenti dovrebbe provare prima il programmatic tool calling; l’ultra mode è indicato quando hai già eliminato l’overhead delle chiamate agli strumenti e hai bisogno di ulteriore margine di qualità.
I team enterprise che operano nell’ambito degli accordi Zero Data Retention di OpenAI possono adottarlo senza modificare il proprio assetto di conformità — il confine ZDR copre la sandbox, senza costi aggiuntivi per i container né nuove clausole BAA. L’assenza di accesso alla rete elimina qualsiasi percorso di esfiltrazione al di fuori degli strumenti dichiarati; il JavaScript generato non può creare nuovi strumenti, modificare le definizioni degli strumenti o conservare stato tra le chiamate. Si integra perfettamente anche con il reasoning persistente — un’altra funzionalità della Responses API disponibile in GA — che può essere memorizzato nella cache lato server senza compromettere l’idoneità ZDR.
/v1/chat/completions; migra se il tuo codice usa Chat Completions.Il programmatic tool calling (detto anche “code mode”) è una funzionalità dell’API Responses di OpenAI in cui GPT-5.6 scrive codice JavaScript che orchestra più chiamate agli strumenti all’interno di una sandbox V8 isolata, anziché restituirle una alla volta lasciando all’applicazione il compito di iterarle. È stato rilasciato il 9 luglio 2026 con la disponibilità generale di GPT-5.6.
Il modello scrive codice JavaScript che viene eseguito in una sandbox V8 creata appositamente sull’infrastruttura di OpenAI. Quel programma può eseguire cicli, diramazioni e aggregare risultati su più chiamate agli strumenti, il tutto in un unico ciclo di risposta. Le definizioni degli strumenti dichiarate sono l’unico modo in cui il codice generato può interagire con sistemi esterni.
È un runtime JavaScript isolato (basato su V8, il motore di Chrome e Node.js) che OpenAI avvia da zero per ogni richiesta di programmatic tool calling. Supporta JavaScript con top-level await, ma non dispone di accesso alla rete, di Node.js, di un filesystem persistente né di stato condiviso tra le chiamate.
Raggruppando N chiamate agli strumenti in un unico ciclo di risposta, i risultati precedenti non si accumulano più nel contesto tra un’andata e ritorno e l’altro. OpenAI ha indicato riduzioni dei token dal 38% al 63,5% presso alcuni dei primi clienti nominati, con i valori più alti riscontrati quando i cicli comprendono molte chiamate serializzate che rilevano ogni volta l’intero contesto precedente.
No. È disponibile esclusivamente sull’API Responses di OpenAI (/v1/responses). Se la tua integrazione utilizza /v1/chat/completions, devi migrare all’API Responses per poter usare questa funzionalità.
Code interpreter esegue codice Python come output finale — analisi dei dati, grafici, trasformazioni di file. Il programmatic tool calling esegue JavaScript che si limita a coordinare gli strumenti dichiarati; il risultato finale sono i dati aggregati restituiti dagli strumenti, non il codice in sé, e non dispone di accesso alla rete.
Il programmatic tool calling riduce i round trip di esecuzione (il costo in token diminuisce). L’ultra mode coordina quattro agenti in parallelo per migliorare la qualità del ragionamento su problemi complessi (il costo in token aumenta di circa 4 volte). Risolvono colli di bottiglia diversi. La maggior parte degli agenti multi-strumento dovrebbe provare prima il programmatic tool calling.
Sì. La sandbox V8 è isolata dall’infrastruttura dati di OpenAI, pertanto gli accordi aziendali Zero Data Retention la coprono senza costi aggiuntivi per il container.