Этот пост был переведён автоматически. Для оригинальной версии нажмите здесь.
Создание конференционного приложения с ИИ на основе составного стека .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
Содержимое сессии проходит через конвейер: MarkdownReader → HeaderChunker (500 токенов, перекрытие 50 токенов) → SummaryEnricher + KeywordEnricher → VectorStoreWriter (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.
Смотрите полный пост для полной структуры проекта и ссылок на исходный код.
