Tecniche avanzate di Prompt Engineering

Passiamo ora a tecniche più avanzate che estendono i principi base e permettono di affrontare compiti complessi o migliorare ulteriormente la qualità delle interazioni con l'AI. Queste strategie spesso implicano prompt più strutturati, composizione di più passi, o l’uso creativo del modello stesso per ottimizzare le risposte.

Zero-Shot vs Few-Shot Prompting

Abbiamo già menzionato l'uso di esempi all’interno del prompt (few-shot). Una strategia avanzata consiste nel saper dosare e scegliere quando usare l’approccio zero-shot (nessun esempio, solo istruzioni) e quando invece ricorrere a few-shot (includere alcune coppie domanda-risposta di esempio). In generale:

  • Zero-shot è utile per richieste semplici o per modelli molto capaci: diamo solo la domanda o istruzione e confidiamo che l’LLM sappia già come svolgere il compito. È rapido e non consuma token extra.
  • Few-shot diventa utile quando il task è sfumato, o il formato di risposta desiderato è poco usuale, o il modello tende a travisare la richiesta. Inserendo 2-5 esempi pertinenti, forniamo al modello una mini-“esperienza” da cui attingere. Ad esempio, per far generare titoli di notizie, potremmo includere alcuni esempi di titolo dati certi fatti, così da far capire al modello lo stile di titolazione.

La scelta tra zero-shot e few-shot può essere vista come un trade-off tra brevità e controllo. Una buona prassi avanzata è iterare: provare prima zero-shot (prompt minimale) e osservare il risultato; se l’output non soddisfa, aggiungere esempi concreti e riprovare. In contesti di produzione, c’è anche chi automatizza questo tentativo incrementale, fino a trovare un prompt sufficientemente robusto.

Vale la pena notare che, all’aumentare della capacità dei modelli, spesso sono necessari meno esempi: modelli istruiti su dataset enormi sanno già generalizzare molti compiti. Tuttavia, per compiti di nicchia o formati altamente specifici, il few-shot rimane uno strumento potentissimo in mano al prompt engineer. Saper costruire buoni esempi (rilevanti, vari e rappresentativi dei casi d’uso reali) è dunque parte dell’abilità avanzata di prompt engineering.

Chain-of-Thought: Ragionamento Passo-Passo

Molti LLM mostrano capacità di ragionamento sorprendentemente migliori se incoraggiati a esplicitare un ragionamento passo-passo prima di fornire la risposta finale. Questo approccio, denominato Chain-of-Thought (CoT) prompting, prevede che il prompt induca il modello a “pensare ad alta voce”, simulando una catena logica di deduzioni. Un esempio classico: per una domanda di aritmetica o logica complessa, invece di chiedere direttamente la risposta, si può dare il prompt

"Risolvi il seguente problema passo dopo passo. Domanda: [testo del problema]. Spiega il ragionamento e poi fornisci la risposta finale."

Oppure più semplicemente aggiungere alla fine della domanda la frase "Spiega il tuo ragionamento passo-passo prima di rispondere". Questo spesso fa sì che il modello esplori la soluzione in modo più accurato, riducendo errori. Studi hanno dimostrato che aggiungere frasi come “Let’s think step by step” al prompt può migliorare significativamente le prestazioni in compiti che richiedono deduzione.

Ci sono due varianti principali:

  • Zero-shot CoT: dove si aggiunge solo un'istruzione generica a fare ragionamenti (come negli esempi sopra). Il modello genera un ragionamento seguito dalla risposta.
  • Few-shot CoT: dove nel prompt si includono uno o due esempi completi di domanda -> (ragionamento) -> risposta, mostrando al modello esattamente come strutturare il processo. Questa tecnica tende a essere ancora più efficace, ma ovviamente richiede di fornire esempi di qualità.

Una volta che il modello fornisce il ragionamento e la risposta, l'utente può decidere di verificare o filtrare la catena di ragionamento. Un uso avanzato infatti è quello di estrarre solo l'output finale dopo essersi assicurati che il ragionamento abbia senso. Ci sono approcci di self-consistency dove si chiedono al modello più ragionamenti indipendenti sullo stesso quesito e poi si prende la risposta più ricorrente, assumendo che la maggioranza sia corretta. È un metodo per mitigare errori occasionali nelle catene di pensiero.

In sintesi, CoT prompting sfrutta la capacità latente del modello di seguire una logica interna: esplicitandola nel prompt, otteniamo risposte più giustificate e affidabili nei compiti complessi rispetto al caso in cui il modello dia direttamente un output finale senza mostrare come ci è arrivato.

Prompt Chaining e Multi-Turn Prompting

Non sempre un singolo prompt può portare direttamente alla risposta definitiva, specie per compiti articolati. Entra qui in gioco la tecnica del prompt chaining: invece di un unico prompt monolitico, si suddivide il problema in più passi, ciascuno risolto con un prompt (magari allo stesso modello) e le cui uscite vengono concatenate o usate come input per il passo successivo. In pratica, costruiamo una catena di prompt che porta gradualmente alla soluzione completa.

Ad esempio, immaginiamo di dover rispondere a una domanda complessa estrapolando informazioni da un testo lungo e poi formulando un’opinione. Potremmo:

  1. Primo prompt: chiedere al modello di riassumere o estrarre i fatti chiave dal testo lungo.
  2. Secondo prompt: fornire il riassunto ottenuto e chiedere al modello di analizzarlo o trarne conclusioni.
  3. Terzo prompt: prendere le conclusioni e chiedere al modello di formulare la risposta finale ben strutturata.

