Sider.ai
  • Chat
  • Wisebase
  • Utensili
  • Estensione
  • Clienti
  • Prezzi
Scarica ora
Login

Impara più velocemente, pensa più profondamente e cresci in modo più intelligente con Sider.

Prodotti
App
  • Estensioni
  • iOS
  • Android
  • Mac OS
  • Windows
Wisebase
  • Wisebase
  • Deep Research
  • Scholar Research
  • Math Solver
  • Rec NoteNew
  • Audio To Text
  • Gamified Learning
  • Interactive Reading
  • ChatPDF
Strumenti
  • Creatore di Siti WebNew
  • AI SlidesNew
  • Scrittore di saggi AI
  • Nano Banana Pro
  • Nano Banana Infographic
  • Generatore di immagini AI
  • Generatore di Brainrot Italiano
  • Rimuovi sfondo
  • Cambia sfondo
  • Cancellatore di foto
  • Rimuovi testo
  • Ritocca
  • Ingranditore di immagini
  • Crea
  • Traduttore AI
  • Traduttore di immagini
  • Traduttore PDF
Sider
  • Contattaci
  • Centro assistenza
  • Scarica
  • Prezzi
  • Piano Educativo
  • Novità
  • Blog
  • Comunità
  • Partner
  • Affiliazione
  • Invita
©2026 Tutti i diritti riservati
Termini di utilizzo
Informativa sulla privacy
  • Pagina iniziale
  • Blog
  • Strumenti AI
  • Come utilizzare Semantic Kernel: una guida pratica con pattern, prompt e plugin

Come utilizzare Semantic Kernel: una guida pratica con pattern, prompt e plugin

Aggiornato il 24 set 2025

9 min


Come Usare Semantic Kernel: Una Guida Pratica con Pattern, Prompt e Plugin

Hai mai provato a collegare un LLM alla tua app e ti sei ritrovato con un fragile groviglio di prompt, funzioni di supporto e stato? Semantic Kernel (SK) esiste proprio per risolvere questo problema. È un framework di orchestrazione open-source leggero di Microsoft per la creazione di app AI-first che combinano linguaggio naturale, strumenti e memoria, senza trasformare la tua codebase in un "prompt spaghetti bowl".
In questa guida, faremo un tour pratico e orientato alla soluzione su come utilizzare Semantic Kernel da zero fino ai pattern di produzione. Imparerai come strutturare i prompt, collegare strumenti, aggiungere memoria, chiamare più modelli e distribuire agenti che agiscono in modo coerente. Manterremo gli esempi concreti e ti mostreremo ciò che conta.

Cos'è Semantic Kernel e perché usarlo?

Semantic Kernel è un SDK che ti aiuta a:
  • Comporre prompt e funzioni ("skills"/plugin) in pipeline.
  • Chiamare più modelli (OpenAI, Azure OpenAI, modelli locali) in modo intercambiabile.
  • Aggiungere memoria per il contesto e il richiamo a lungo termine tramite embedding.
  • Pianificare e orchestrare attività multi-step con uno stato affidabile.
  • Integrare strumenti (API, database, file I/O) in modo sicuro e deterministico.
Pensa a SK come al controller che coordina gli LLM, la logica della tua app e i dati utente. Invece di codificare prompt lunghi e chiamate di strumenti ad hoc, definisci funzioni semantiche riutilizzabili e funzioni native con input/output chiari.
Casi d'uso comuni:
  • Copilot di supporto clienti con generazione aumentata dal recupero (RAG)
  • Agenti di workflow (riassumere → classificare → intraprendere azioni)
  • Q&A sui documenti con memoria e citazioni
  • Pipeline creative di generazione di contenuti e codice

Guida Rapida: La Tua Prima App Semantic Kernel

Di seguito è riportato un flusso minimo per mostrare come utilizzare Semantic Kernel con un modello di chat e un semplice prompt. Useremo C# per chiarezza; puoi fare lo stesso in Python o Java.

