Hai mai desiderato arricchire le tue applicazioni con un assistente virtuale capace di comprendere e rispondere alle domande degli utenti in modo naturale e intuitivo? Con l’integrazione di ChatGPT in una soluzione .NET, questo sogno può diventare realtà. Seguendo questa guida passo-passo, scoprirai come trasformare la tua applicazione, rendendola più interattiva e intelligente.
Come possiamo iniziare ?
Per iniziare, assicuriamoci di avere tutto il necessario: Visual Studio, .NET SDK e un account OpenAI. Seguendo questi semplici passaggi, integreremo ChatGPT nella nostra applicazione in pochissimo tempo.
1. Creazione del progetto WebAPI
- Avviamo Visual Studio e creiamo un nuovo progetto.
- Selezioniamo “API” come tipo di progetto e diamo un nome significativo, come “GPT.NET”.
- Una volta creato il progetto, apriamo un terminale o utilizziamo il terminale integrato di Visual Studio.
2. Installazione del Pacchetto OpenAI .NET
Eseguiamo il seguente comando nel terminale per installare la libreria OpenAI .NET:
dotnet add package OpenAI
3. Configurazione del Token API
Prima di procedere con l’integrazione, dobbiamo ottenere un token API da OpenAI. Ecco come fare:
- Visitiamo platform.openai.com.
- Accediamo con il nostro account OpenAI o creiamo un nuovo account.
- Una volta effettuato l’accesso, andiamo nella sezione API Keys.
- Creiamo un nuovo token API e copiamolo. Questo sarà il nostro
ApiKey
.
appsettings.json
:
{
"OpenAI": {
"ApiKey": "YOUR_OPENAI_API_KEY"
}
}
4. Implementazione del Servizio ChatGPT
Creiamo un nuovo servizio GPTService.cs
nella cartella Services
:
using GPT.NET.Interfaces;
using OpenAI.Chat;
using OpenAI.Models;
namespace GPT.NET.Services;
public class GPTService(IConfiguration configuration) : IGTPService
{
private string APIKey { get; } = configuration.GetSection("OpenAI:ApiKey").Get() ?? throw new InvalidOperationException();
public async Task> GetResponseAsync(string prompt, string? model = "gpt-4o")
{
var response = await new ChatClient(model, APIKey)
.CompleteChatAsync([new UserChatMessage(prompt)]);
return response.Value.Content.Select(x => x.Text);
}
public async Task> ModelsAsync()
{
var models = await new ModelClient(APIKey).GetModelsAsync();
return models.Value.Select(x => x.Id);
}
}
Definiamo l’interfaccia del servizio IGPTService.cs
nella cartella Interfaces
:
namespace GPT.NET.Interfaces;
public interface IGTPService
{
Task> ModelsAsync();
Task> GetResponseAsync(string prompt, string? model = "gpt-4o");
}
5. Registrazione del Servizio
Registriamo il servizio GPTService
nel contenitore delle dipendenze:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddScoped();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddControllers();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
6. Creazione del Controller
Creiamo un controller GPTController.cs
nella cartella Controllers
:
using GPT.NET.Interfaces;
using Microsoft.AspNetCore.Mvc;
namespace GPT.NET.Controllers;
[Route("[controller]/[action]")]
public class GPTController(IGTPService gtpService) : ControllerBase
{
[HttpGet]
public async Task Models()
{
return Ok(await gtpService.ModelsAsync());
}
[HttpGet]
public async Task Ask(string prompt, string? model)
{
return Ok(await gtpService.GetResponseAsync(prompt, model));
}
}
7. Test dell'Applicazione
Avviamo l’applicazione e utilizziamo SwaggerUI per testare le nostre API. Una volta che l’applicazione è in esecuzione, apriamo un browser web e navighiamo a http://localhost:5000/swagger
o https://localhost:5001/swagger
.
Ottenere i modelli disponibili: Selezioniamo l’endpoint
GET /GPT/Models
e clicchiamo su “Try it out”, quindi su “Execute”. Questo ci restituirà una lista di modelli disponibili.Inviare una richiesta al modello ChatGPT: Selezioniamo l’endpoint
GET /GPT/Ask
, clicchiamo su “Try it out”, inseriamo il prompt nel campoprompt
(ad esempio,Ciao ChatGPT, come stai?
) e, se desiderato, selezioniamo un modello specifico. Quindi clicchiamo su “Execute” per ricevere una risposta generata da ChatGPT.
SwaggerUI ci permette di testare facilmente le API direttamente dal browser, visualizzando le risposte in un formato chiaro e leggibile.
Nota Importante
Le API di OpenAI hanno un costo associato. Se riceviamo un errore 429, è molto probabile che il nostro credito disponibile sia esaurito. Per ovviare a questo problema, possiamo ricaricare il nostro account con un minimo di 5€ tramite la piattaforma OpenAI.