Ogni anello della catena svolge un sotto-compito gestibile, riducendo il carico cognitivo sul modello in ogni fase. Questa metodologia è simile all’idea di pipeline: si alimenta progressivamente l’AI con i risultati intermedi. Un sinonimo è multi-turn prompting, dove ciascun turno è un prompt che tiene conto di quanto avvenuto in precedenza.

Nell’implementazione pratica, prompt chaining può essere orchestrato manualmente da un umano o automaticamente da un agente software. Librerie come LangChain e vari framework per agenti AI (in cui il modello può chiamare funzioni o mantenere un contesto di conversazione) rendono più agevole questo tipo di interazione a più step. Per esempio, un LLM agent potrebbe autonomamente decidere di generare sub-domande, ottenere risposte (magari consultando un tool esterno), e poi sintetizzare il tutto: in fondo è una forma molto evoluta di prompt chaining dove il modello stesso gestisce i prompt intermedi.

Questa tecnica richiede pianificazione da parte del prompt engineer: bisogna progettare attentamente la suddivisione in passi e scrivere prompt appropriati per ciascun passo, mantenendo la coerenza del contesto tra un passo e l’altro. Quando ben applicata, consente di affrontare problemi complessi con maggiore affidabilità, trasformando un compito che il modello fallirebbe se posto in un colpo solo, in una sequenza di compiti più semplici che il modello può risolvere uno dopo l’altro.

Metaprompting e Auto-Refinement

Un’area affascinante del prompt engineering avanzato è l’uso del modello stesso per migliorare o generare prompt. Questo si articola in diverse idee:

  • Metaprompting: consiste nel chiedere al modello di ornirci esso stesso un prompt o consigli su come interrogarlo. Ad esempio, potremmo dire: "Ecco la descrizione di ciò che voglio ottenere: [...]. Suggerisci un prompt appropriato che potrei darti per ottenere questo risultato." In alcuni casi, il modello potrebbe proporre formulazioni alternative della domanda che poi noi possiamo effettivamente usare. Si tratta di un modo creativo per sfruttare la conoscenza implicita del modello su come è stato addestrato e cosa funziona meglio.
  • Self-reflection e correzione: qui il modello viene istruito a valutare e migliorare la propria risposta. Un esempio: dopo una risposta, si potrebbe aggiungere un secondo prompt del tipo "Riesamina la tua risposta precedente. Ci sono errori o informazioni mancanti? Se sì, correggi ed espandi la risposta." Questa sorta di loop consente al modello di ripensare alla domanda iniziale avendo come base la propria prima risposta, spesso identificando incongruenze o migliorando i dettagli (approccio “Reflexion” in letteratura). È un po’ come chiedere un secondo parere, ma dallo stesso modello in due momenti diversi.
  • Chiedere spiegazioni o criteri: un’altra variante è utilizzare il modello come controllo qualità delle sue stesse risposte. Ad esempio: "Spiega perché la tua risposta soddisfa la domanda e se ci sono aspetti che potresti aver tralasciato". Questo forza il modello a ripercorrere il legame tra domanda e risposta e può portarlo a evidenziare eventuali lacune che possiamo poi colmare in un prompt successivo.
  • Automated Prompt Engineer (APE): alcuni approcci di ricerca puntano addirittura a far generare e selezionare automaticamente i migliori prompt a un modello. In questi casi si dà al modello un compito e gli si chiede di produrre diversi possibili prompt che potrebbero risolverlo, quindi di valutare (o eseguire) ciascuno e scegliere il migliore. Si tratta di frontiere sperimentali, ma mostrano come una parte del prompt engineering potrebbe in futuro essere delegata alle AI stesse.

Queste tecniche metaprompting e self-refinement rientrano in un uso più iterativo del prompt engineering, dove la distinzione tra prompt e risposta diventa sfumata: l’interazione può evolvere in una collaborazione con l’AI per raggiungere l’output ottimale. Naturalmente serve cautela: il modello non ha una vera “volontà” di correggersi e non sempre riconosce i propri errori, ma opportunamente guidato può sorprendere per la capacità di autovalutazione.

Prompting con Strumenti e Azioni (ReAct)

Un’altra tecnica avanzata è integrare il prompting con la capacità del modello di compiere azioni esterne o di usare strumenti, usando un pattern spesso chiamato ReAct (Reason + Act). In questo schema, il prompt è strutturato in modo che il modello produca sia ragionamenti sia comandi da eseguire.

Ad esempio, in un contesto in cui il modello può chiamare un’API o effettuare una ricerca, il prompt può istruire:

"Pensa al problema, se hai bisogno di maggiori informazioni esplicitalo con un’azione di ricerca, altrimenti fornisci la soluzione. Formato: 'Pensiero: ... \n Azione: ...'".

Questo è solo un esempio semplificato, ma illustra come un prompt possa essere progettato per incorporare fasi di ragionamento e azione.

Il ruolo del prompt engineer qui è definire chiaramente il protocollo (ad es. usare tag come "Pensiero" e "Azione", o un determinato formato) e magari dare un esempio di come procedere. Tecniche come ReAct permettono di utilizzare il modello in modo interattivo e iterativo con l’ambiente esterno, estendendo enormemente le sue capacità oltre la conoscenza statica.

Si tratta di strategie avanzate spesso implementate in agenti complessi, e richiedono prompt molto ben curati per evitare che il modello faccia mosse sbagliate (ad esempio tentando un’azione non prevista o dando una risposta finale prematuramente). Tuttavia, quando funzionano, consentono al modello di rispondere a domande altrimenti impossibili (perché può recuperare informazioni aggiornate) e di seguire procedure passo-passo semiautonome. In un certo senso, spingono il prompt engineering al confine con la programmazione: il prompt diventa quasi un piccolo programma in linguaggio naturale che orchestra logica e chiamate a strumenti.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Guida al prompt engineering