Vai al contenuto principale
OpenAI

Come OpenAI utilizza Codex

Introduzione

Codex viene utilizzato quotidianamente da numerosi team tecnici di OpenAI, tra cui sicurezza, ingegneria di prodotto, front-end, API, infrastruttura e ingegneria delle prestazioni. I team lo utilizzano per accelerare una serie di attività di ingegneria, dalla comprensione di sistemi complessi al refactoring di grandi codebase, fino al rilascio di nuove funzionalità e alla risoluzione di incidenti con scadenze ravvicinate.

Basandoci su interviste con gli ingegneri di OpenAI e sui dati di utilizzo interni, abbiamo raccolto casi d'uso e pratiche ottimali che evidenziano come Codex aiuti i nostri team a lavorare più velocemente, migliorare la qualità del lavoro e gestire la complessità su larga scala.


Caso d'uso 1: Comprensione del codice

Codex aiuta i nostri team ad acquisire rapidamente familiarità con parti meno conosciute della base di codice durante l'inserimento, il debug o l'analisi di un incidente.

Spesso usano Codex per individuare la logica centrale di una funzionalità, mappare le relazioni tra servizi o moduli e tracciare il flusso dei dati all'interno di un sistema. Aiuta anche a far emergere schemi architetturali o parti mancanti della documentazione che altrimenti richiederebbero un notevole sforzo manuale per essere prodotte.

Durante la risposta agli incidenti, Codex aiuta gli ingegneri a orientarsi rapidamente in nuovi ambiti portando alla luce le interazioni tra i componenti o tracciando il modo in cui gli stati di errore si propagano tra i sistemi.

Aneddoti dai nostri team

«Quando correggo un bug, utilizzo la modalità Ask per verificare in quali altri punti del codice potrebbe presentarsi lo stesso problema»
Ingegnere delle prestazioni, sistemi di recupero
Prova a usare Codex per comprendere il codice con questi esempi di prompt:
  • Dove è implementata la logica di autenticazione in questo repository?

  • Riassumi il flusso delle richieste attraverso questo servizio, dal punto di ingresso alla risposta.

  • Quali moduli interagiscono con [insert module name] e come vengono gestiti gli errori?

Caso d'uso 2: Refactoring e migrazioni

Codex viene comunemente utilizzato per apportare modifiche che interessano più file o pacchetti. Ad esempio, quando gli ingegneri aggiornano un'API, modificano il modo in cui viene implementato uno schema o migrano a una nuova dipendenza, Codex semplifica l'applicazione coerente delle modifiche.

Questo si rivela particolarmente utile quando lo stesso aggiornamento deve essere applicato a decine di file, oppure quando l'aggiornamento richiede di tenere conto di struttura e dipendenze che non si individuano facilmente con un'espressione regolare (regex) o con la funzione Trova e sostituisci.

Lo stanno anche utilizzando per la pulizia del codice, suddividendo i moduli troppo grandi, sostituendo i vecchi schemi con quelli moderni o preparando il codice per una migliore testabilità.

Aneddoti dai nostri team

«Codex ha sostituito ogni getUserById( ) legacy con il nostro nuovo pattern di servizio e ha aperto la PR. Ha fatto in pochi minuti ciò che avrebbe richiesto ore.»
Ingegnere backend, ChatGPT Web
Prova a usare Codex per il refactoring e le migrazioni utilizzando questi esempi di prompt:
  • Suddividi questo file in moduli separati per responsabilità e genera test per ciascuno di essi.

  • Converti tutti gli accessi al database basati su callback in async/await.

Caso d'uso 3: Ottimizzazione delle prestazioni

Codex viene utilizzato per identificare e affrontare i colli di bottiglia delle prestazioni.

Durante le attività di ottimizzazione o miglioramento dell'affidabilità, gli ingegneri utilizzano prompt per chiedere a Codex di analizzare i percorsi del codice lenti o ad alto consumo di memoria, come cicli inefficienti, operazioni ridondanti o query costose, e di suggerire alternative ottimizzate, ottenendo miglioramenti significativi in termini di efficienza e affidabilità.

Codex viene utilizzato anche per supportare la salute del codice identificando schemi rischiosi o obsoleti che sono ancora in uso attivo. I nostri team si affidano a questo strumento per ridurre il debito tecnico a lungo termine e prevenire attivamente le regressioni.

Aneddoti dai nostri team

