Tutorial: come costruire un chatbot in C# integrato con OpenAI usando Visual Studio

Tutorial: come costruire un chatbot in C# integrato con OpenAI usando Visual Studio

 

Con questo articolo tecnico inauguriamo la nostra nuova rubrica mensile “ComprESSE I: una dose mensile di coding”, attraverso la quale intendiamo rivolgerci ai programmatori per assisterli nel loro lavoro con esempi e strumenti di coding dalla rapida e pratica applicazione.

Nel primo numero che stai leggendo ti parleremo di OpenAI, organizzazione senza scopo di lucro (anche se, come vedremo, non è tutto gratis) e “casa” del famoso ChatGPT, e di come sia veramente molto semplice integrare il suo chatbot in una nostra soluzione – tipicamente un sito web aziendale – tramite linguaggio C#.

Ma prima di addentrarci nel tutorial facciamo un po’ di chiarezza e vediamo cos’è un chatbot e cosa fa. Sì, perché si potrebbe pensare che un chatbot sia soltanto un autoresponder, mentre in realtà è molto di più.

Un chatbot è un software che simula una conversazione umana in un contesto di chat o messaggistica. Il termine “chatbot” deriva dalla combinazione delle parole “chat” (riferita alla comunicazione testuale in tempo reale) e “bot” (abbreviazione di “robot”), che indicano un programma automatizzato in grado di interagire con gli utenti attraverso il testo.

Ecco cosa fa un chatbot e alcune delle sue applicazioni comuni:

  • risponde alle domande: i chatbot possono essere programmati per rispondere alle domande degli utenti su una vasta gamma di argomenti, fornendo informazioni o risorse pertinenti;
  • assiste l’utente: molti chatbot vengono utilizzati per fornire assistenza, risolvere problemi comuni o guidare gli utenti in processi specifici;
  • automatizza i compiti: i chatbot possono eseguire compiti ripetitivi e automatizzati come la prenotazione di appuntamenti, la gestione di ordini o la compilazione di moduli online;
  • fornisce consigli e raccomandazioni: alcuni chatbot sono progettati per suggerire prodotti, servizi o contenuti in base alle preferenze dell’utente o alle domande poste;
  • intrattiene: ci sono chatbot creati esclusivamente per intrattenere gli utenti, offrendo giochi, storie interattive o semplici conversazioni divertenti;
  • supporta il cliente: molte aziende utilizzano chatbot per gestire le richieste dei clienti, rispondere alle domande frequenti e offrire assistenza 24/7;
  • raccoglie dati: i chatbot possono raccogliere dati sugli utenti e sulle loro interazioni per migliorare le interazioni future e fornire analisi;
  • apprende automaticamente: alcuni chatbot utilizzano il machine learning per migliorare le proprie capacità di risposta, adattandosi alle conversazioni degli utenti nel tempo;
  • si integra con servizi: i chatbot possono essere collegati a sistemi esterni e servizi, consentendo agli utenti di eseguire azioni come monitorare il meteo, prenotare voli o ordinare del cibo direttamente attraverso la chat.

In sintesi, un chatbot è un’applicazione utilizzabile in una varietà di contesti e le cui capacità possono variare notevolmente in base alla sua progettazione e alle sue funzionalità.

Ora che è chiaro il ruolo del chatbot e in quale ambito (e per quale scopo) vogliamo farlo funzionare, passiamo al coding vero e proprio e vediamo come costruire il nostro primo chatbot personale.

Per farlo, in questo tutorial sfrutteremo le API messe a disposizione da OpenAI utilizzando Visual Studio. A proposito, la bella notizia è che esiste un supporto per sfruttare le tecnologie di OpenAI all’interno di un progetto C# sviluppato proprio con Microsoft Visual Studio, sia nella versione nativa che nella versione community.

Sommario:

  1. Otteniamo la chiave API di OpenAI
  2. Creiamo il progetto con Visual Studio
  3. Installiamo la libreria per OpenAI con NuGet
  4. Il nostro codice
  5. Testiamo il chatbot
  6. Conclusioni

 

 

1) Otteniamo la chiave API di OpenAI