1) Installa i pacchetti

# .NET
dotnet add package Microsoft.SemanticKernel
# Opzionale: connettori e planner variano in base alla versione

2) Configura il kernel e il modello

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
var builder = Kernel.CreateBuilder;
// Scegli il tuo provider: OpenAI o Azure OpenAI
builder.AddOpenAIChatCompletion(
modelId: "gpt-4o-mini", // o il tuo modello preferito
apiKey: Environment.GetEnvironmentVariable("OPENAI_API_KEY")
);
var kernel = builder.Build;

3) Definisci una funzione semantica (prompt)

using Microsoft.SemanticKernel.SemanticFunctions;
var prompt = @"Sei un divulgatore conciso.
Spiega il concetto di '{topic}' in 3 punti elenco per un principiante.";
var explainFunc = kernel.CreateFunctionFromPrompt(prompt);
var result = await explainFunc.InvokeAsync(kernel, new { ["topic"] = "vector embeddings" });
Console.WriteLine(result);
Questo è il nucleo: un kernel, un modello e un prompt trasformato in una funzione riutilizzabile con input.

Funzioni Semantiche vs. Funzioni Native

  • Funzioni semantiche: Basate sui prompt. Le crei da template, passi variabili e ottieni testo o output strutturati.
  • Funzioni native: Funzioni di codice regolari che SK espone all'LLM per l'uso di strumenti.
Esempio di funzione nativa che recupera il meteo dalla tua API e lo espone al modello:
public class WeatherPlugin
{
[KernelFunction, Description("Ottieni il meteo per una città")]
public async Task<string> GetWeatherAsync(
[Description("Nome della città")] string city)
{
// Chiama la tua API meteo qui
var temp = 22; // segnaposto
return $"Meteo a {city}: {temp}°C e sereno";
}
}
// Registra il plugin
var weather = new WeatherPlugin;
kernel.Plugins.AddFromObject(weather, pluginName: "weather");
Ora i tuoi prompt possono chiamare weather.GetWeatherAsync come strumento, consentendo al modello di basare le risposte su dati reali.

Pattern di Prompt Che Funzionano Davvero

Quando impari come utilizzare Semantic Kernel, le vittorie più rapide derivano da pattern di prompt disciplinati:
  • System-first: Usa un messaggio di sistema forte per bloccare tono, persona, sicurezza e formato di output.
  • Slot variabili: Nomina i segnaposto in modo chiaro (es. {topic}, {audience}) e convalida l'input.
  • Contratti di output: Richiedi formati strutturati come JSON; includi uno schema nel prompt.
  • Few-shot: Fornisci esempi concisi per stile e formato, non per gonfiare il contenuto.
  • Guardrail: Includi vincoli ("Se mancano dati, poni prima una domanda chiarificatrice").
Esempio di prompt strutturato all'interno di SK:
var prompt = @"
Sei un motore di classificazione.
Compito: Classifica il `message` in uno tra [Billing, Tech Support, Sales].
Restituisci JSON rigoroso: { \"label\": string, \"confidence\": number }
message: {message}
";
var classify = kernel.CreateFunctionFromPrompt(prompt);
var output = await classify.InvokeAsync(kernel, new { ["message"] = "Non riesco ad accedere al mio account." });
Console.WriteLine(output); // {"label":"Tech Support","confidence":0.89}

Aggiungere Memoria: Embedding, RAG e Finestre di Contesto

Gli LLM dimenticano. La memoria li rende utili.
  • Contesto a breve termine: Automatico tramite la cronologia della conversazione.
  • Memoria a lungo termine: Archivia gli embedding di note, documenti o eventi dell'utente e recupera i chunk rilevanti per il contesto.
  • RAG: Prima di chiamare una funzione di generazione, interroga il tuo vector store e inserisci i risultati nel prompt.
Esempio: aggiungi memoria di testo con embedding e recupera il contesto.
using Microsoft.SemanticKernel.Memory;
var memory = new MemoryBuilder
.WithMemoryStore(new VolatileMemoryStore) // scambia con un vector DB (Qdrant, Pinecone, Azure AI Search)
.WithTextEmbeddingGeneration(
new OpenAITextEmbeddingGeneration("text-embedding-3-small", Environment.GetEnvironmentVariable("OPENAI_API_KEY")))
.Build;
await memory.SaveInformationAsync(
collection: "policies", id: "refund-policy",
text: "I clienti possono richiedere un rimborso entro 30 giorni dall'acquisto con prova di ricevuta.");
);
// Più tardi: recupera e inserisci nel prompt
var results = memory.SearchAsync("refund window", collection: "policies", limit: 3, minRelevanceScore: 0.7);
await foreach (var item in results)
{
Console.WriteLine($"Rilevante: {item.Metadata.Text}");
}
Quindi inserisci le corrispondenze migliori nella tua funzione semantica come variabili di contesto. Suggerimento: mantieni i chunk piccoli (200–400 token) e deduplica.

