Cosa può fare ChatGPT per un’azienda
Nonostante siano facilmente e ampiamente accessibili solo da poco tempo, i chatbot, che in italiano potremmo chiamare ?sistemi di Intelligenza Artificiale Generativa Conversazionale?, di cui ChatGPT &
Nonostante siano facilmente e ampiamente accessibili solo da poco tempo, i chatbot, che in italiano potremmo chiamare ?sistemi di Intelligenza Artificiale Generativa Conversazionale?, di cui ChatGPT è l?esempio più noto, fanno intravedere la possibilità di cambiamenti radicali che potrebbero influenzare molti aspetti della nostra società. Sono entità software, e quindi artificiali, in grado di comunicare con noi nelle nostre lingue, come l?italiano e l?inglese, con un ricco vocabolario e mostrando una solida comprensione dei contenuti, una grande eloquenza, abilità di argomentazione e accesso a un?enorme quantità di informazioni. Chiunque abbia avuto esperienza nell?interazione con un chatbot può attestare questa sorprendente novità.
Dopo la sciagurata separazione tra cultura letteraria e cultura tecnico-scientifica, i chatbot ci riportano a un inatteso scenario in cui entità tecnologiche ci invitano a sviluppare capacità di dialogo che finora avremmo considerato parte del retaggio umanistico
Ma come riescono ChatGPT o altri chatbot, come Copilot di Microsoft, Gemini di Google, Claude di Anthropic, tutti esempi di sistemi basati su reti neurali artificiali oggi note come Large Language Model (LLM), a dialogare in modo così sofisticato? Si tratta di sistemi software il cui comportamento non è determinato da regole di programmazione preordinate, ma da un processo di addestramento, spesso lungo e complesso, realizzato facendoli interagire appropriatamente con grandi insiemi di dati. Insomma, il comportamento che osserviamo nei chatbot è il risultato di addestramento e non di programmazione. Anche coloro che non sono interessati a comprendere il funzionamento di una rete neurale possono cogliere il significato e le implicazioni di questo nuovo paradigma. Infatti, mentre sappiamo come un sistema software programmato reagisce agli stimoli, perché le sue regole di comportamento sono esplicite nel codice che i programmatori hanno scritto, interagendo con un chatbot non si conoscono a priori le risposte che produrrà, che dipendono non solo dalla struttura della rete neurale su cui è basato, ma anche dal suo addestramento e da come gli poniamo le domande.
Per interagire in modo efficace con un chatbot è quindi importante imparare non solo, ovviamente, a fargli le domande giuste, ma anche a fargliele nel modo giusto: quanto è opportuno essere specifici nelle richieste? Sono utili esempi o suggerimenti? È più efficace spiegare tutto subito o un passo per volta? E così via. Come si vede bene, questa competenza, che si è cominciata a chiamare ?prompt engineering? (letteralmente ?ingegneria delle domande?), al di là del nome ha una connotazione prevalentemente linguistica, psicologica e relazionale. Insomma, in riferimento alla sciagurata separazione tra cultura letterario-umanistica e cultura tecnico-scientifica, i chatbot ci immergono in un inatteso scenario in cui entità tecnologiche ci invitano a sviluppare capacità di dialogo che finora avremmo considerato parte della cultura umanistica. È certamente ancora troppo presto per prevedere se questo produrrà una almeno parziale rivalorizzazione della parola scritta, ma è una speranza non completamente infondata. Quante volte, in questi mesi, abbiamo ascoltato e letto di resoconti di interazioni con chatbot che si concludevano con ?Tutto qui? Sono capaci solo di risposte generiche!? E ci siamo chiesti: ?Ma non sarà stato perché erano generiche le domande a cui si chiedeva loro di rispondere?? È vero che si stanno sviluppando tecniche specifiche di prompt engineering, che mostrano la loro efficacia nel far sì che i chatbot producano informazione di miglior qualità, ma a ben vedere si tratta di chiarificazioni di metodi di conversazione che ogni essere umano almeno intuitivamente conosce. Prendiamo il caso di una delle tecniche più note, ma anche più ovvie, il cosiddetto ?chain of thought? (letteralmente ?catena di pensiero?), che suggerisce di interagire con un chatbot non solo ponendo domande, ma chiedendogli di spiegare i passi seguiti per giungere alla risposta.
Per vedere più facilmente l?efficacia di questa tecnica, mettiamolo alla prova con un LLM meno sofisticato di ChatGPT (Mistral OpenOrca 7B, un sistema ?aperto? eseguibile anche sul proprio calcolatore). Ecco lo scambio domanda-risposta iniziale.
Essere umano: Ho comprato 10 mele e ne ho data una a ciascuno dei miei 3 figli per la loro merenda. Ne ho poi date 2 a un vicino a cui servivano per fare una torta. Ne ho comprate altre 5. Quante mele ho ora?
Chatbot: Hai 17 mele in casa.
La risposta è ovviamente sbagliata. Riproviamo con un nuovo dialogo e ora chiedendo al chatbot di essere esplicito nella sua risposta.
Essere umano: Ho comprato 10 mele e ne ho data una a ciascuno dei miei 3 figli per la loro merenda. Ne ho poi date 2 a un vicino a cui servivano per fare una torta. Ne ho comprate altre 5. Quante mele ho ora? Rispondi spiegando passo per passo il ragionamento che fai per giungere alla soluzione.
Chatbot: Hai acquistato inizialmente 10 mele e ne hai distribuite una a ciascuno dei tuoi 3 figli (3×1=3). Quindi, sono rimaste 10 – 3 = 7 mele. Poi ne hai date 2 al tuo vicino per fare una torta, quindi le mele erano 7 – 2 = 5. Alla fine, hai acquistato altre 5 mele, portando il totale a 5 + 5 = 10. Quante mele hai ora? La risposta è che hai 10 mele. In questo caso, ho utilizzato un ragionamento passo per passo: ho contato le mele iniziali, quelle date ai figli e al vicino e poi quelle acquistate in aggiunta. La risposta finale è stata di avere 10 mele complessivamente.
Il prompt engineering è una competenza finalizzata ad ottenere un comportamento desiderato da un chatbot, per adattarlo ai nostri scopi e in accordo ai nostri dati e documenti. Sempre più spesso, l?obiettivo principale di coloro che esplorano le potenzialità dei chatbot nell?ambito della propria organizzazione è di crearne una versione personalizzata, in grado di rispondere a esigenze specifiche dell?organizzazione stessa. Prendiamo per esempio il caso di un?azienda che desidera utilizzare un chatbot per supportare i servizi commerciali, sostenendo conversazioni che richiedono informazioni specifiche dell?azienda, come dettagli su prodotti o servizi o fornendo i riferimenti corretti di una certa persona o funzione aziendale, a partire da una determinata domanda. Quale metodo applicare per ottenere risultati appropriati è una delle domande su cui si sta più sperimentando recentemente: proponiamo qui una prima sintesi, per ?non tecnici?.
Come possiamo, dunque, mettere un chatbot nella condizione di rispondere a domande che richiedano la conoscenza di documenti non pubblici, che si suppone non gli siano stati fatti leggere in precedenza? I chatbot che utilizziamo sono pre-addestrati su un insieme di moltissimi documenti chiamato ?training set?. Tipicamente l?addestramento include anche una seconda fase, chiamata ?fine tuning?, in cui si adatta il chatbot a compiere specifiche attività. Nel caso di ChatGPT, con il fine tuning gli si è insegnato a dialogare in modo socialmente appropriato, aspetto che si è rivelato una delle chiavi del suo successo. Chi vuole personalizzare il comportamento di un chatbot ben pre-addestrato e fine tuned può quindi oggi cominciare a esplorare strategie per adattarne il comportamento a compiti specifici, basati sul contenuto di nuovi documenti.
Alla base della molteplicità di opzioni disponibili c?è il fatto che, almeno per ora, le memorie a lungo e a breve termine dei chatbot sono mantenute separate. In pratica, il pre-addestramento e il fine tuning intervengono sulla memoria a lungo termine (ciò che è caratterizzato in particolare dal numero dei parametri della rete neurale, dell?ordine delle centinaia di miliardi nel caso di ChatGPT), che però non viene modificata dal contenuto dei dialoghi, mantenuto nella memoria a breve termine, una per ogni dialogo e che alla fine di ogni dialogo si azzera. Questo fa sì che un chatbot adatti il suo comportamento durante ogni dialogo, ma poi una volta terminato si dimentichi di quello che ha imparato (si tratta perciò di un?importante differenza con gli esseri umani, che invece hanno una memoria dinamica che consente di continuare a imparare dalle esperienze quotidiane).
In conseguenza della separazione tra memoria a lungo e a breve termine, i metodi sviluppati finora per personalizzare il comportamento di un chatbot intervengono o sulla memoria a lungo termine o su quella a breve termine. Nel primo caso, si prosegue il fine tuning dell?LLM, facendogli leggere questa volta i nostri documenti. Questa è però un?operazione di non così ovvio successo, perché richiede di modificare i valori dei tanti parametri della rete per far sì che essa riesca a gestire con particolare evidenza i nostri documenti, che sono plausibilmente una minuscola parte dell?intera informazione su cui è stata addestrata: un?impresa costosa e che gli stessi gestori dei chatbot considerano problematica e generalmente sconsigliano. Si stanno perciò sperimentando metodi alternativi di fine tuning, chiamati di ?Parameter-Efficient Fine Tuning?, attualmente il più noto dei quali si chiama ?Low Ranking Adaptation? (LoRA), che prevedono di non modificare la rete già addestrata, ma di affiancarle una seconda rete, molto più piccola e quindi, appunto, più semplice da addestrare con i propri documenti.
In alternativa, si può intervenire direttamente sulla memoria a breve termine, con il vantaggio di non dover fare alcun genere di addestramento, ma con il problema di dover sempre introdurre nel prompt di ogni conversazione l?informazione necessaria. Se si tratta, per esempio, di un singolo e non troppo lungo documento, si può operare in modo manuale, caricando il documento prima di cominciare la conversazione o addirittura semplicemente con un copia-e-incolla del testo, dunque, costruendo un prompt del tipo ?Tenendo conto di questa informazione
È interessante che, nonostante i pochi mesi di ?vita sociale? dei chatbot, si stiano già affrontando questioni di evidente rilevanza applicativa, come, appunto, la possibilità di personalizzare il loro comportamento in riferimento a documenti propri, garantendo nello stesso tempo qualità delle risposte, costi contenuti e riservatezza dei dati.
ChatGPT ci spiega come personalizzare un chatbot
(Dialogo generato con GPT-4 di OpenAI)
Essere umano: Vorrei che mi proponessi uno schema, comprensibile anche a una persona senza competenze specifiche di machine learning, che riassume le principali opzioni per far sì che un chatbot basato su un LLM abbia un comportamento adattato alle esigenze di una particolare organizzazione. Per ogni opzione, dovresti indicarmi un esempio applicativo significativo e specificare quali risorse sono necessarie per attuare l?opzione in questione. Rimani però generico quanto agli eventuali prodotti commerciali: presenta solo l?architettura concettuale di ogni opzione.
Chatbot: Certamente, posso fornirti uno schema generico che riassume le principali opzioni per personalizzare un chatbot basato su un Large Language Model (LLM) per rispondere alle esigenze specifiche di un?organizzazione. Ecco una panoramica delle opzioni principali, con esempi applicativi e le risorse necessarie:
1. Pre-Training Personalizzato
Descrizione: si addestra l?LLM da zero o si modifica un modello preesistente utilizzando un dataset specifico dell?organizzazione per migliorare la sua capacità di comprendere e rispondere in contesti specifici.
Esempio Applicativo: un?azienda farmaceutica potrebbe addestrare un LLM con la letteratura medica e le proprie ricerche per assistere nel rispondere a domande complesse sui propri prodotti.
Risorse Necessarie:
? Dataset ampio e specifico del settore
? Potenza computazionale elevata per il training
? Esperti di data science e machine learning
2. Fine-Tuning
Descrizione: si affina un modello LLM preesistente utilizzando un dataset minore, ma altamente specifico per migliorare le performance del modello in scenari specifici dell?organizzazione.
Esempio Applicativo: un ente turistico potrebbe utilizzare il fine-tuning per addestrare un LLM con informazioni specifiche sulla propria regione per fornire risposte dettagliate e personalizzate ai turisti.
Risorse Necessarie:
? Dataset specifico per il fine-tuning
? Accesso a un modello LLM pre-addestrato
? Specialisti in machine learning per gestire il processo di fine-tuning
3. Transfer Learning con Adattamenti Specifici
Descrizione: si utilizza un modello LLM generale e si adattano le sue risposte tramite tecniche di transfer learning, spesso attraverso moduli aggiuntivi che interpretano o modificano le risposte del modello base.
Esempio Applicativo: un?azienda di supporto clienti potrebbe implementare un LLM generale per rispondere a domande frequenti, con un modulo aggiuntivo che utilizza il contesto aziendale per personalizzare le risposte.
Risorse Necessarie:
? Modello LLM generico
? Sviluppatori software per creare moduli aggiuntivi
? Dataset di training per moduli specifici
4. Interfaccia di Personalizzazione dell?Utente
Descrizione: si fornisce agli utenti un?interfaccia che permette loro di personalizzare il comportamento del chatbot secondo le proprie necessità specifiche, ad esempio, selezionando settori di interesse o specificando il tono delle risposte.
Esempio Applicativo: un?Università potrebbe offrire ai propri studenti un chatbot che si adatta per fornire risposte in base al corso di studi dello studente e alle sue preferenze personali.
Risorse Necessarie:
? Piattaforma con capacità di personalizzazione utente
? Interfaccia utente amichevole
? Supporto IT continuo per mantenimento e aggiornamenti
5. Feedback Continuo e Apprendimento Incrementale
Descrizione: il sistema è dotato di meccanismi per raccogliere feedback dagli utenti e migliorare progressivamente, adattando le sue risposte in base alle interazioni precedenti.
Esempio Applicativo: un servizio di assistenza clienti online potrebbe evolvere costantemente il suo chatbot per rifinire le risposte basate sul feedback e le interazioni passate con i clienti.
Risorse Necessarie:
? Sistema di raccolta e analisi del feedback
? Capabilità [sic] di aggiornamento e apprendimento incrementale del modello
? Team di analisti per monitorare e guidare l?evoluzione del chatbot
Questo schema fornisce un panorama delle principali tecniche per personalizzare un chatbot basato su LLM, rendendolo adatto a specifici contesti organizzativi, senza entrare nei dettagli di soluzioni commerciali particolari, concentrando l?attenzione sull?architettura concettuale di ogni opzione.
Essere umano: Non sono sicuro di capire come si potrebbe realizzare concretamente la quarta opzione: puoi spiegarmelo?
Chatbot: Certamente, posso fornire una spiegazione più dettagliata su come realizzare concretamente la quarta opzione, ovvero l?interfaccia di personalizzazione dell?utente per un chatbot basato su un Large Language Model (LLM).
Passaggi per la Realizzazione di un?Interfaccia di Personalizzazione dell?Utente
1. Definizione delle Opzioni di Personalizzazione
Prima di tutto, è necessario decidere quali aspetti del chatbot gli utenti possono personalizzare. Questi potrebbero includere:
? Il tono della conversazione (formale, informale, tecnico, amichevole)
? Le aree di interesse o competenza (per esempio, in un?università, potrebbero essere i vari dipartimenti o corsi di studio)
? Preferenze linguistiche o regionali
? Impostazioni relative alla privacy e alla frequenza delle comunicazioni
2. Sviluppo dell?Interfaccia Utente
Dopo aver definito le opzioni di personalizzazione, il passo successivo è sviluppare un?interfaccia utente che sia facile da usare. Questa interfaccia permetterà agli utenti di:
? Selezionare le loro preferenze tramite formulari, menu a tendina, o interfacce di tipo chat
? Salvare e modificare le loro scelte in qualsiasi momento
? Visualizzare un?anteprima di come queste scelte influenzano le risposte del chatbot
3. Integrazione delle Preferenze nell?LLM
Le preferenze degli utenti devono essere integrate nel sistema del chatbot in modo che influenzino le risposte fornite. Ciò può essere realizzato attraverso:
? Script di pre-elaborazione che adatta le query inviate al modello LLM in base alle preferenze dell’utente
? Moduli di personalizzazione che modificano le risposte del LLM prima che vengano visualizzate all?utente, assicurando che riflettano le impostazioni selezionate
4. Storage e Gestione delle Preferenze
Le preferenze degli utenti devono essere memorizzate in modo sicuro e accessibile. Ciò implica:
? Utilizzo di un database per conservare le preferenze degli utenti
? Sviluppo di API per interrogare e aggiornare le preferenze utente
? Implementazione di misure di sicurezza per proteggere i dati degli utenti
5. Test e Iterazione
Prima del lancio ufficiale, il sistema personalizzato deve essere testato accuratamente per assicurarsi che le preferenze degli utenti siano correttamente applicate alle risposte del chatbot. Questo include:
? Test di usabilità per assicurarsi che l?interfaccia sia intuitiva
? Test funzionali per verificare che le preferenze influenzino le risposte come previsto
? Raccolta e analisi di feedback per iterare e migliorare il sistema
6. Implementazione e Supporto Continuo
Dopo il lancio, è importante monitorare l?utilizzo del sistema e fornire supporto agli utenti per aiutarli a gestire le loro preferenze. Questo può includere:
? Assistenza clienti per risolvere eventuali problemi
? Aggiornamenti periodici del sistema per aggiungere nuove funzionalità o migliorare quelle esistenti
Implementando questi passaggi, un?organizzazione può fornire un?esperienza altamente personalizzata ai suoi utenti, aumentando l?efficacia del chatbot nel soddisfare le esigenze specifiche di ogni individuo.
Essere umano: Dal punto di vista del LLM, si tratta dunque di adattare il prompt in funzione delle condizioni di personalizzazione?
Chatbot: Esattamente, l?adattamento del prompt in base alle condizioni di personalizzazione è una delle tecniche chiave per integrare le preferenze dell?utente in un chatbot basato su un Large Language Model (LLM). Ecco come funziona e perché è importante:
Come si Adatta il Prompt
L?adattamento del prompt consiste nel modificare la richiesta inviata al LLM in modo che rifletta le preferenze e le esigenze specifiche dell?utente. Questo può includere:
? Inclusione di Keywords Specifiche: Se un utente ha specificato un?area di interesse o competenza, il prompt può includere termini o frasi chiave legati a quel settore. Ad esempio, se un utente è interessato all?arte moderna, il prompt potrebbe essere arricchito con frasi come ?nell?ambito dell?arte moderna? o ?come interpretare un?opera d?arte moderna?.
? Adattamento del Tono e dello Stile: Se l?utente preferisce un tono formale, il prompt può essere formulato in maniera più strutturata e professionale; se preferisce un tono amichevole, si possono utilizzare espressioni colloquiali e un approccio più diretto.
? Considerazioni Culturali e Linguistiche: Se un utente indica una preferenza per comunicazioni in una certa lingua o dialetto, il prompt può includere specificità linguistiche o culturali che rendono la risposta più pertinente e accogliente per quel particolare utente.
Perché è Importante
L?adattamento del prompt è fondamentale per diverse ragioni:
? Precisione: Personalizzare il prompt aumenta la probabilità che le risposte del LLM siano rilevanti e utili per l?utente, migliorando l?accuratezza delle informazioni fornite.
? Engagement dell?Utente: Un chatbot che risponde in modo pertinente e personalizzato può aumentare l?engagement degli utenti, facendoli sentire compresi e valorizzati.
? Efficienza: Personalizzare i prompt può aiutare a ridurre il numero di turni di conversazione necessari per arrivare a una soluzione, poiché il modello ha già delle linee guida chiare su cosa l?utente desidera discutere o ottenere.
Implementazione Tecnica
Tecnicamente, questo si realizza attraverso un layer di gestione dei prompt che opera tra l?interfaccia utente e il modello LLM stesso. Questo layer può essere programmato per interpretare le preferenze dell?utente e modificare dinamicamente il prompt prima di inviarlo al modello. Questo processo assicura che ogni interazione con l?utente sia costruita su misura per le sue esigenze, senza richiedere una ristrutturazione completa del modello di base.
In conclusione, l?adattamento dei prompt è un metodo efficace per personalizzare l?esperienza dell?utente con un chatbot basato su LLM, rendendo ogni interazione più pertinente e soddisfacente.
Essere umano: Grazie per queste informazioni.
Chatbot: Di nulla, sono contento di essere stato d?aiuto! Se hai altre domande o hai bisogno di ulteriori chiarimenti, non esitare a chiedere. Buona fortuna con il tuo progetto di chatbot!