Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

I prompt: inviare input alle AI

I prompt: cosa sono e perché rappresentano l'entry point del nostro dialogo con l'intelligenza artificiale nel contesto delle applicazioni
I prompt: cosa sono e perché rappresentano l'entry point del nostro dialogo con l'intelligenza artificiale nel contesto delle applicazioni
Link copiato negli appunti

Finora siamo già riusciti a sperimentare l'innesto di Intelligenza Artificiale generativa in un programma Python sebbene non abbiamo ancora avuto modo di prendere confidenza con una componente fondamentale: i prompt. Si tratta di quella componente appositamente creata per permettere all'utente di fornire input: un po' - potremmo dire - la base della conversazione uomo-macchina.

A livello intuitivo, quindi, è chiaro che si tratta di un elemento per lo user input e volendo scandire meglio quelle che sono le sue finalità potremmo dire che un buon prompt permette di:

  • agevolare l'input contesto di informazioni
  • favorire la produzione dell'output più adeguato

Quello che quindi potrebbe, ad un primo sguardo, sembrare solo un input un po' più elaborato inizia a configurarsi come un vero e proprio strato applicativo con un ruolo ben preciso che può essere interpretato da varie componenti. Per questo si è giunti alla definizione della cosiddetta prompt engineering ovvero una branca dello sviluppo di applicazioni con Intelligenza Artificiale che aiuti a predisporre il miglior prompt possibile.

A questo punto potremmo chiederci: i prompt sono davvero necessari?. La risposta è: no, non sono indispensabili. Non lo sono in quanto gli LLM, componenti centrali di queste architetture, possono essere attivati ricevendo in input semplicemente stringhe, liste di messaggi (intesi nell'accezione delle strutture dati che LangChain offre) o il risultato di un lavoro del Prompt che è il PromptValue, tipo di oggetto su cui ragioneremo e che vedremo al lavoro con esempi pratici.

Template per implementare i prompt

Il ruolo del prompt diventa tanto più complesso quanto più articolato è il dialogo tra l'uomo e la macchina. In effetti, se siamo interessati solo a fornire una stringa ad un LLM ed ottenere da questo la generazione di un output, un prompt che faccia cose mirabolanti non ci serve affatto. Considerando però che in genere tutto ciò che arriva al modello è un mix di informazioni passate dall'utente e l'integrazione operata dalla nostra applicazione, nella normalità di casi, soprattutto quando si applica il paradigma chat, che il prompt sia uno strato più elaborato è assolutamente comprensibile.

Questo è il motivo per cui esistono i template ovvero delle strutture, personalizzabili, per implementare i prompt di cui possiamo avere bisogno nella nostra specifica applicazione. Qualcosa che impareremo a breve sarà proprio come gestire la scelta di un PromptTemplate al momento di selezionare la componenti per la nostra applicazione.

I prompt uniformano

I prompt possono quindi essere spesso considerati l'entry point del nostro dialogo con la AI, il punto di ingresso delle informazioni che attiveranno l'elaborazione da parte dell'LLM però c'è anche da considerare un aspetto: i prompt sono indipendenti dal modello che si sceglie e questo grazie alle strutture dati che essi utilizzano come input e come output.

Infatti, in generale si può dire che un prompt tratta:

  • dictionary input
  • PromptValue output

Sappiamo che con il termine dictionary si intendono delle strutture chiave/valore che usano come chiavi i nomi dei parametri e come valori i dati che vengono inseriti in tali parametri. Questo meccanismo verrà esplicitato molto spesso quando si cercherà di innestare via codice dei valori presenti nelle nostre variabili nel Template usato come base per la generazione del prompt. Il risultato in uscita del Prompt ovvero l'esito della trasformazione dell'input utente più il contesto sarà un PromptValue che non verrà limitato ad uno specifico LLM ma che potrà essere utilizzabile da più modelli. Si crea così una sorta di disaccoppiamento delle componenti prompt-modello che, come in tutte le architetture software, lascia liberi di accoppiare le componenti che si preferisce, testarle separatamente, eventualmente sostituirle e riutilizzarle.

I PromptValue sono infatti uno dei possibili formati di input sia degli LLM sia dei ChatModel pertanto possiamo pensare i nostri Prompt come delle generiche componenti che devono essere ingegnerizzate per il loro specifico scopo senza considerare a quale LLM dovranno essere destinati perché, infatti, non saranno nativamente dedicati a nessun LLM.

Insegnare all'AI con esempi

Se è vero che i modelli imparano, è altrettanto vero che il modo più efficace per insegnare è "per esempi". Per questo, come vedremo a brevissimo, esistono PromptTemplate che ricevono un elenco di esempi che serviranno a mostrare in pratica all'LLM che tipo di risposte desideriamo. Questo aspetto degli esempi è così importante che esiste un'altra componente (la vedremo), denominata ExampleSelector, che aiuterà in contesti più complessi a selezionare l'esempio di cui ha bisogno. Lo citiamo proprio perché è un elemento interessante che si innesta bene nel campo dei Prompt.

Ora non resta altro da fare quindi che iniziare a vedere come queste componenti funzionino nello specifico, quali siano le tipologie e come possiamo trarne vantaggio nelle nostre applicazioni.

Ti consigliamo anche