Anche se utilizzare ChatGPT 3.5 sui server di OpenAI è gratuito, dobbiamo sapere che le sue API non lo sono. Ciò significa che, per prima cosa, abbiamo bisogno di creare un account e inserire la nostra carta di credito. Al momento della registrazione si ottiene un piccolo credito gratuito di 5 dollari che è sufficiente per fare un buon numero di prove, tuttavia insufficienti per far funzionare il nostro chatbot nel tempo.

Una volta registrati e impostato il sistema di pagamento, colleghiamoci dunque su https://platform.openai.com/account/api-keys e generiamo una nuova chiave API.

Salviamola in un posto sicuro (ci servirà più avanti) e diamo l’ok. 

 

2) Creiamo il progetto con Visual Studio

Come detto, faremo uso dell’ambiente di sviluppo Visual Studio di Microsoft, quindi è importante che sia installato sul computer (va bene anche in versione Community, quella usata per la realizzazione di questo tutorial).

Creiamo dunque un nuovo progetto:

creazione di un nuovo progetto con visual studio Community 2022

Successivamente scegliamo di creare un’app per la console che utilizzi C#.

scelta del tipo di progetto per il chatbot con visual studio Community 2022

Bene. A questo punto clicchiamo su “Avanti” e diamo un nome al progetto. Noi lo abbiamo chiamato “ChatbotOpenAI”. Clicchiamo su “Avanti di nuovo”.

configurazione del progetto con visual studio Community 2022

Ora selezioniamo la versione del framework .NET che desideriamo e clicchiamo su “Crea”.

scelta del framework .net con visual studio Community 2022

Fatto questo abbiamo lo “scheletro” dell’applicazione pronto e disponibile per iniziare a lavorare.

 

3) Installiamo la libreria per OpenAI con NuGet

Occorre fare una breve premessa: esistono diverse librerie per sfruttare OpenAI da C#. Le più popolari sono quelle ufficiali di Azure (anche Microsoft Azure offre le API di OpenAI integrate nel suo ecosistema) che, oltre ad Azure, supportano anche OpenAI.

Tuttavia non le useremo. In questo tutorial ci baseremo sulle librerie “Betalgo.OpenAI”, vediamo quindi in che modo renderle subito disponibili nel nostro progetto.

Come?

Prima di tutto nella parte destra dell’IDE clicchiamo con il pulsante destro del mouse su “Dipendenze” e successivamente scegliamo “Gestisci Pacchetti NuGet…”.

Questo perché Microsoft mette a disposizione il gestore di pacchetti NuGet per gestire le dipendenze.

aggiunta della libreria beltago openai con nuget

Quindi, nella schermata che appare, selezioniamo “Sfoglia” e inseriamo “Beltago.OpenAI” nella barra di ricerca.

installazione della libreria beltago openai nel progetto

Ci siamo quasi: clicchiamo sulla libreria e installiamola. A questo punto l’ambiente è pronto per ospitare ed eseguire il nostro codice di prova.

 

4) Il nostro codice

Nota importante: il codice qui presentato è puramente didattico e non ha la pretesa di essere “definitivo”. In sostanza, vuole essere una dimostrazione di come sia semplice creare un chatbot. Un software che, come abbiamo visto nella premessa iniziale, è “smart” perché mantiene una memoria della conversazione grazie alla tecnologia offerta da OpenAI.

Questo è anche il momento di inserire la chiave API precedentemente generata e che avevamo conservato, basterà incollarla al posto di <INSERT_YOUR_OPENAI_API_KEY_HERE>.

Qui il codice da inserire su Visual Studio:

// ChatBotOpenAI

using OpenAI.Managers;

using OpenAI;

using Microsoft.Extensions.DependencyInjection;

using OpenAI.ObjectModels.RequestModels;

using OpenAI.ObjectModels;

// Carico lAPI KEY di OPENAI

var openAiService = new OpenAIService(new OpenAiOptions()

{

ApiKey = "<INSERT_YOUR_OPENAI_API_KEY_HERE>"

});

var HistoricalConversation = new List<ChatMessage>