Uso di Strumenti e Pianificazione: Workflow Multi-Step

Semantic Kernel supporta i planner che possono suddividere un obiettivo utente in passaggi e scegliere quali funzioni chiamare. Questo è perfetto quando hai una toolbox di funzioni native e semantiche.
Pattern:
  1. Raccogli l'obiettivo e i vincoli dall'utente.
  1. Elabora un piano (sequenza di chiamate di funzioni con argomenti).
  1. Esegui passo dopo passo, verifica gli output e riprenditi dagli errori.
Esempio di pseudocodice:
// 1) Definisci i plugin (semantici + nativi) come prima
// 2) Usa un planner (l'API surface può variare in base alla versione)
var goal = "Riassumi la policy allegata, classifica il rischio e invia un report via email";
// Supponiamo di avere i plugin: files, summarize, classify, email
// Il planner assemblerà un piano: files.Load → summarize.Run → classify.Run → email.Send
// Esegui il piano in sequenza, convalida gli output JSON tra i passaggi
Best practice:
  • Rendi i passaggi idempotenti e testabili.
  • Imposta schemi di output espliciti tra i passaggi.
  • Usa tentativi/backoff sugli strumenti di rete.
  • Registra input/output per l'osservabilità (ma ripulisci le PII).

Strategia Multi-Modello: Scegli il Modello Giusto per il Lavoro

Utilizzando Semantic Kernel, puoi indirizzare le attività a modelli diversi:
  • Bozze rapide → modelli piccoli ed economici
  • Passaggi ad alta intensità di ragionamento → modelli più grandi
  • Embedding → modello di embedding specializzato
  • Codice → modelli ottimizzati per il codice
In pratica:
var kernel = Kernel.CreateBuilder
.AddOpenAIChatCompletion("gpt-4o-mini", apiKey)
.Build;
var fastKernel = Kernel.CreateBuilder
.AddOpenAIChatCompletion("gpt-4o-mini", apiKey) // ottimizzato per la velocità
.Build;
// Inoltra i prompt più semplici a fastKernel; le attività complesse a kernel
Oppure, configura più servizi nello stesso kernel e seleziona per funzione.

Dal Prototipo alla Produzione: Guardrail e Test

Mentre impari come utilizzare Semantic Kernel in app reali, l'affidabilità è importante:
  • Output schema-first: Usa schemi JSON e gate TryParse.
  • Determinismo quando necessario: Imposta una temperatura bassa e vincola gli output.
  • Filtri di sicurezza: Aggiungi filtri di contenuto e prompt di red-team.
  • Caching: Memorizza nella cache i risultati RAG e le generazioni stabili.
  • Osservabilità: Registra i template di prompt, le variabili, la latenza, l'utilizzo dei token.
  • Unit test: Prompt di test golden con confronti di snapshot.
Esempio: convalida l'output JSON.
record Classification(string label, double confidence);
bool TryParseClassification(string text, out Classification cls)
{
try { cls = System.Text.Json.JsonSerializer.Deserialize<Classification>(text)!; return true; }
catch { cls = default!; return false; }
}

