План внедрения Semantic Kernel в компании: от POC до production
Финальный урок, практический roadmap. Что делать по неделям, какие референсные архитектуры под типовые сценарии, как считать экономику, какие грабли обходить.
Что мы разобрали в курсе
| Глава | Главная мысль |
|---|---|
| 1.1 SK среди альтернатив | Enterprise-runtime от Microsoft, MIT, C#/Python/Java; стабильность и OTel, главные козыри |
| 1.2 Архитектура | Kernel (DI) + KernelFunction (метод/промпт/OpenAPI/MCP) + Plugin + Connector + Filter |
| 2.1 Память | Microsoft.Extensions.VectorData, 12+ vector connectors, TextSearch для RAG |
| 2.2 Оркестрация | Function Calling, основа; HandlebarsPlanner, Stepwise, Agent Framework, Process Framework, для специальных случаев |
| 3.1 Стек | Azure-стек: AOAI, AI Search, Container Apps, Key Vault, App Insights, Content Safety |
7 этапов запуска SK-приложения
Этап 1. Выбор сценария (1–2 недели)
Делайте узко. Не «универсальный AI-помощник для всей компании», а конкретный измеримый use-case.
Хорошие первые сценарии для SK:
- Internal copilot для одного workflow (HR-вопросы, IT helpdesk, финансовый approval).
- Documentation Q&A для конкретного отдела (юр-департамент, sales enablement).
- DevOps-помощник (диагностика инцидентов, runbook automation).
- BI-ассистент поверх корпоративных метрик.
- Code review companion для команды разработки.
Чек-лист «правильного» первого:
- ☐ Есть >100 запросов в день (иначе ROI не покроет работу).
- ☐ Корпус 10K–10M токенов либо API-source с чёткой схемой.
- ☐ Есть владелец продукта с правом принимать решения.
- ☐ Цена ошибки средняя (не финансовые транзакции, не медицинские диагнозы).
- ☐ Команда уже на .NET (или согласна на Python SK).
Этап 2. Spike / Walking Skeleton (1–2 недели)
Цель, за 1–2 недели собрать end-to-end работающий минимум на тестовых данных.
1. KernelBuilder + AOAI gpt-4o
2. Один плагин с 2–3 функциями (mock вызовами к внешним API)
3. Function calling Auto, без памяти
4. CLI / простой web endpoint
5. OpenTelemetry → консоль / Aspire dashboard
Цель, увидеть, что архитектура работает, и набрать первое чувство latency/cost. Не наращивать функционал, не оптимизировать.
Этап 3. Аудит и подготовка данных (3–6 недель)
Если в системе будет RAG, это критический этап. См. курс по RAG, тут, короткая выжимка для SK-контекста:
- Inventory всех источников (Confluence, SharePoint, Drive, Notion, БД, тикеты).
- Dedup, версионирование, deprecated-маркировка.
- Нормализация формата → Markdown / plaintext с metadata.
- PII scan (Microsoft Presidio).
- Chunking strategy (recursive 512 + overlap 64 как baseline).
- Pilot эмбеддинг и индексация в Azure AI Search / Qdrant.
- Эталонный датасет, минимум 50 ручных пар (вопрос, эталон, источники) + 200 synthetic.
Этап 4. MVP (3–5 недель)
Минимальный production-shaped стек:
var builder = Kernel.CreateBuilder()
.AddAzureOpenAIChatCompletion("gpt-4o", endpoint, new DefaultAzureCredential())
.AddAzureOpenAITextEmbeddingGeneration("text-embedding-3-large", endpoint, new DefaultAzureCredential());
builder.Services.AddSingleton(provider => new AzureAISearchVectorStore(...));
builder.Services.AddSingleton(provider => provider.GetRequiredService<IVectorStore>().GetCollection<Guid, DocumentChunk>("kb"));
builder.Plugins.AddFromType<HrKnowledgePlugin>();
builder.Plugins.AddFromType<CalendarPlugin>();
builder.Services.AddSingleton<IAutoFunctionInvocationFilter, ApprovalFilter>();
builder.Services.AddSingleton<IPromptRenderFilter, PiiMaskingFilter>();
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddSource("Microsoft.SemanticKernel*").AddAzureMonitorTraceExporter())
.WithMetrics(m => m.AddMeter("Microsoft.SemanticKernel*").AddAzureMonitorMetricExporter());
var kernel = builder.Build();
Проверки готовности к pilot:
- ☐ Faithfulness > 0.80 на эталонном датасете
- ☐ Latency p95 < 5 сек
- ☐ Function calling работает без зацикливаний (set
MaximumAutoInvokeAttempts = 10) - ☐ Approval-flow для опасных операций
- ☐ Trace в App Insights видны на каждый запрос
- ☐ Cost-budget alert настроен в Azure Cost Management
Этап 5. Iterative improvement (1–3 месяца)
Цикл:
- Прогнать eval на эталонном датасете → найти слабости.
- Категоризация ошибок: retrieval miss, function selection, hallucination, formatting, latency.
- Применить одну технику против одной категории:
- retrieval miss → hybrid search в AI Search или Qdrant
- неудачный выбор функции → уменьшить набор функций / routing-агент
- hallucination → строже инструкции + citation validation
- formatting → structured output (JSON schema mode)
- latency → routing на gpt-4o-mini для простого, parallel function calling
- Замерить → compare → keep or rollback.
Целевые метрики прода SK:
- Faithfulness > 0.92 (для RAG)
- Function-calling success rate > 0.95
- Latency p95 < 3 сек
- Cost / query < $0.05
- Error rate < 1%
Этап 6. Контролируемый запуск (1 месяц beta)
- 5–10% пользователей или одна пилотная команда.
- Feedback loop: thumbs up/down + free text.
- Continuous eval (sample 5% трафика → еженедельный отчёт).
- Human-in-the-loop для критичных операций (Filter
IAutoFunctionInvocationFilter+ queue). - Алерты на drop > 5% в faithfulness/success rate за неделю.
Этап 7. Масштабирование
- Расширение на всю аудиторию (постепенно по volume).
- Подключение новых плагинов / источников.
- Оптимизация: prompt caching (Azure OpenAI поддерживает), Redis для chat history, batching.
- Operational ownership: кто отвечает за обновление корпуса, мониторинг, обновление зависимостей SK (новые версии каждый месяц).
Референсные архитектуры по сценариям
A. Internal HR/IT Copilot
Профиль: ~50K документов в SharePoint+Confluence, 500 запросов/день, низкая цена ошибки, команда .NET.
Kernel: SK 1.x C#
Hosting: Azure Container Apps (1–3 instances)
Identity: Entra ID, Managed Identity для AOAI
Models: AOAI gpt-4o-mini (default) + gpt-4o (fallback на сложные)
Embeddings: AOAI text-embedding-3-large
Vector store: Azure AI Search (hybrid, semantic ranker)
Plugins: HrKnowledgePlugin (RAG), JiraPlugin (для тикетов)
Filters: PiiMaskingFilter, RateLimitFilter
Memory: Redis для chat history (по userId)
UI: Teams bot (Bot Framework) + Slack bot
Eval: xUnit-тесты с LLM-judge на golden set 100 пар
Cost: ~$500–1500 / mo
B. Customer Support Copilot
Профиль: 500K документов (продукт + история тикетов), 5K запросов/день, средняя цена ошибки.
Kernel: SK 1.x (C# или Python)
Hosting: Azure Container Apps + AKS для воркеров
Models: Claude Sonnet 4.6 (через wrapper) или AOAI gpt-4o
Embeddings: AOAI text-embedding-3-large
Vector store: Azure AI Search (hybrid + semantic ranker), отдельный index per продукт
Plugins: KbSearch (TextSearch), TicketLookup (Zendesk OpenAPI), CustomerInfo (CRM)
Filters: ApprovalFilter (для refund actions), ContentSafetyFilter
Memory: Cosmos DB для долгих чат-историй
Eval: PromptFlow / Azure AI Foundry, A/B testing
Cost: ~$3K–8K / mo
C. DevOps assistant
Профиль: диагностика инцидентов, runbooks, доступ к мониторингу.
Kernel: SK 1.x C#
Hosting: AKS, namespaced на ops-namespace
Models: AOAI gpt-4o + o1 для сложного reasoning
Plugins:
- PrometheusPlugin (PromQL-запросы)
- LokiPlugin (логи)
- GrafanaPlugin (dashboards)
- GithubPlugin (для PR-history)
- SlackPlugin (notify on-call)
- KubectlPlugin (через MCP filesystem-server)
Orchestrator: StepwisePlanner или ReAct-агент
Approval: Filter, все mutating операции (kubectl apply, rollback) требуют human approval
Audit: App Insights + Splunk (compliance)
Cost: ~$1K–3K / mo
D. BI-помощник (text-to-SQL + RAG)
Профиль: аналитики задают вопросы по корпоративному DWH (Synapse / Databricks).
Kernel: SK 1.x Python (богаче ML-экосистема)
Hosting: AKS
Models: AOAI gpt-4o + gpt-4o-mini для роутинга
Plugins:
- DwhSchemaPlugin (RAG по описаниям таблиц)
- SqlExecutorPlugin (с whitelist read-only queries)
- ChartGeneratorPlugin (Plotly через code interpreter)
Orchestration: Agent Framework, Planner + SQLWriter + Reviewer + Visualizer
Vector store: pgvector (рядом с DWH-метаданными)
UI: Web app, Slack, Teams
Cost: ~$2K–5K / mo
Cost-калькуляция: типичный пример
Сценарий: Internal copilot, 1000 запросов/день, 5M-токенов knowledge base, 30 дней:
| Статья | Подсчёт | В месяц |
|---|---|---|
| Initial indexing (5M tok × $0.13/1M) | $0.65 | разово |
| Re-indexing 5% корпуса в день | ~$0.10/day | $3 |
| Azure AI Search (Standard S1, 25GB) | flat | ~$250 |
| Per-query: embedding запроса ($0.0001) | $0.10/day | $3 |
| Per-query: gpt-4o-mini routing (1K in + 100 out) ≈ $0.0002 | $0.20/day | $6 |
| Per-query: gpt-4o основная (5K in + 500 out) ≈ $0.018 | $18/day | $540 |
| Container Apps (1 vCPU, 2 instances) | flat | ~$60 |
| Application Insights (1GB ingestion/day) | flat | ~$70 |
| Key Vault, Bandwidth, мисc | ~$30 | |
| Total | ~$950 / mo |
С routing-стратегией (50% запросов на mini вместо 4o), экономия 30–40%. С prompt caching, ещё 10–20% на пиках.
5 главных ошибок при запуске SK
1. Запуск с длинным prompt'ом без кеширования.
Каждый AI-вызов, это full prompt в model. 4K токенов system × 1000 запросов/день = $$$. Решение: prompt caching (Anthropic, AOAI 2024+), вынести стабильные части в начало.
2. Слишком много функций → деградация function calling.
Эмпирика: > 30–50 функций в одном Kernel, модель путается. Решение: routing-агент (классификатор intent → специализированный агент с маленьким набором).
3. Auto function calling без budget.
По умолчанию MaximumAutoInvokeAttempts = 128. Заклинивший агент сжигает $50 за минуту. Решение: ставить 5–15, мониторить метрику циклов в OTel.
4. Прямой доступ к LLM без filters.
Нет PII-маскирования → утечка персональных данных в логи. Нет approval, агент сам отправляет миллион писем. Решение: с первого дня настроить IPromptRenderFilter (PII) и IAutoFunctionInvocationFilter (approval для opasных).
5. Пропуск аудита данных перед RAG.
«У нас нормальные документы в Confluence». Через месяц, непонятные ответы. Решение: см. курс по RAG, этап 2.
Команда минимального проекта
- 1 product owner, связь с пользователями, приоритеты.
- 1 .NET / Python engineer (full-time), основной разработчик SK.
- 1 ML/AI engineer (part-time), eval, prompt iteration, model selection.
- 1 platform engineer (part-time), Azure-инфра, security, secrets, scaling.
- 1 data steward (part-time), поддержание чистоты корпуса для RAG.
Для POC хватит одного full-stack .NET-инжa с AI-опытом. Для прода 5K+ запросов/день, команда из 3–4 человек минимум.
Что почитать дальше
- Официальная документация:
learn.microsoft.com/semantic-kernel - GitHub:
microsoft/semantic-kernel, sample проекты в/samples - Awesome SK:
microsoft/awesome-semantic-kernel - Microsoft Reactor / DotNetConf, актуальные сессии по SK
- Azure AI Foundry docs, eval, deployment, content safety
- Discord и DevBlogs, community и feature announcements
Главное
Semantic Kernel в 2026, самый зрелый AI-runtime для .NET и один из лучших для enterprise-внедрений в любом стеке. Это не самый хайповый, но самый предсказуемый выбор: стабильное API, нормальная documentation, OpenTelemetry из коробки, MIT-лицензия, бекинг Microsoft.
Успех проекта на SK на 70% определяется тем же, что и любой LLM-проект: качеством данных, правильным выбором use-case, дисциплиной измерений. Технология, лишь инструмент. Стек, метрики, паттерны, всё описано. Стартуйте с узкого сценария, чистите данные, измеряйте, итерируйте.