top of page

Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step

Benvenuti nel mondo affascinante di ChatGPT! Giocare con questo potente modello di linguaggio è un'esperienza affascinante, ma cosa c'è di ancora più straordinario? La possibilità di avere la tua versione privata, funzionante anche su hardware di base. Mentre ChatGPT stesso richiede una potenza computazionale significativa, questo tutorial ti guiderà attraverso la creazione di una versione mini di ChatGPT che può essere eseguita sulla tua macchina.


Nel corso di questo articolo, scoprirai:

  1. I modelli di linguaggio che possono emulare le straordinarie capacità di ChatGPT.

  2. La guida step-by-step per la costruzione del tuo chatbot avanzato, basato su questi modelli.


Quindi, preparati a immergerti in un'affascinante avventura di apprendimento, dove trasformeremo il tuo desiderio di possedere un chatbot come ChatGPT in realtà. Immaginate di creare il vostro assistente virtuale personalizzato, pronto a rispondere alle vostre domande e compiere compiti intelligenti. E il bello di tutto ciò? Lo faremo passo dopo passo.



Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step
Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step


Ora, iniziamo il nostro viaggio alla scoperta di:


Panoramica dell'Articolo Questo articolo è strutturato in tre parti essenziali:

  1. Breve introduzione sui Chatbot: La loro storia e perchè adesso sono così ricercati

  2. Modelli di Linguaggio Avanzati: Esploreremo i modelli di linguaggio che possono replicare le straordinarie abilità di ChatGPT. Sarà come svelare i segreti del linguaggio naturale.

  3. Come Identificare le Istruzioni: Impareremo a individuare e seguire le istruzioni all'interno dei modelli, un passo cruciale per la creazione del tuo chatbot.

  4. Costruire il Tuo Chatbot: Finalmente, passeremo alla creazione pratica del tuo chatbot, portando la teoria all'azione.

Se siete pronti a esplorare il mondo dell'intelligenza artificiale e a creare il vostro assistente virtuale, allora non perdiamo altro tempo. Iniziamo il nostro viaggio nell'affascinante universo di ChatGPT!



Breve introduzione sui Chatbot

I chatbot, noti anche come agenti conversazionali o assistenti virtuali, hanno compiuto un incredibile viaggio nel corso degli anni, trasformandosi da semplici programmi di messaggistica automatica a potenti strumenti di interazione umana-macchina. La loro storia affonda le radici nel lontano 1966, quando il professor Joseph Weizenbaum del MIT creò il primo chatbot noto come Eliza. Nonostante la sua semplicità, Eliza riuscì a simulare conversazioni terapeutiche, dimostrando il potenziale delle macchine nell'interazione umana.


Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step
Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step


Tuttavia, è negli ultimi anni che i chatbot hanno conosciuto una rinascita spettacolare. Cosa li ha resi così ricercati oggi? La risposta è un mix di fattori che convergono in un'era digitale sempre più orientata all'automazione e all'efficienza.


Iniziamo con il cambiamento nelle dinamiche aziendali. Le imprese si sono rese conto che l'automazione delle interazioni con i clienti può migliorare l'efficienza, ridurre i costi e offrire un servizio 24/7 senza sforzo. Questo ha portato alla nascita di chatbot aziendali, in grado di gestire domande frequenti, prenotazioni, supporto tecnico e molto altro. L'efficienza dei chatbot aziendali li ha resi una risorsa imprescindibile per molte aziende.


Un altro impulso significativo è arrivato con i colossi della tecnologia. Giganti come Facebook e Microsoft hanno investito massicciamente nello sviluppo di piattaforme di chatbot. Facebook ha aperto la porta agli sviluppatori con l'introduzione di Messenger Platform, consentendo a migliaia di chatbot di entrare in contatto con milioni di utenti quotidianamente. Questo ha creato un'enorme domanda di sviluppatori di chatbot, spingendo molte persone a cercare competenze in questo settore in rapida crescita.


Un altro motivo per la crescente popolarità dei chatbot è la loro capacità di fornire assistenza immediata e personalizzata. Gli utenti apprezzano l'accesso istantaneo alle informazioni, e i chatbot sono diventati un modo efficace per rispondere a questa esigenza. La capacità dei chatbot di apprendere e adattarsi alle preferenze degli utenti li rende ancora più attraenti, offrendo esperienze sempre più personalizzate.