{

ChatMessage.FromSystem(

"Tu sei .NetBot, un versatile assistente progettato per aiutare i programmatori in C#, nel framework .NET, in SQL Server, su Azure e, più in generale, su tecnologie Microsoft. Sei simpatico, affabile e fornisci risposte corrette."

),

};

// Ciclo infinito

while (true)

{

// Scrivo in console

Console.WriteLine("Di cosa vuoi parlare adesso? (premi CTRL + C per uscire)");

// Leggo linput dellutente

string question = Console.ReadLine();

// Aggiungo la domanda alla lista che contiene la conversazione

 HistoricalConversation.Add(ChatMessage.FromUser(question));

var completionResult = await openAiService.ChatCompletion.CreateCompletion(new ChatCompletionCreateRequest

{

Messages = HistoricalConversation,

Model = Models.Gpt_4,

MaxTokens = 4096, //optional

Temperature = (float?)0.7

});

if (completionResult.Successful)

{

Console.WriteLine(completionResult.Choices.First().Message.Content);

}

// Aggiungo la risposta di OpenAI alla lista che contiene la conversazione

 HistoricalConversation.Add(ChatMessage.FromAssistant(completionResult.Choices.First().Message.Content));

};

Il codice è disponibile qui sul profilo GitHub di ESSE I: https://github.com/esse-i-dev. A proposito, se sei un coder NON puoi non seguirci. ;)

 

5) Test di chatbot

Testare l’applicazione è molto semplice: basta cliccare “Run” nel progetto, si aprirà una finestra in console che ci porrà una domanda a cui il chatbot darà risposta.

Attualmente il chatbot riceve un prompt simile a quello che utilizziamo in ESSE I (anche noi sfruttiamo le nuove tecnologie) ed è verticalizzato su C#, sul framework .NET, su Azure e su SQL Server: tutte tecnologie Microsoft in cui sentiamo di potere dare un apporto importante con le nostre competenze.

Leggasi: se vuoi installare un bel chatbot sul tuo sito o sulla tua app non essere timido e contattaci!

Come dicevamo, il chatbot mantiene memoria della conversazione e quindi è sempre possibile fare riferimento a risposte o domande precedenti. Per uscire dal chatbot è sufficiente premere la combinazione di tasti CTRL + C.

 

6) Conclusioni

Come abbiamo visto, creare un chatbot e integrarlo nella nostra soluzione è veramente semplice.

Mentre un tempo creare un chatbot significava programmarlo praticamente da zero, da qualche anno è possibile utilizzare API di terze parti che ci aiutano ad automatizzare le nostre web app.

E oggi abbiamo addirittura la possibilità di crearlo sfruttando tutta la potenza di intelligenza artificiale e machine learning, tecnologie che oltre a fornire risultati migliori richiedono una programmazione minima o persino nulla.

Si pensi, ad esempio, alla programmazione dei “flussi di risposta” richiesti da certi chatbot non AI fino a qualche tempo fa, e oggi rimpiazzati da soluzioni come quelle proposte ai coder da parte di OpenAI.

Tra l’altro, l’addestramento del modello permette di includere nel tempo informazioni non ancora in suo possesso: una caratteristica che rende monetizzabile e profittevole questa operazione.

 

E tu cosa ne pensi di questa prima dose di comprESSE I?

È stata abbastanza frizzante e curativa? Noi speriamo di sì.

Faccelo sapere unendoti alla discussione sui nostri canali social, contattandoci con un messaggio o iscrivendoti alla nostra newsletter settimanale gratuita.

 

(Foto: Pexels)

Newsletter

Desidero iscrivermi alla newsletter periodica del blog con articoli informativi su software, soluzioni ITC e novità dal mondo ESSE I. Potrai cancellarti quando lo desideri nel pieno rispetto della Privacy Policy .

Codice Anti Spam

Riportare nel box sottostante "Codice di verifica", il codice alfanumerico che trovi a fianco

NEWSLETTER

Iscriviti alla newsletter periodica del blog con articoli informativi su software, soluzioni ITC e novità dal mondo ESSE I.

Non registreremo la tua email in alcun modo fino a quando non avrai accettato le condizioni nel form successivo.

RIMANIAMO IN CONTATTO
Vai al FORM
Seguici sui SOCIAL