· · 3 minuti di lettura

Costruire un'app per conferenze con IA con lo stack componibile di .NET

Microsoft ha costruito ConferencePulse — un'app Blazor per conferenze live — combinando Microsoft.Extensions.AI, DataIngestion, VectorData, MCP e Agent Framework. Ecco come si incastrano i pezzi.

.NET AI Architecture Developer Productivity
Questo articolo è disponibile anche in:English, Català, Español, Deutsch, Français, Português, 日本語, 中文, 한국어, Русский, हिन्दी, Polski, Türkçe, العربية, Bahasa Indonesia, Nederlands

Questo post è stato tradotto automaticamente. Per la versione originale, clicca qui.

Costruire un’app per conferenze con IA con lo stack componibile di .NET — Microsoft ha costruito ConferencePulse, un’app Blazor Server per sessioni di conferenza live, combinando cinque librerie di estensione .NET. È stata utilizzata all’MVP Summit.

Cosa fa ConferencePulse

ConferencePulse funziona durante le sessioni live e fornisce: sondaggi generati dall’IA dal contenuto della sessione, Q&A del pubblico con una pipeline RAG che attinge da una knowledge base live, insight generati automaticamente e riepiloghi delle sessioni prodotti da più agenti IA concorrenti. Lo stack è .NET 10, Blazor Server, Aspire, suddiviso in cinque progetti: Web, Core, Ingestion, Agents, Mcp e AppHost.

Microsoft.Extensions.AI: un’astrazione per tutto

IChatClient è l’astrazione unificata — si configura una volta e la stessa interfaccia funziona per Azure OpenAI, OpenAI, Anthropic o qualsiasi altro provider. Sei righe per ottenere un client completamente configurato con invocazione di funzioni, tracciamento OpenTelemetry e middleware di logging:

services.AddChatClient(new AzureOpenAIClient(...).GetChatClient("gpt-4o"))
    .UseFunctionInvocation()
    .UseOpenTelemetry()
    .UseLogging();

Lo stesso IChatClient viene riutilizzato in seguito per il passaggio di arricchimento dell’ingestion dei dati — nessun client separato necessario per questo.

Pipeline DataIngestion

Il contenuto della sessione scorre attraverso una pipeline: MarkdownReaderHeaderChunker (500 token, 50 token di sovrapposizione) → SummaryEnricher + KeywordEnricherVectorStoreWriter (Qdrant). Gli arricchitori usano lo stesso IChatClient per generare riepiloghi ed estrarre parole chiave prima dell’indicizzazione. Le domande del pubblico, le coppie Q&A e i risultati dei sondaggi vengono inseriti in tempo reale man mano che la sessione avanza — la knowledge base cresce durante il talk.

VectorData: ricerca indipendente dal provider

VectorStoreCollection.SearchAsync() funziona allo stesso modo sia che il backing store sia Qdrant o Azure AI Search. La ricerca ibrida (vettore + testo completo) è supportata. La pipeline RAG per il Q&A del pubblico interroga questa collezione e riceve i chunk rilevanti da passare come contesto al client di chat.

MCP: contenuto della sessione come strumenti

Il contenuto della sessione è esposto tramite MCP in modo che qualsiasi client compatibile con MCP possa accedervi. Sia il server che il client sono implementati — il server espone la conoscenza della sessione come strumenti MCP, e il client consente di chiamare questi strumenti dall’interno della pipeline dell’agente.

Agent Framework: riepilogo multi-agente in parallelo

Il riepilogo della sessione viene generato da tre agenti che eseguono in modo concorrente — PollSummaryAgent, QuestionSummaryAgent e InsightSummaryAgent — poi uniti. Questo utilizza il pattern di group chat o esecuzione parallela di Microsoft Agent Framework. Ogni agente gestisce una preoccupazione; l’orchestratore unisce gli output.

Il principio di progettazione

Il post fa un punto degno di nota: usa lo strumento più semplice che si adatta. Chiamate dirette a IChatClient per semplici attività di generazione. Chiamata di strumento/funzione per l’estrazione di dati strutturati. Agenti completi solo quando si necessita di ragionamento autonomo multi-step. La stratificazione delle librerie lo impone — è possibile usare Microsoft.Extensions.AI senza includere l’Agent Framework completo.

Consulta il post completo per la struttura completa del progetto e i link al codice sorgente.

Condividi:
Vedi il codice sorgente di questo articolo su GitHub ↗
← Eliminare il Lavoro Ripetitivo della Migrazione con l'Agentic Platform Engineering
Combinare il versionamento API con OpenAPI in .NET 10 →