· · 2 минут чтения

Создание конференционного приложения с ИИ на основе составного стека .NET

Microsoft создала ConferencePulse — приложение Blazor для живых конференций — объединив Microsoft.Extensions.AI, DataIngestion, VectorData, MCP и Agent Framework. Вот как части соединяются вместе.

.NET AI Architecture Developer Productivity
Эта статья также доступна на:English, Català, Español, Deutsch, Français, Português, Italiano, 日本語, 中文, 한국어, हिन्दी, Polski, Türkçe, العربية, Bahasa Indonesia, Nederlands

Этот пост был переведён автоматически. Для оригинальной версии нажмите здесь.

Создание конференционного приложения с ИИ на основе составного стека .NET — Microsoft создала ConferencePulse, приложение Blazor Server для сессий живых конференций, объединив пять библиотек расширения .NET. Оно было использовано на MVP Summit.

Что делает ConferencePulse

ConferencePulse работает во время живых сессий и предоставляет: опросы, сгенерированные ИИ из содержимого сессии, вопросы и ответы аудитории с конвейером RAG, извлекающим из живой базы знаний, автоматически сгенерированные выводы и резюме сессий, создаваемые несколькими одновременными агентами ИИ. Стек — .NET 10, Blazor Server, Aspire, разбитый на пять проектов: Web, Core, Ingestion, Agents, Mcp и AppHost.

Microsoft.Extensions.AI: одна абстракция для всего

IChatClient — это унифицированная абстракция — настраивается один раз, и тот же интерфейс работает для Azure OpenAI, OpenAI, Anthropic или любого другого провайдера. Шесть строк для получения полностью настроенного клиента с вызовом функций, трассировкой OpenTelemetry и промежуточным ПО для логирования:

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

Тот же IChatClient повторно используется позже для шага обогащения приёма данных — отдельный клиент для этого не нужен.

Конвейер DataIngestion

Содержимое сессии проходит через конвейер: MarkdownReaderHeaderChunker (500 токенов, перекрытие 50 токенов) → SummaryEnricher + KeywordEnricherVectorStoreWriter (Qdrant). Обогатители используют тот же IChatClient для генерации резюме и извлечения ключевых слов перед индексацией. Вопросы аудитории, пары вопросов и ответов и результаты опросов принимаются в режиме реального времени по мере продвижения сессии — база знаний растёт во время доклада.

VectorData: поиск, независимый от провайдера

VectorStoreCollection.SearchAsync() работает одинаково независимо от того, является ли резервное хранилище Qdrant или Azure AI Search. Гибридный поиск (вектор + полный текст) поддерживается. Конвейер RAG для вопросов и ответов аудитории запрашивает эту коллекцию и получает соответствующие фрагменты для передачи в качестве контекста клиенту чата.

MCP: содержимое сессии как инструменты

Содержимое сессии открывается через MCP, чтобы любой совместимый с MCP клиент мог получить к нему доступ. Реализованы как сервер, так и клиент — сервер открывает знания сессии как инструменты MCP, а клиент позволяет вызывать эти инструменты из конвейера агента.

Agent Framework: параллельное многоагентное резюме

Резюме сессии генерируется тремя агентами, работающими одновременно — PollSummaryAgent, QuestionSummaryAgent и InsightSummaryAgent — затем объединяется. Это использует шаблон группового чата или параллельного выполнения из Microsoft Agent Framework. Каждый агент обрабатывает одну задачу; оркестратор объединяет результаты.

Принцип проектирования

В посте сделан вывод, который стоит запомнить: используйте самый простой инструмент, который подходит. Прямые вызовы IChatClient для простых задач генерации. Вызов инструмента/функции для извлечения структурированных данных. Полные агенты только тогда, когда нужны автономные многошаговые рассуждения. Слоистость библиотек это обеспечивает — вы можете использовать Microsoft.Extensions.AI без подключения полного Agent Framework.

Смотрите полный пост для полной структуры проекта и ссылок на исходный код.

Поделиться:
Просмотреть исходный код этой статьи на GitHub ↗
← Microsoft Agent Framework Часть 3: От инструментов к воркфлоу — строительные блоки встают на место
Совмещение версионирования API с OpenAPI в .NET 10 →