Pattern del Mondo Reale Che Puoi Riutilizzare

  • Chatbot RAG: retrieve(context) → answer(question, context) con citazioni.
  • Workflow di approvazione: classify → generate draft → human review → send.
  • Content ops: outline → draft → fact-check → tone adjust → publish.
  • Agente con strumenti: calendar.lookup, docs.search, email.send; con pianificazione e memoria.
Suggerimento: incapsula ogni passaggio come una funzione (semantica o nativa) e componili in pipeline.

Esempio: Q&A sui Documenti con Citazioni

Colleghiamo una semplice pipeline di Q&A che cita le fonti utilizzando RAG.
// 1) Inserisci i documenti in memoria
await memory.SaveInformationAsync("handbook", "vacation-policy",
"I dipendenti maturano 1,5 giorni di ferie retribuite al mese e possono riportare 5 giorni.");
// 2) Recupera il contesto per una domanda
var top = memory.SearchAsync("carry over PTO", "handbook", limit: 3, minRelevanceScore: 0.75);
var contexts = new List<string>;
await foreach (var r in top) contexts.Add(r.Metadata.Text);
// 3) Chiedi con il contesto e richiedi le citazioni
var qaPrompt = @"
Rispondi rigorosamente dal contesto fornito. Se manca, dì che non lo sai.
Includi citazioni in linea come [source i] usando l'indice degli elementi di contesto a partire da 1.
Contesto:
1) {{ctx1}}
2) {{ctx2}}
Domanda: {{q}}
";
var qa = kernel.CreateFunctionFromPrompt(qaPrompt);
var variables = new KernelArguments
{
["ctx1"] = contexts.ElementAtOrDefault(0) ?? "",
["ctx2"] = contexts.ElementAtOrDefault(1) ?? "",
["q"] = "Quanti giorni di ferie retribuite posso riportare?"
};
var answer = await qa.InvokeAsync(kernel, variables);
Console.WriteLine(answer);

Errori Comuni (e Come Evitarli)

  • Singolo prompt gigante: Dividi in funzioni; passa solo il contesto di cui hai bisogno.
  • Nessun contratto di output: Definisci sempre gli schemi per i passaggi leggibili dalla macchina.
  • RAG senza igiene: Chunk bene, deduplica e classifica per rilevanza e recentità.
  • Proliferazione di strumenti: Mantieni le interfacce dei plugin piccole e documentate.
  • Nessun human-in-the-loop: Aggiungi approvazioni per azioni ad alto rischio.

Come Usare Semantic Kernel con i Frontend

  • App web: Ospita la tua orchestrazione SK in un livello API; trasmetti in streaming i token all'interfaccia utente.
  • Interfacce utente di chat: Mantieni lo stato della conversazione lato server; pota e riassumi.
  • Auth: Chiamate impersonation-safe: non lasciare mai che il modello crei token. Controlla le chiamate degli strumenti tramite il tuo backend.

Checklist di Distribuzione

  • Variabili d'ambiente per chiavi ed endpoint
  • Rate limiting e tentativi per chiamate di modelli/strumenti
  • Controllo della sorgente del template di prompt
  • Backup del vector store e gestione delle PII
  • Dashboard di osservabilità (latenza, costo, errori)
  • Test A/B per prompt e routing

Risoluzione dei Problemi in Stile FAQ

  • “Il modello allucina anche con RAG.” Rafforza le istruzioni: "Rispondi solo dal contesto" e includi un esempio di rifiuto. Aumenta la specificità del recupero e riduci la temperatura.
  • “Il JSON continua a rompersi.” Aggiungi un mini esempio di JSON valido e vieta i commenti. Post-convalida e riformula in caso di errore.
  • “La latenza è alta.” Recupera meno chunk, più rilevanti; sposta i passaggi semplici su modelli più piccoli; parallelizza i passaggi indipendenti.
  • “I costi stanno aumentando.” Memorizza nella cache, comprimi il contesto e indirizza le attività facili a modelli più economici.