«Uso Codex per analizzare il codice alla ricerca di chiamate ripetute e costose al database. È ottimo per individuare i percorsi critici e redigere query in batch che posso ottimizzare in seguito.»
Ingegnere dell'infrastruttura, affidabilità delle API
Prova a usare Codex per ottimizzare le prestazioni con questi esempi di prompt:
  • Ottimizza questo ciclo per migliorarne l'efficienza della memoria e spiega perché la tua versione è più veloce.

  • Individua le operazioni ripetute e costose in questo gestore di richieste e suggerisci opportunità di memorizzazione nella cache.

  • Suggerisci un modo più rapido per raggruppare le query del database in questa funzione.

Caso d'uso 4: Miglioramento della copertura dei test

Codex aiuta gli ingegneri a scrivere test più velocemente, soprattutto dove la copertura è scarsa o completamente assente.

Quando lavorano a una correzione di un bug o a un refactoring, gli ingegneri spesso chiedono a Codex di suggerire test che coprano casi limite o probabili percorsi di errore. Per il codice nuovo, può generare test unitari o di integrazione in base alla firma della funzione e alla logica circostante.

Codex è particolarmente utile per identificare condizioni limite, come input vuoti, lunghezze massime o stati insoliti ma validi, che spesso vengono trascurati nei test iniziali.

Aneddoti dai nostri team

«Imposto Codex sui moduli con bassa copertura durante la notte e al mattino mi ritrovo con PR di test unitari già eseguibili.»
Ingegnere frontend, ChatGPT Desktop
Prova a usare Codex per ottimizzare le prestazioni con questi esempi di prompt:
  • Scrivi test unitari per questa funzione, inclusi i casi limite e i percorsi di errore.

  • Genera un test basato sulle proprietà per questa utilità di ordinamento.

  • Estendi questo file di test per includere scenari mancanti relativi a input nulli e stati non validi.

Caso d'uso 5: Incremento della velocità di sviluppo

Codex aiuta i team a lavorare più velocemente accelerando sia l'inizio che la fine del ciclo di sviluppo.

Quando avviano una nuova funzionalità, gli ingegneri lo utilizzano per creare una struttura di base del codice, generando cartelle, moduli e stub API per ottenere rapidamente codice eseguibile senza dover collegare manualmente ogni componente.

Quando i progetti si avvicinano al rilascio, Codex aiuta a rispettare scadenze ravvicinate occupandosi di attività più piccole ma essenziali, come gestire i bug, colmare le lacune finali di implementazione e generare script di rollout, hook di telemetria o file di configurazione.

Viene anche utilizzato per trasformare il feedback sul prodotto in codice iniziale. Gli ingegneri spesso incollano una richiesta dell'utente o una specifica e fanno generare a Codex una bozza iniziale su cui possono tornare e che possono perfezionare successivamente.

«Ho passato tutto il giorno in riunione e ho comunque unito 4 PR perché Codex lavorava in background.»
Ingegnere del prodotto, ChatGPT Enterprise
Prova Codex per accelerare lo sviluppo con questi esempi di prompt:
  • Crea una nuova route API per POST /events con validazione di base e registrazione dei log.

  • Genera un hook di telemetria per monitorare il successo o il fallimento del nuovo flusso di onboarding, utilizzando questo modello [inserisci un esempio del tuo codice di telemetria].

  • Crea un'implementazione di base seguendo questa specifica: [inserisci la specifica o il feedback sul prodotto].

Caso d'uso 6: Mantenimento della continuità

Codex aiuta i nostri ingegneri a rimanere produttivi quando le loro giornate sono frammentate e piene di interruzioni.
Viene utilizzato per acquisire il lavoro incompiuto, trasformare gli appunti in prototipi funzionanti o avviare attività esplorative da riprendere in seguito. Questo rende più semplice mettere in pausa e riprendere il lavoro senza perdere il contesto, soprattutto quando sono reperibili o hanno molte riunioni.

«Se noto una correzione al volo, avvio un'attività di Codex invece di cambiare ramo e revisiono la PR quando ho tempo.»
Ingegnere backend, API ChatGPT
Prova a usare Codex per mantenere la continuità con questi esempi di prompt:

Caso d'uso 7: Esplorazione e ideazione

Codex è utile anche per attività aperte come trovare soluzioni alternative o convalidare le decisioni di progettazione. Puoi usare i prompt per trovare modi diversi di risolvere un problema, esplorare schemi sconosciuti o mettere alla prova le ipotesi. Questo aiuta a far emergere i compromessi, ad ampliare le opzioni di progettazione e a rendere più precise le scelte di implementazione.

