Un template di prompt è un prompt con degli spazi da compilare. Il testo fisso contiene tutto ciò che hai imparato su come ottenere una buona risposta per un tipo di compito: il ruolo, il formato, i limiti. Gli spazi contengono ciò che cambia ogni volta: l'argomento, il linguaggio, il testo su cui lavorare. Compilare tre spazi è più rapido che scrivere un prompt, e ti dà risposte di qualità e forma costanti.
Il template qui sotto spiega qualsiasi concetto di programmazione al tuo livello. Scrivi i tuoi valori nei campi, disattiva una parte per vedere cosa aggiunge, poi copialo o aprilo in un'app di chat.
L'idea: una closure è una funzione che ricorda le variabili del punto in cui è stata creata, anche dopo che la funzione esterna ha finito di eseguire.
Esempio:
function makeCounter() {
let count = 0;
return function () {
count += 1; // still sees count from makeCounter
return count;
};
}
const next = makeCounter();
console.log(next()); // 1
console.log(next()); // 2
Errore comune: aspettarsi che due contatori condividano un unico totale. Ogni chiamata a makeCounter() crea un nuovo count, quindi ogni contatore tiene il proprio.
Cosa rende buono un template
Un template vale quanto il prompt da cui nasce, quindi il testo fisso deve essere un prompt che hai già eseguito e che ti è piaciuto. Tre scelte distinguono un template utile da un modulo che produce risposte mediocri più in fretta.
Lascia come spazio solo ciò che cambia. Se vuoi sempre la risposta sotto le 150 parole, scrivi 150 nel testo fisso. Ogni spazio è una decisione che devi riprendere a ogni uso, e un template con dieci spazi si compila più lentamente di quanto ci metteresti a riscrivere il prompt.
Dai a ogni spazio un nome chiaro e un valore predefinito sensato. {{conosciuto}} ti dice cosa scrivere; {{x}} no. Un valore predefinito mostra il tipo di valore atteso e ti permette di eseguire il template una volta senza scrivere niente.
Un template per ogni lavoro. Un template che spiega concetti, rivede codice e scrive domande di quiz a seconda di uno spazio fa tutte e tre le cose peggio di tre template separati. Più il testo fisso è specifico, più può dire sul formato e sullo standard.
Le sei parti di come scrivere un prompt sono una buona checklist per il testo fisso: ruolo, compito, contesto, input, formato, vincoli. Gli spazi di solito cadono nel compito, nel contesto e nell'input.
Esempi di template di prompt
Questi tre coprono lavori comuni di tutti i giorni. Ognuno ha campi con un nome da compilare. Per una raccolta più ampia di prompt pronti, vedi esempi di prompt.
def median(numbers: list[float]) -> float:
if not numbers:
raise ValueError("median() needs at least one number")
ordered = sorted(numbers)
middle = len(ordered) // 2
if len(ordered) % 2 == 1:
return ordered[middle]
return (ordered[middle - 1] + ordered[middle]) / 2
# median([3, 1, 2]) returns 2
# median([4, 1, 3, 2]) returns 2.5
# median([]) raises ValueError
Ciao, grazie dell'invito, mi fa piacere che abbiate pensato a me! Purtroppo il 14 non riesco. Andrebbe bene una data il mese prossimo? Sarei felice di parlare del progetto in quell'occasione.
A presto, [Il tuo nome]
I tag intorno al testo incollato hanno un motivo. Il testo che inserisci può contenere frasi che sembrano istruzioni, e i delimitatori evitano che il modello confonda le istruzioni del tuo template con il materiale su cui deve lavorare.
Come creare il tuo template
- Parti da un prompt che ha funzionato. Prendi una conversazione in cui la risposta è uscita giusta e raccogli la versione finale del prompt, comprese le correzioni che hai dovuto aggiungere nei messaggi successivi. Quelle correzioni sono la parte più preziosa, perché sistemano ciò che la prima versione sbagliava.
- Segna cosa cambierebbe la prossima volta. Leggi il prompt e sottolinea ogni parola che modificheresti per l'uso successivo. Di solito sono da due a quattro cose: un argomento, un pubblico, una lunghezza, un input incollato.
- Sostituisci ciascuna con uno spazio con un nome. Scrivi lo spazio nel modo che si aspetta il tuo strumento, per esempio
[pubblico]per un prompt che incolli a mano o{audience}per il codice. - Prova con tre compilazioni diverse. Usa un caso tipico, un input molto breve o molto lungo e un caso insolito. Se uno fallisce, il testo fisso sta ancora dando per scontato qualcosa sul primo uso. Cambia una frase alla volta, come descritto in iterare sui prompt.
- Salvalo dove lo ritroverai. Un file di note, un text expander o un gestore di snippet vanno tutti bene. Un template che devi cercare è un template che smetterai di usare.
I template nel codice
In un programma, un template è una stringa con campi con un nome. Il metodo str.format() di Python li compila:
SUMMARY_TEMPLATE = """Summarize the text inside the <text> tags for {audience}.
Use at most {bullets} bullet points and lead with any action the reader must take.
<text>
{text}
</text>"""
with open("notes.txt", encoding="utf-8") as f:
meeting_notes = f.read()
prompt = SUMMARY_TEMPLATE.format(
audience="a manager who has two minutes",
bullets=3,
text=meeting_notes,
)
Con str.format(), ogni parentesi graffa letterale del template va scritta due volte ({{ e }}), cosa che conta quando il template include un esempio JSON. Le parentesi graffe dentro i valori che passi, come del codice in meeting_notes, non richiedono escape. Alcune librerie per costruire app di IA hanno le proprie classi di template, ma fanno lo stesso lavoro di una stringa di formato con qualche funzione in più intorno.
Quando i valori arrivano dagli utenti, ricorda che il template manda il loro testo al modello. Tienilo dentro dei delimitatori, e non dare al modello strumenti o dati che un input malevolo potrebbe sfruttare.
Template o prompt di sistema
Un template e un prompt di sistema risolvono problemi diversi. Il prompt di sistema contiene le regole valide per ogni messaggio di una conversazione o di un'app: il personaggio, il tono, ciò che l'assistente non deve mai fare. Un template contiene un solo compito con spazi da compilare. In un'app spesso si usano entrambi: un prompt di sistema fisso che stabilisce le regole di base e un template che costruisce ogni messaggio dell'utente.
Domande frequenti
Cos'è un template di prompt?
Un template di prompt è un prompt riutilizzabile con dei segnaposto, come [argomento] o {language}, per le parti che cambiano da un uso all'altro. Il testo fisso contiene le istruzioni che hai già testato; ogni volta compili gli spazi invece di scrivere il prompt da zero.
Come creo il mio template di prompt?
Parti da un prompt che ti ha già dato una buona risposta. Segna le parole che cambieresti per l'uso successivo, sostituisci ciascuna con uno spazio con un nome e prova il template con tre compilazioni diverse, compreso un caso insolito. Mantieni esattamente come erano le istruzioni che hanno reso buona la prima risposta.
Dove conviene salvare i template di prompt?
Ovunque tu possa copiarli in fretta: un file di note, un text expander o un gestore di snippet. Anche le app di chat hanno spazi per il testo che riusi, come le istruzioni personalizzate e le istruzioni di progetto, che si adattano meglio a regole valide per ogni messaggio che a compiti occasionali con spazi da compilare.
Come uso un template di prompt in Python?
Salva il template come stringa con campi con un nome e compilalo con str.format() o con una f-string. Con str.format(), scrivi due volte ogni parentesi graffa letterale del template ({{ e }}), per esempio quando il template contiene un esempio JSON. Metti il testo fornito dagli utenti dentro dei delimitatori, così resta separato dalle istruzioni.