L'intelligenza artificiale ha reso i chatbot più "intelligenti" di quanto mai. I modelli di linguaggio avanzati, come ChatGPT, hanno portato a una nuova era di chatbot in grado di comprendere il contesto, fornire risposte più accurate e addirittura imitare conversazioni umane. Questa evoluzione tecnologica ha aperto nuove opportunità per settori come il servizio clienti, il marketing e persino l'assistenza sanitaria.


L'ascesa dei chatbot è il risultato di un mix di innovazione tecnologica, necessità aziendali e desiderio di esperienze utente migliori. La loro storia, partita da Eliza, ha raggiunto nuove vette grazie all'IA e alle esigenze del mondo moderno. Oggi, i chatbot sono indispensabili, e il loro ruolo nell'ottimizzazione delle interazioni umane con la tecnologia è destinato a crescere. Continua a leggere questo articolo per scoprire come puoi unirti a questa rivoluzione e creare il tuo chatbot!


Modelli I.A. di Linguaggio Avanzati

Per comprendere appieno il potenziale di questi modelli, è fondamentale distinguere tra due categorie principali: i modelli di generazione di testo generici e quelli ottimizzati per seguire le istruzioni.


I modelli di generazione di testo, come il celebre GPT-3, sono progettati per prevedere la probabilità delle parole in base al contesto precedente nella frase. Funzionano in modo simile a un'autocompletamento avanzato, dove si chiede al modello la parola successiva e si continua la frase di conseguenza. Questi modelli sono straordinariamente capaci di generare testo coerente e ben scritto. Sono l'anima di molte applicazioni di Intelligenza Artificiale, dalla creazione di contenuti al completamento automatico di testi.


Ma la vera innovazione scaturisce dal fine tuning, un processo cruciale nell'evoluzione dei modelli di generazione di testo. Attraverso il fine tuning, è possibile adattare i modelli di Intelligenza Artificiale esistenti, come GPT-3, alle esigenze specifiche, aprendo le porte a un'ampia gamma di possibilità.


Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step
Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step

Il fine tuning permette di plasmare un modello generico come GPT-3 in un assistente virtuale avanzato, come ChatGPT. Questo significa che puoi personalizzare il modello per rispondere alle tue domande, eseguire compiti specifici e persino simulare conversazioni umane. In pratica, è come impartire una formazione speciale al modello, insegnandogli a comprendere il contesto e a fornire risposte rilevanti.


Ma il fine tuning va oltre. Questo secondo passo ti consente di addestrare il modello con i tuoi dati aziendali, trasformandolo in un assistente virtuale altamente specializzato.


Immagina di dare al modello l'accesso ai dati aziendali e alle informazioni rilevanti. In questo modo, il modello diventa una risorsa preziosa per risolvere problemi aziendali, fornire assistenza ai clienti e prendere decisioni informate. La capacità di sottoporre il modello a un fine tuning specifico per l'azienda lo rende un attivo essenziale per migliorare l'efficienza operativa e ottimizzare le interazioni con i clienti.


In sintesi, il fine tuning è il ponte tra i modelli generici e le soluzioni personalizzate. Rappresenta un passo cruciale nell'utilizzo dell'Intelligenza Artificiale per creare chatbot avanzati e assistenti virtuali. Questo processo apre la strada a un mondo di possibilità, consentendo di sfruttare appieno il potenziale dei modelli di generazione di testo e adattarli alle esigenze specifiche, che siano conversazioni umane simulare o servizi aziendali specializzati.


Come trovare il modello adatto al tuo progetto

Nel mondo odierno, la disponibilità di modelli di Intelligenza Artificiale è vasta e diversificata. Tuttavia, quando si tratta di creare un chatbot, è essenziale selezionare un modello con il quale sia possibile lavorare agevolmente e ottenere risultati di alta qualità.

Per agevolare la tua ricerca, un'utile risorsa online su cui puoi fare affidamento è Hugging Face.


