in Informatica, Intelligenza Artificiale

Utilizzare Semantic Kernel in C#: Introduzione alla Libreria Microsoft per l’Intelligenza Artificiale

Cos’è il Semantic Kernel?

Il Semantic Kernel è una libreria open source sviluppata da Microsoft che facilita l’integrazione di modelli di linguaggio avanzati come quelli di OpenAI o Azure OpenAI con applicazioni .NET. Grazie a questa libreria, è possibile orchestrare e gestire prompt complessi, integrare memorie semantiche e definire “funzioni semantiche” per guidare in modo preciso l’output generato dai modelli.

Il Semantic Kernel è progettato per semplificare l’uso di modelli di linguaggio nelle applicazioni, offrendo potenti strumenti per combinare dati e prompt e per orchestrare sequenze di conversazioni o attività. Vediamo insieme come iniziare con il Semantic Kernel in C#!

Come Installare Semantic Kernel

Prima di iniziare, dobbiamo aggiungere il pacchetto Semantic Kernel al nostro progetto. Apri il terminale nella directory del tuo progetto e installa il pacchetto con NuGet:

dotnet add package Microsoft.SemanticKernel

Questo comando installerà il pacchetto necessario per iniziare a lavorare con il Semantic Kernel nel tuo progetto C#.

Configurare il Semantic Kernel per l’uso di OpenAI o Azure OpenAI

Una volta installato il pacchetto, il passo successivo è configurare il kernel per collegarsi al modello di linguaggio. Possiamo scegliere di utilizzare OpenAI o Azure OpenAI specificando le chiavi API e i dettagli della connessione.

Esempio di Configurazione del Kernel con OpenAI

Nel codice seguente, configuriamo il kernel per connettersi al modello GPT-3.5-turbo di OpenAI. Assicurati di avere la tua chiave API di OpenAI, che puoi ottenere dalla piattaforma OpenAI.

using System;
using System.Threading.Tasks;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.AI.ChatCompletion;
using Microsoft.SemanticKernel.Plugins.OpenAI;

class Program
{
    static async Task Main(string[] args)
    {
        // Creazione del Kernel
        var kernel = Kernel.Builder.Build();

        // Configurazione per OpenAI
        var openAiApiKey = "LA_TUA_CHIAVE_OPENAI";
        kernel.Config.AddOpenAIChatCompletion("gpt-3.5-turbo", openAiApiKey);

        Console.WriteLine("Kernel configurato con successo per OpenAI!");
    }
}

Configurazione del Kernel con Azure OpenAI

Se preferisci utilizzare Azure OpenAI, la configurazione è molto simile. Basta specificare il deployment name, la chiave API e l’endpoint dell’istanza di Azure.

kernel.Config.AddAzureOpenAIChatCompletion(
    deploymentName: "NOME_DEL_DEPLOYMENT",
    apiKey: "LA_TUA_CHIAVE_AZURE",
    endpoint: "IL_TUO_ENDPOINT_AZURE"
);

Creazione di una Funzione Semantica

Una delle caratteristiche principali del Semantic Kernel è la possibilità di creare funzioni semantiche. Queste funzioni permettono di definire come l’intelligenza artificiale dovrebbe rispondere a un determinato input. Per esempio, possiamo creare una funzione che completi una frase data.

Esempio di Funzione di Completamento del Testo

Nel codice che segue, creiamo una funzione semantica che riceve un input e chiede al modello di completarlo.

using Microsoft.SemanticKernel.Orchestration;

class Program
{
    static async Task Main(string[] args)
    {
        // Configurazione del Kernel per OpenAI
        var kernel = Kernel.Builder.Build();
        kernel.Config.AddOpenAIChatCompletion("gpt-3.5-turbo", "LA_TUA_CHIAVE_OPENAI");

        // Creazione della funzione semantica
        var completionFunction = kernel.CreateSemanticFunction("Completa il seguente testo: {{input}}");

        // Input dell'utente
        var inputText = "La tecnologia di domani sarà";
        var result = await kernel.RunAsync(inputText, completionFunction);

        Console.WriteLine("Risultato del completamento:");
        Console.WriteLine(result);
    }
}

In questo esempio, la funzione “Completa il seguente testo: {{input}}” fornisce al modello di linguaggio una frase iniziale da completare, e il kernel si occupa di inviare l’input al modello e restituire il testo completato.

Utilizzi Avanzati di Semantic Kernel

Una volta compreso come configurare e utilizzare le funzioni base del Semantic Kernel, possiamo esplorare alcune funzionalità avanzate:

  1. Memorie Semantiche: Semantic Kernel consente di salvare memorie per contestualizzare meglio le risposte, come un vero e proprio “cervello” persistente.
  2. Orchestrazione di Prompt: È possibile orchestrare sequenze di prompt per gestire conversazioni o flussi complessi.
  3. Integrazione con altre API: Il kernel permette di combinare l’output dell’AI con dati esterni (es. database o API di terze parti), rendendo le risposte ancora più contestualizzate.

Conclusione

Il Semantic Kernel di Microsoft è un’ottima risorsa per integrare potenti modelli di linguaggio nelle applicazioni C#. La possibilità di creare funzioni semantiche e orchestrare conversazioni rende il Semantic Kernel uno strumento utile sia per sviluppatori esperti sia per chi inizia a esplorare l’integrazione dell’intelligenza artificiale nelle proprie app.