InizioLibreria di prompt › Prompt ChatGPT per programmare

Prompt ChatGPT per programmare

Un prompt di programmazione preciso che produce codice pulito e funzionante con il contesto e i vincoli di cui l’IA ha bisogno.

Codice · Funziona benissimo con ChatGPT

Prompt pronto da copiare

Sei un ingegnere senior in [linguaggio]. Scrivi codice per [compito].
Contesto: [framework/versione, ambiente, vincoli].
Input: [descrivi]. Output atteso: [descrivi].
Requisiti:
- Codice pulito, leggibile e idiomatico in [linguaggio].
- Gestisci i casi limite e gli errori con eleganza.
- Aggiungi brevi commenti che spieghino le parti non ovvie.
- Includi un breve esempio di utilizzo.
- Indica ogni ipotesi che hai fatto.

Vuoi una versione su misura?

Rispondi ad alcune domande veloci e Generatore di prompt per codice creerà un prompt personalizzato con i tuoi dati esatti.

💻 Apri Generatore di prompt per codice

Perché la maggior parte dei prompt di programmazione con IA ti fa perdere tempo

Chiedi a ChatGPT di "scrivere una funzione per caricare un file" e otterrai codice che compila, viene eseguito in un ambiente immaginario e non si adatta al tuo. Potrebbe supporre Python 3.12 mentre tu sei alla 3.8, scegliere una libreria che non hai installato o gestire un formato di file che non hai mai menzionato. Il modello non indovina a caso: colma i vuoti che hai lasciato aperti con i valori predefiniti statisticamente più comuni. Ogni ambiguità nella tua richiesta diventa una decisione che il modello prende al posto tuo, e più decisioni prende, più rilavorazione erediti. Il prompt qui sopra funziona colmando questi vuoti prima che il modello scriva una sola riga, il che trasforma una bozza grezza in codice che spesso puoi incollare direttamente.

Il contesto è ciò che fa aderire il codice al tuo stack

La riga di contesto — framework, versione, ambiente, vincoli — è il campo che fa risparmiare più tempo. "Node 18 con Express e TypeScript, senza librerie HTTP esterne, in esecuzione su AWS Lambda" indica al modello esattamente cosa puntare, ed eviterà di suggerire un pacchetto che non puoi usare o una sintassi che il tuo runtime rifiuta. La versione conta più di quanto si immagini: i pattern asincroni, le funzioni della libreria standard e la sintassi dei tipi differiscono da una versione all’altra, e il codice scritto per la versione sbagliata fallisce in modi sconcertanti. Indicare i vincoli di input ("deve essere senza dipendenze", "non può usare la ricorsione", "deve essere eseguito in meno di 100 ms su una lista di 10.000 elementi") guida anche la scelta dell’algoritmo, non solo la sintassi. Senza questa riga, il modello ottimizza per sembrare corretto in isolamento invece che per funzionare nel tuo progetto.

Input, output e casi limite

Descrivere gli input esatti e l’output atteso elimina un’altra intera classe di discrepanze. "Riceve una lista di dizionari di ordini con le chiavi id, total e status; restituisce la somma di total degli ordini il cui status è 'pagato'" dà al modello un contratto preciso da soddisfare, e plasmerà la firma della funzione e il tipo di ritorno di conseguenza. Il requisito di gestire i casi limite e gli errori con eleganza è ciò che separa gli snippet usa e getta dal codice pronto per la produzione. Senza indicarglielo, ChatGPT scrive per il percorso felice e ignora gli input vuoti, i valori nulli, i dati malformati e i guasti di rete. Nominare questo requisito lo obbliga ad aggiungere le protezioni che altrimenti scopriresti in produzione. Quando puoi, descrivi i casi limite concreti che contano per i tuoi dati — una lista vuota, una chiave mancante, un timeout — così il modello gestisce quelli che affronti davvero.

Le ipotesi e la verifica chiudono il cerchio

L’ultimo requisito, "indica ogni ipotesi che hai fatto", è il più sottoutilizzato e il più prezioso. Il modello fa sempre ipotesi; l’unica domanda è se puoi vederle. Quando le scrive — "ho supposto che i timestamp siano in UTC", "ho supposto che l’input sia già validato" — puoi individuare un’ipotesi errata in pochi secondi invece di fare il debug per un’ora. L’esempio di utilizzo svolge lo stesso ruolo di verifica: ti mostra come il codice dovrebbe essere richiamato e ti permette di controllare l’interfaccia prima di integrarla. Anche con un buon prompt, tratta il risultato come la prima bozza di un ingegnere senior, non come un commit finito. Leggilo, eseguilo contro un caso limite reale e, per tutto ciò che è importante, prosegui con "scrivi test unitari che coprano i casi di input vuoto e di errore" per fidarti dei test piuttosto che del modello.

Perché questo prompt funziona

I prompt di programmazione vaghi producono codice che non si adatta al tuo stack. Questo prompt fornisce linguaggio, framework, input e output fin dall’inizio, così l’IA scrive codice idiomatico che funziona davvero nel tuo ambiente, e fa emergere le sue ipotesi affinché tu individui presto le discrepanze.

Come personalizzarlo

  • Indica sempre la versione del linguaggio e il framework per evitare codice incompatibile.
  • Descrivi gli input e gli output attesi con precisione.
  • Chiedi test se la logica è importante.

Esempio di risultato

Solo un esempio

Prompt completato: linguaggio = Python 3.9, compito = "analizzare un CSV di transazioni e restituire il totale di una categoria data", vincoli = "solo libreria standard".

import csv
from decimal import Decimal, InvalidOperation