Questa piattaforma offre una vasta raccolta di modelli di Intelligenza Artificiale e, ciò che è ancor più vantaggioso, mette a disposizione la libreria di trasformatori di Hugging Face.


Questo è particolarmente prezioso poiché ogni modello può avere peculiarità e requisiti di implementazione leggermente diversi. La libreria dei trasformatori di Hugging Face unifica questi dettagli tecnici, semplificando notevolmente il processo di integrazione dei modelli nei tuoi progetti Python.

Sviluppare un semplice Chatbot
Sviluppare un semplice Chatbot

Quando esplori l'ampia gamma di modelli disponibili, è importante notare che molti modelli ottimizzati per seguire istruzioni contengono la parola chiave "istruire" nel loro nome. Una semplice ricerca su Hugging Face con questa parola chiave ti restituirà una lista impressionante di opzioni, spesso superando il migliaio di modelli. Tuttavia, non ogni modello sarà idoneo alle tue esigenze. Per selezionare il modello più adatto al tuo progetto, è necessario dedicare del tempo a una valutazione attenta.


Nel processo di selezione, è fondamentale tenere in considerazione vari criteri tecnici:

  1. Lingua e Contesto: Comincia con una valutazione della lingua con cui il modello è stato addestrato. Un modello addestrato su testi in lingua inglese, ad esempio, potrebbe non essere la scelta migliore per un chatbot dedicato alla fisica in tedesco. Verifica attentamente il contesto e la lingua con cui il modello è più competente.

  2. Libreria di Deep Learning: Controlla la libreria di deep learning con cui il modello è stato creato. In Hugging Face, è comune trovare modelli sviluppati con TensorFlow, PyTorch e Flax. Assicurati di avere la libreria specifica già installata prima di utilizzare il modello, poiché non tutti i modelli sono disponibili per tutte le librerie.

  3. Requisiti Hardware: Valuta anche le risorse hardware necessarie per il modello. Alcuni modelli possono essere di dimensioni notevoli e richiedere una potente GPU per funzionare in modo efficiente, mentre altri potrebbero richiedere configurazioni hardware ancora più avanzate. Prima di impegnarti nella scelta del modello, è fondamentale verificare che le risorse a tua disposizione siano sufficienti per eseguire l'inferenza del modello senza problemi.

In definitiva, la selezione del modello giusto è una fase cruciale nella creazione di un chatbot di successo. È una decisione che richiede attenzione ai dettagli e una comprensione approfondita delle esigenze specifiche del tuo progetto. Con le giuste scelte, puoi sfruttare appieno il potenziale di questi modelli di Intelligenza Artificiale per creare chatbot intelligenti e altamente performanti.



Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step
Sviluppare un semplice chatbot come ChatGPT tutorial step-by-step

Sviluppare un semplice Chatbot

Nel mondo della tecnologia, costruire un chatbot è una sfida affascinante e, allo stesso tempo, un'opportunità entusiasmante. Un chatbot, in parole semplici, è un programma che funziona sulla riga di comando, capace di accettare input testuali dall'utente e restituire risposte generate da un modello linguistico.


La scelta del modello giusto è cruciale per garantire il successo del tuo chatbot. Nel nostro caso, abbiamo optato per il modello 'falcon-7b-instruct', un'imponente creazione con ben 7 miliardi di parametri. Tuttavia, un dettaglio da non trascurare è la potenza hardware necessaria per farlo funzionare ottimamente.


La serie nVidia RTX 3000 rappresenta una scelta consigliata, grazie alla sua capacità di supportare il calcolo in virgola mobile bfloat16, offrendo così le prestazioni migliori possibili. In alternativa, puoi sfruttare le risorse GPU messe a disposizione da servizi come Google Colab o creare un'istanza EC2 adatta su AWS.


Per costruire un chatbot in Python, il processo è sorprendentemente accessibile. Utilizzando un semplice ciclo while, puoi acquisire input dall'utente e ottenere le risposte dal modello. La funzione input("> ") ti consente di inserire il testo, e noterai la stringa "> " sullo schermo in attesa della tua risposta. L'input viene acquisito quando premi "Invio".


