Come Integrare ChatGPT in .NET

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.
Aggiungiamo la nostra chiave API nel file 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<string>() ?? throw new InvalidOperationException();

    public async Task<IEnumerable<string>> 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<IEnumerable<string>> 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<IEnumerable<string>> ModelsAsync();
    Task<IEnumerable<string>> 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<IGTPService, GPTService>();

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<IActionResult> Models()
    {
        return Ok(await gtpService.ModelsAsync());
    }

    [HttpGet]
    public async Task<IActionResult> 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/swaggerhttps://localhost:5001/swagger.

  1. 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.

  2. Inviare una richiesta al modello ChatGPT: Selezioniamo l’endpoint GET /GPT/Ask, clicchiamo su “Try it out”, inseriamo il prompt nel campo prompt (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.

Conclusione

L’integrazione di ChatGPT in una soluzione .NET ci offre la possibilità di creare applicazioni più intelligenti e interattive. Ora che abbiamo visto quanto è semplice, non perdere l’opportunità di sfruttare questa tecnologia nel prossimo progetto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Skip to content