Semantic Kernel è l'SDK open source di Microsoft per integrare i modelli linguistici nelle applicazioni. Il suo concetto centrale è il kernel: un contenitore che unisce il servizio di IA, i plugin con le funzioni dell'applicazione e la configurazione.
Creare il kernel
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion(
modelId: "gpt-4o-mini",
apiKey: configurazione["OpenAI:ApiKey"]!);
builder.Plugins.AddFromType<MagazzinoPlugin>();
Kernel kernel = builder.Build();
Un plugin
Un plugin è una classe con metodi decorati da [KernelFunction]. Le descrizioni sono fondamentali: è leggendole che il modello decide quando chiamare una funzione.
public class MagazzinoPlugin(IMagazzino magazzino)
{
[KernelFunction, Description("Restituisce la quantità disponibile di un articolo dato il codice")]
public Task<int> Giacenza([Description("Codice articolo, es. ABC-123")] string codice) =>
magazzino.QuantitaAsync(codice);
}
Chiamata automatica delle funzioni
var impostazioni = new OpenAIPromptExecutionSettings
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
};
var risposta = await kernel.InvokePromptAsync(
"Abbiamo abbastanza pezzi dell'articolo ABC-123 per un ordine da 40?",
new KernelArguments(impostazioni));
Console.WriteLine(risposta);
Il modello capisce che gli serve la giacenza, chiama Giacenza("ABC-123"), riceve il numero e formula la risposta. Il codice dell'applicazione resta quello che decide e controlla i dati.
Buone pratiche
- Esponi poche funzioni, con nomi e descrizioni chiari: troppe funzioni confondono il modello.
- Valida sempre gli argomenti e applica i permessi dell'utente dentro le funzioni.
- Per le operazioni che modificano dati, chiedi conferma all'utente prima di eseguirle.
- Registra tracce e costi delle chiamate: Semantic Kernel si integra con OpenTelemetry.
Semantic Kernel convive con le astrazioni di Microsoft.Extensions.AI e la sua evoluzione verso gli agenti continua nel Microsoft Agent Framework.
Commenti (0)
Nessun commento ancora.