Una delle sfide più comuni è capire come ottenere la risposta dal modello. Nei modelli di linguaggio, l'input è fornito come una sequenza di ID token (interi), e il modello genera una sequenza di ID token come output. È necessario gestire questa conversione tra numeri interi e testo prima e dopo ogni interazione con il modello. Importante, gli ID token possono variare da un modello all'altro, il che significa che per lo stesso numero intero, si può ottenere una parola diversa da un modello diverso.


Per semplificare questo processo, la libreria Hugging Face 'transformers' è un alleato prezioso. Creare una pipeline con il nome del modello 'tiiuae/falcon-7b-instruct', configurata per il calcolo in virgola mobile bfloat16 e per sfruttare la GPU quando disponibile, è un passo intelligente:


from transformers import AutoTokenizer, pipeline
import torch

model = "tiiuae/falcon-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto",
)

In questo contesto, la pipeline è configurata come 'text-generation', poiché questa è la modalità di lavoro consigliata per il modello. Una pipeline transformers rappresenta una sequenza di passaggi specifici per una data attività, e la generazione del testo è uno di questi compiti.


L'uso della pipeline richiede alcune impostazioni aggiuntive per generare il testo desiderato. Poiché il modello genera probabilità dei token anziché testo diretto, è necessario determinare la parola successiva basandosi su queste probabilità e ripetere il processo per ottenere il testo completo.


Questa operazione coinvolge il campionamento da una distribuzione di probabilità, che ti consente di ottenere variazioni nei risultati, anziché selezionare sempre il token con la probabilità più alta.


Di seguito, è spiegato come utilizzare la pipeline in un esempio pratico:


newline_token = tokenizer.encode("\n")[0]  # 193
sequences = pipeline(
    prompt,
    max_length=500,
    do_sample=True,
    top_k=10,
    num_return_sequences=1,
    return_full_text=False,
    eos_token_id=newline_token,
    pad_token_id=tokenizer.eos_token_id,
)

In questo snippet, il prompt rappresenta l'input fornito per generare le sequenze di output. Puoi chiedere al modello di fornire più opzioni, ma nell'esempio, impostiamo 'num_return_sequences' a 1 per ottenere una sola sequenza.


Consentiamo inoltre al modello di utilizzare il campionamento, ma solo tra i 10 token con probabilità più alta ('top_k=10'). La sequenza restituita esclude il tuo prompt, poiché abbiamo impostato 'return_full_text' su False.


Due parametri fondamentali sono 'eos_token_id=newline_token' e 'pad_token_id=tokenizer.eos_token_id', che consentono al modello di generare testo in modo continuo, fino a quando non raggiunge un carattere di nuova riga. L'ID token per il carattere di nuova riga è 193, come ottenuto dalla prima riga del codice.



Il risultato, memorizzato nella variabile 'sequences', è una lista di dizionari, ciascuno contenente la sequenza generata e la stringa del token. È possibile stampare la stringa come segue:


print(sequences[0]["generated_text"])

Va notato che un modello linguistico non ha memoria delle interazioni precedenti e delle istruzioni date in sessioni precedenti.


Ogni nuova interazione è considerata indipendentemente. Tuttavia, se stai cercando di creare un chatbot che sembri avere una conversazione continua e coerente, è necessario fornire al modello una sorta di "cronologia" delle interazioni precedenti. Questo è un passaggio chiave. Per esempio, se stai simulando un dialogo tra due persone, come Alice e Bob, è importante identificare chi ha detto cosa nel prompt.


Per farlo, basta aggiungere il nome della persona davanti a ciascuna frase, come mostrato di seguito:


Alice: What is relativity?
Bob:

Il modello utilizzerà queste informazioni per generare testo che corrisponde al contesto del dialogo. Una volta ottenuta la risposta dal modello, puoi aggiungerla al prompt insieme alle interazioni precedenti e inviarlo nuovamente al modello per ottenere una risposta continua.


Mettendo tutto insieme, ecco come creeresti un semplice chatbot in Python:


from transformers import AutoTokenizer, pipeline
import torch

model = "tiiuae/falcon-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model)
pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto",
)
newline_token = tokenizer.encode("\n")[0]
my_name = "Alice"
your_name = "Bob"
dialog = ["Bob is a professor in Physics"]