Vale la Pena Notare: Costruisci Più Velocemente con Sider.AI

Se stai prototipando prompt, testando flussi di strumenti o confrontando risposte tra modelli, un compagno come Sider.ai può accelerare l'iterazione. Puoi elaborare prompt, eseguire confronti A/B e acquisire snippet riutilizzabili prima di spostarli nei template di Semantic Kernel: ottimo per affinare le istruzioni e gli schemi di output.

Passaggi Successivi: Trasforma Questo in un Agente Funzionante

  • Inizia con un compito chiaro (es. classifica le email di supporto).
  • Definisci funzioni semantiche/native con input/output rigorosi.
  • Aggiungi memoria solo dove migliora sensibilmente le risposte.
  • Strumenta tutto; testa con campioni del mondo reale.
  • Itera sui prompt usando una sandbox, quindi codifica in SK.
Punti chiave:
  • Semantic Kernel ti aiuta a comporre prompt, strumenti e memoria in workflow affidabili.
  • Usa schemi di output, planner e routing multi-modello per robustezza e controllo dei costi.
  • RAG più guardrail batte i prompt giganti ogni volta.
Una volta che avrai imparato come utilizzare Semantic Kernel con questi pattern, consegnerai funzionalità AI che non sono solo demo impressionanti, ma sistemi affidabili.

FAQ

Q1: A cosa serve Semantic Kernel nelle app AI? Semantic Kernel è un SDK di orchestrazione per la creazione di workflow AI che combinano prompt LLM, strumenti (funzioni native) e memoria. Ti aiuta a strutturare le attività, aggiungere RAG e chiamare più modelli in modo affidabile.
Q2: Come posso usare Semantic Kernel per RAG con i miei documenti? Inserisci i tuoi documenti in un vector store tramite le API di memoria di SK, quindi recupera i chunk più rilevanti per query e inseriscili nel tuo prompt. Ciò migliora l'accuratezza e riduce le allucinazioni.
Q3: Semantic Kernel può chiamare API e servizi esterni? Sì. Includi le API come funzioni native in un plugin e registrale con il kernel in modo che il modello possa utilizzarle come strumenti. Mantieni le interfacce piccole e applica la convalida di input/output.
Q4: Quali modelli funzionano con Semantic Kernel? Semantic Kernel supporta OpenAI, Azure OpenAI e altri connettori. Puoi indirizzare le attività a modelli diversi, ad esempio modelli più piccoli per le bozze e modelli più grandi per i passaggi ad alta intensità di ragionamento.
Q5: Come posso rendere coerenti gli output di Semantic Kernel (ad esempio, JSON)? Usa prompt strutturati che richiedono JSON rigoroso e includono un esempio o uno schema minimo. Imposta una temperatura bassa, convalida gli output post-chiamata e riprova o ripara quando l'analisi fallisce.

Articoli Recenti
Come Padroneggiare ChatPDF: Approfondimenti Rapidi da Documenti Complessi

Come Padroneggiare ChatPDF: Approfondimenti Rapidi da Documenti Complessi

La migliore alternativa a X Auto-Translation per documenti rapidi e precisi

La migliore alternativa a X Auto-Translation per documenti rapidi e precisi

La traduzione AI di Samsung non disponibile in Iran? Soluzioni pratiche

La traduzione AI di Samsung non disponibile in Iran? Soluzioni pratiche

Strumenti di traduzione persiana: una guida pratica per un lavoro più rapido e preciso

Strumenti di traduzione persiana: una guida pratica per un lavoro più rapido e preciso

La migliore alternativa a Grok per ricerche approfondite e citate

La migliore alternativa a Grok per ricerche approfondite e citate

Le 15 principali funzionalità dei generatori di immagini AI che userai davvero

Le 15 principali funzionalità dei generatori di immagini AI che userai davvero