Viene anche utilizzato per individuare bug correlati. Data una problematica nota o un metodo deprecato, Codex può individuare schemi simili in altre parti del codice, rendendo più semplice individuare regressioni o completare il lavoro di pulizia.

«Codex mi aiuta a risolvere il problema del cold start: incollo una specifica e la documentazione e lui crea la struttura del codice oppure mi mostra cosa ho dimenticato.»
Ingegnere del prodotto, ChatGPT Desktop
Prova a usare Codex per l'esplorazione e l'ideazione con questi esempi di prompt:
  • Come funzionerebbe se il sistema fosse basato sugli eventi anziché su richiesta/risposta?

  • Trova tutti i moduli che costruiscono manualmente stringhe SQL invece di usare il nostro query builder.

  • Riscrivi questo in uno stile più funzionale, evitando mutazioni ed effetti collaterali.


Best practice

Codex funziona al meglio quando gli si forniscono struttura, contesto e spazio per iterare. Ecco alcune delle abitudini che i team di OpenAI stanno coltivando per ottenere valore costante da Codex nel lavoro quotidiano.

Inizia con la modalità Ask

Per modifiche di ampia portata, inizia chiedendo a Codex un piano di implementazione utilizzando la modalità Ask, che diventa poi l'input per i prompt successivi quando passi alla modalità Code. Questo flusso in due passaggi mantiene Codex ben ancorato e aiuta a evitare errori nei suoi risultati. Codex funziona al meglio con attività ben definite che richiederebbero circa un'ora di lavoro a te o a un collega per essere completate o qualche centinaio di righe di codice da implementare. Con il miglioramento dei modelli, è prevedibile che aumenti la portata delle attività che possono essere affrontate.

Migliora iterativamente l'ambiente di sviluppo di Codex

L'impostazione di uno script di avvio, delle variabili d'ambiente e dell'accesso a Internet riduce significativamente il tasso di errore di Codex. Mentre esegui attività, cerca eventuali errori di build che possono essere corretti nella configurazione dell'ambiente di Codex. Questo può richiedere alcune iterazioni, ma comporta significativi miglioramenti in termini di efficienza nel lungo periodo.

Struttura il tuo prompt come se stessi scrivendo un issue GitHub

Codex risponde meglio quando i prompt rispecchiano il modo in cui descriveresti una modifica in una PR o issue. Ciò significa includere percorsi dei file, nomi dei componenti, diff ed estratti della documentazione, quando pertinenti. Usare prompt con schemi come «Implementa questo nello stesso modo in cui è fatto in [modulo X]» migliora i risultati.

Usa la coda attività di Codex come un backlog semplice

Crea rapidamente attività per annotare idee collaterali, lavoro parziale o correzioni occasionali. Non c'è alcuna pressione nel generare una PR completa tutta in una volta. Codex funziona bene come spazio di appoggio a cui puoi tornare quando ritrovi la concentrazione.

Usa AGENTS.md per fornire un contesto persistente

Mantieni un file AGENTS.md per aiutare Codex a operare in modo più efficace nel tuo repository tra i prompt. Questi file in genere includono convenzioni di denominazione, logica aziendale, comportamenti particolari noti o dipendenze che Codex non può dedurre dal solo codice. Scopri di più su come strutturare il tuo file AGENTS.md nella documentazione.

Sfrutta “Best of N” per migliorare l'output

La funzionalità Best-of-N ti consente di generare simultaneamente più risposte per una singola attività, così da esplorare rapidamente più soluzioni e scegliere la migliore. Per attività più complesse, puoi esaminare diverse iterazioni e combinare parti di risposte diverse per ottenere un risultato migliore.


Prospettive future

Codex è ancora in fase di anteprima sperimentale, ma sta già avendo un impatto significativo sul nostro modo di lavorare: ci aiuta a procedere più velocemente, a scrivere codice di qualità superiore e a occuparci di attività che altrimenti non sarebbero mai state prioritarie.

Siamo entusiasti del potenziale che ci attende: man mano che i nostri modelli migliorano e Codex si integra sempre più profondamente nei nostri flussi di lavoro, non vediamo l'ora di sbloccare modi ancora più potenti per sviluppare software con esso. Condivideremo ciò che impariamo man mano che procediamo.

Vuoi portare l’IA nel tuo business?

Scopri come aiutiamo le aziende a sviluppare strategie di IA scalabili e responsabili.