def total_for_category(csv_path, category):
    """Restituisce la somma di 'amount' delle righe corrispondenti a 'category'.

    Suppone che il CSV abbia le intestazioni 'category' e 'amount'.
    Ignora le righe con un amount mancante o non numerico.
    """
    total = Decimal("0")
    with open(csv_path, newline="", encoding="utf-8") as f:
        reader = csv.DictReader(f)
        if reader.fieldnames is None or "amount" not in reader.fieldnames:
            raise ValueError("Il CSV deve avere una colonna 'amount'")
        for row in reader:
            if row.get("category") != category:
                continue
            try:
                total += Decimal(row["amount"])
            except (InvalidOperation, TypeError):
                # Ignora gli amount malformati invece di interrompere l intera esecuzione.
                continue
    return total

# Esempio di utilizzo:
# print(total_for_category("transactions.csv", "groceries"))

Ipotesi: gli importi sono stringhe decimali; il file è in UTF-8; le righe malformate devono essere ignorate, non far fallire l’intera analisi. Si usa Decimal invece di float per evitare gli errori di arrotondamento con il denaro.

Variazioni di prompt da provare

Spiegare l’approccio prima di programmare

Sei un ingegnere senior in [linguaggio]. Ho bisogno di [compito], con questi vincoli: [framework/versione, ambiente]. Prima di scrivere codice, spiega brevemente l’approccio che intendi seguire, i principali compromessi e ogni decisione in cui esiste più di un’opzione ragionevole. Aspetta che io confermi l’approccio, poi scrivi codice pulito e idiomatico in [linguaggio] con gestione degli errori e un esempio di utilizzo.

Rifattorizzare codice esistente

Sei un ingegnere senior in [linguaggio]. Rifattorizza il codice qui sotto perché sia più pulito, leggibile e idiomatico per [framework/versione], senza cambiarne il comportamento. Segnala ogni bug o caso limite che attualmente gestisce male e aggiungi la gestione degli errori dove manca. Mantieni l’interfaccia pubblica identica. Spiega brevemente ogni modifica significativa. Codice: [incolla il codice].

Codice e test allo stesso tempo

Sei un ingegnere senior in [linguaggio]. Scrivi codice per [compito] in [framework/versione], input [descrivi], output atteso [descrivi]. Poi scrivi un insieme di test unitari con [framework di test] che coprano il percorso felice, gli input vuoti e nulli, i valori limite e almeno una condizione di errore. Indica ogni ipotesi. Mantieni sia il codice che i test idiomatici e leggibili.

Errori comuni da evitare

  • Omettere la versione del linguaggio. La sintassi asincrona, le funzioni della libreria standard e le annotazioni dei tipi differiscono da una versione all’altra, quindi il codice per la versione sbagliata fallisce in modo strano. Indicala sempre: Python 3.9, Node 18, Java 17.
  • Non descrivere input e output con precisione. "Elabora i dati" non dà al modello alcun contratto da soddisfare. Specifica la forma esatta dell’input e cosa deve restituire la funzione.
  • Dimenticare di nominare i vincoli. Se non puoi aggiungere dipendenze o devi raggiungere un obiettivo di prestazione, dillo fin dall’inizio; altrimenti il modello sceglie una libreria che non hai o un algoritmo troppo lento.
  • Saltare la gestione degli errori nella richiesta. Senza indicarglielo, ChatGPT scrive solo il percorso felice. Chiedigli esplicitamente di gestire gli input vuoti, i nulli e i guasti, nominando idealmente quelli che i tuoi dati producono davvero.
  • Fidarsi del codice senza eseguirlo. Anche una bozza ben costruita può trascinarsi un’ipotesi errata. Eseguilo contro un caso limite reale e chiedi test unitari prima di dipendere da qualcosa di importante: tratta il risultato come una prima bozza, non come un commit.

Domande frequenti

Perché ChatGPT mi dà codice che non funziona nel mio progetto?

Quasi sempre perché il prompt ha lasciato l’ambiente non specificato. Il modello ripiega sulla versione del linguaggio e sulle librerie più comuni, che possono non corrispondere alle tue. Compilare il campo di contesto — framework, versione e vincoli — risolve la maggior parte di queste discrepanze prima che il codice venga scritto.

Dovrei chiedere test oltre al codice?

Per tutto ciò da cui dipenderai davvero, sì. I test sono il modo più affidabile per verificare il codice scritto dall’IA, perché intercettano le ipotesi errate e i bug dei casi limite che il modello ha mancato. Aggiungi "includi test unitari per l’input vuoto e i casi di errore" al prompt, o usa la variazione codice e test qui sopra.

Come evito che l’IA faccia ipotesi silenziose?

Mantieni il requisito "indica ogni ipotesi che hai fatto" in ogni prompt di programmazione. Il modello suppone sempre qualcosa; questo rende quelle ipotesi visibili affinché tu possa individuarne una errata in pochi secondi. Quando un’ipotesi elencata è falsa, correggila e chiedi una revisione.

È sicuro incollare questo codice direttamente in produzione?

Trattalo come la prima bozza di un ingegnere senior, non come un commit finito. Leggilo, eseguilo contro input reali e di casi limite, rivedi le ipotesi indicate e aggiungi test per tutto ciò che è importante. Un buon prompt ti avvicina molto, ma la revisione umana resta l’ultima linea di difesa.

Suggerimento: sostituisci le parti tra [parentesi] con le tue informazioni prima di inviare. Più sei preciso — pubblico, tono, obiettivo, vincoli — migliore sarà il risultato dell’IA.