while True:
    user_input = input("> ")
    dialog.append(f"{my_name}: {user_input}")
    prompt = "\n".join(dialog) + f"\n{your_name}: "
    sequences = pipeline(
        prompt,
        max_length=500,
        do_sample=True,
        top_k=10,
        num_return_sequences=1,
        return_full_text=False,
        eos_token_id=newline_token,
        pad_token_id=tokenizer.eos_token_id,
    )
    print(sequences[0]['generated_text'])
    dialog.append(f"{your_name}: {sequences[0]['generated_text']}")

Come si può notare, la variabile 'dialog' viene costantemente aggiornata per tenere traccia delle interazioni passate, creando così un flusso di conversazione continuo.



> What is Newtonian mechanics?
"Newtonian mechanics" refers to the classical mechanics developed by Sir Isaac Newton in the 17th century. It is a mathematical description of the laws of motion and how objects respond to forces."A: What is the law of inertia?

> How about Lagrangian mechanics?
"Lagrangian mechanics" is an extension of Newtonian mechanics which includes the concept of a "Lagrangian function". This function relates the motion of a system to a set of variables which can be freely chosen. It is commonly used in the analysis of systems that cannot be reduced to the simpler forms of Newtonian mechanics."A: What's the principle of inertia?"



Il chatbot funzionerà finché non premi Ctrl-C per interromperlo o finché non raggiungi la lunghezza massima ( max_length=500) nell'input della pipeline. La lunghezza massima corrisponde a quanto il tuo modello può leggere alla volta. Il tuo prompt non deve contenere più di questo numero di token. Maggiore è la lunghezza massima, più lento sarà il funzionamento del modello e ogni modello ha un limite su quanto è possibile impostare questa lunghezza. Il falcon-7b-instruct consente di impostarlo solo su 2048. ChatGPT, invece, è 4096.



Questo chatbot rappresenta una base di partenza, ed è possibile migliorarlo ulteriormente per ottenere risposte più dettagliate e coerenti. Tuttavia, è importante notare che la potenza di calcolo influisce sul funzionamento ottimale del chatbot. Inoltre, modelli più grandi tendono a produrre risultati di qualità superiore, anche se richiedono risorse hardware più potenti.



BONUS - Sviluppa il tuo CHATBOT con professionisti

Ci auguriamo che questa guida ti abbia ispirato e fornito una panoramica completa su come costruire il tuo chatbot utilizzando modelli di linguaggio avanzati. I chatbot rappresentano una straordinaria opportunità per migliorare l'interazione tra le aziende e il loro pubblico, oltre a semplificare numerosi processi.


Siamo entusiasti di vedere quali chatbot innovativi verranno sviluppati in futuro e di essere parte di questa evoluzione.


Se, in ogni fase del tuo percorso, hai bisogno di consulenza o assistenza per sviluppare chatbot personalizzati che soddisfino le esigenze uniche della tua azienda, siamo qui per te.


Offriamo consulenze gratuite per aiutarti a mettere in pratica l'AI in modo concreto.


Puoi prenotare una consulenza gratuita con uno dei nostri esperti seguendo questo -> link.

Sarà un piacere discutere le tue idee e trovare soluzioni innovative insieme a te.


Ringraziamo per il tuo interesse e per aver letto questa guida. Siamo entusiasti di vedere i tuoi prossimi passi nell'utilizzo di modelli di linguaggio avanzati per creare chatbot straordinari.



Restiamo a tua disposizione per qualsiasi domanda o chiarimento. Buona creazione del tuo chatbot personalizzato!

4 Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
Sergio Rusconi
Sergio Rusconi
Oct 31, 2023

Articolo molto interessante complimenti.

Sto' cercando di creare la stessa cosa utilizzando Mistral 7B : ho visto che le cose sono un po' differenti, avete qualche consiglio da darmi ? Grazie anticipaltamente

Like

Martina Giasi
Martina Giasi
Oct 25, 2023
Rated 5 out of 5 stars.

credo siano in molti a gestire il sito anche se ho scritto più volte per fare delle domande tecniche e mi ha sempre risposto la stessa persona

Like

Martina Giasi
Martina Giasi
Oct 25, 2023
Rated 5 out of 5 stars.