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:
- Memorie Semantiche: Semantic Kernel consente di salvare memorie per contestualizzare meglio le risposte, come un vero e proprio “cervello” persistente.
- Orchestrazione di Prompt: È possibile orchestrare sequenze di prompt per gestire conversazioni o flussi complessi.
- 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.