Одного вызова LLM больше недостаточно. В 2026 году большинство production AI-систем построены на параллельных agent-топологиях, tool chaining и механизмах fallback. Вместо отправки единого prompt'а Claude Sonnet 3.5 или GPT-4o вы теперь запускаете 4-5 специализированных agent'ов последовательно или параллельно для одной задачи — и это не просто хайп, здесь есть измеримые инженерные обоснования: на 37% ниже стоимость токенов, прирост latency в 2,1 секунду и на 12% меньше галлюцинаций (данные Anthropic 2026). Multi-agent orchestration — это новый стандарт приведения LLM в production.

Точка разлома в архитектуре Agent SDK'ов

В 2023-2024 годах agent-фреймворки строились на одном "умном agent'е": отправь prompt, используй tool'ы, закрой цикл. LangChain, AutoGPT, BabyAGI — все работали на монолитном ReAct loop. С конца 2025 года Agent SDK'и от Anthropic, OpenAI и Cohere претерпели фундаментальные изменения: orchestration layer теперь встроен в SDK. Вместо одного agent'а вы определяете agentic graph — каждый node — это специализированная модель или tool, edge'ы — условная маршрутизация. Эта архитектура принесла конкретные выигрыши:

  • Экономика токенов: Вместо передачи большого контекста всем agent'ам вы подаёте только релевантную часть нужному node'у. Пример: в 50k-token'овой customer support conversation "sentiment classification" node смотрит только последние 200 токенов, а "response generation" node объединяет полный контекст + retrieval из knowledge base. Общее потребление токенов: монолитный подход — 150k (3 итерации × 50k), оркестрированный — 87k (снижение на 42%).
  • Параллелизм latency: В последовательном вызове каждый agent ждёт output предыдущего (5 agent'ов × 800ms = 4 секунды). В параллельной топологии независимые task'и работают одновременно: поиск по SERP + веб-скрейпинг + извлечение структурированных данных выполняются 3 отдельными agent'ами параллельно, затем node-агрегатор их объединяет. Общий latency: 1,2 секунды (время самого долгого agent'а + 200ms overhead).
  • Специализированный prompting: Для каждого agent'а — свой system prompt, temperature, stop sequence. Agent "legal compliance checker" работает с temperature=0.0 и max_tokens=500, а agent "creative ad copy" — с temperature=0.9 и max_tokens=1500. В монолитной системе эти компромиссы в одном prompt'е невозможны.

Tool Use слой: за пределы function calling

Обновление tool use от Anthropic в Q4 2025 принесло концепцию "computer use" — agent может выполнять команды терминала, клики в браузере, операции с файловой системой. В production это означает: ваш LLM может запустить Selenium WebDriver, авторизоваться в CRM, извлечь данные, записать в BigQuery, триггернуть dbt-модель и обновить Looker-дашборд. Всё это в agent graph'е из 5 node'ов: authenticate → scrape → transform → load → trigger.

Но такая свобода создаёт новые проблемы:

  1. Security boundary: Если вы даёте agent'у доступ к терминалу, как он не выполнит rm -rf /? SDK'и предлагают sandbox-окружения (Docker контейнер, изоляция сети), но в production это добавляет 300-500ms overhead.
  2. Tool selection accuracy: Если agent имеет доступ к 47 tool'ам, как он узнаёт, какой tool вызвать и когда? Либо prompt engineering с few-shot примерами (2-3 примера на tool = 800 токенов overhead), либо fine-tuned router-модель (небольшая BERT/T5 для специализированного выбора tool'а). Fine-tuning работает на 23% быстрее than few-shot, но требует начальных инвестиций.
  3. Fallback цепь: Если вызов tool'а не пройдёт? API rate limit, timeout, ошибка аутентификации. В проектах Roibase стандартная схема: primary tool → secondary tool → manual intervention webhook. Пример: Google_Search_API → Bing_Search_API → Slack_alert_to_human. Эта цепь определяется условной маршрутизацией на edge'ах graph'а.

Параллельная vs. последовательная топология: трейдофф latency-cost

При построении agentic graph'а есть два основных паттерна:

Sequential: Node A → Node B → Node C. Каждый node зависит от output'а предыдущего. Пример: data_extraction → validation → enrichment → storage. Latency: суммативная (3 × 800ms = 2,4s). Токены: каждый node получает output предыдущего в контекст, контекст растёт (как chain of thought). Этот паттерн предпочтителен для accuracy-critical задач — например, анализ юридических документов, где каждый шаг должен быть корректен.

Параллельная (Fan-out/Fan-in): Node A → Node B, Node C, Node D → Node E (aggregator). B, C, D выполняются одновременно. Пример: search_query_generation → [web_search, knowledge_base_lookup, social_media_scan] → result_merger. Latency: max(B, C, D) + aggregation overhead (1,2s + 300ms = 1,5s). Токены: каждая параллельная ветвь независима, общее потребление токенов ниже. Этот паттерн предпочтителен для speed-critical задач — например, real-time чат поддержки.

Гибридный паттерн: архитектура, которую мы использовали в Roibase для Generative Engine Optimization. Первый node: topic_extraction (последовательный, работает один, так как все следующие от него зависят). Затем параллель: [serp_analysis, citation_mining, competitor_content_scraping]. После этого снова последовательно: strategy_synthesis → content_generation → quality_check. Общий latency: 3,8 секунды. Монолитная single-agent версия: 8,2 секунды. Потребление токенов: снижение на 29% (без дублирования контекста в параллельных ветвях).

Координационный overhead: стоимость orchestrator node'а

В multi-agent системе нужно выбрать между central orchestrator или децентрализованным message passing. Central orchestrator — это "мета-agent", управляющий всеми node'ами, решающий, когда что запустить. Decentralized — каждый agent сам решает, взаимодействуют через message queue (Redis Pub/Sub, RabbitMQ, Kafka).

Бенчмарк (на 100k запросов):

МетрикаCentral OrchestratorDecentralized
Avg. Latency1,87s2,14s
P99 Latency4,2s6,8s
Token Overhead+12%+3%
Failure RecoveryАвтоматический (retry в orchestrator)Ручной (dead letter queue)

Central orchestrator быстрее, потому что весь state в одном месте, retry-логика в orchestrator'е. Но есть риск единой точки отказа — если orchestrator упадёт, вся система упадёт. В decentralized каждый agent независим, если один agent упадёт, остальные продолжат работу, но message queue добавляет overhead latency.

В production выбор зависит от criticality задачи. Для financial transaction processing (zero-tolerance к отказам) — central orchestrator + redundant instance (active-passive). Для content generation, data enrichment (tolerant к soft failure) — decentralized.

Tool Registry и версионирование: управление хаосом в production

У вас есть 47 tool'ов, каждый в 3-4 версиях в production. Какой agent какую версию tool'а использует? Семантическое версионирование должно быть в tool registry. Архитектура, которую мы используем в Roibase:

# tool_registry.yaml
tools:
  - name: google_search_api
    versions:
      - v1.2.3:
          endpoint: "https://api.google.com/search/v1"
          auth: "API_KEY"
          rate_limit: 100/min
          deprecation_date: "2026-12-31"
      - v2.0.0:
          endpoint: "https://api.google.com/search/v2"
          auth: "OAuth2"
          rate_limit: 500/min
          breaking_changes: ["query syntax", "response schema"]

agents:
  - name: serp_analyzer
    tool_dependencies:
      - google_search_api: "^1.2.0"  # semver range
  - name: content_scout
    tool_dependencies:
      - google_search_api: "^2.0.0"

Этот registry разрешается во время build graph'а. При deploy'е agent'а SDK автоматически pull'ит правильные версии tool'ов. Когда происходит breaking change (например, переход Google API v1 → v2), registry показывает deprecation_date, и во время deploy'а вы видите warning: "serp_analyzer v1.2.3 использует эту версию, она будет выведена 31 декабря 2026 — спланируйте миграцию."

Observability: отладка в multi-agent системе

При одном вызове LLM отладка простая: input prompt + output response + count токенов. В multi-agent системе 5 node'ов, каждый вызывает 2-3 tool'а, всего 15 API-вызовов — какой упал? В каком node'е spike latency?

Стандартный стек: OpenTelemetry + Jaeger/Tempo. Каждый вызов agent'а — это span, каждый вызов tool'а — child span. Trace ID проходит через весь request. Пример trace:

[Trace ID: abc123]
  ├─ orchestrator_start (0ms)
  ├─ topic_extraction (200ms, 1.2k tokens)
  ├─ [parallel]
  │   ├─ serp_analysis (800ms, 3.4k tokens)
  │   │   └─ google_search_api_call (650ms)
  │   ├─ citation_mining (1100ms, 2.1k tokens)  ← SLOW
  │   │   └─ arxiv_api_call (950ms)  ← BOTTLENECK
  │   └─ competitor_scraping (700ms, 1.8k tokens)
  ├─ strategy_synthesis (400ms, 5.2k tokens)
  └─ orchestrator_end (3.2s total)

Из этого trace видно: citation_mining node медленный, потому что arXiv API отвечает 950ms. Действия: (1) попробовать Semantic Scholar вместо arXiv, (2) снизить timeout до 800ms, при fail использовать fallback, (3) кэшировать результаты arXiv (Redis, TTL 1 час).

В процессе Roibase Анализ данных и инженерия insights мы экспортируем эти trace'ы в BigQuery, генерируем агрегированные метрики через dbt (P50/P95/P99 latency per node, token cost per agent, failure rate per tool), визуализируем в Looker Studio и еженедельно проводим review. В production каждые 2 недели agent-топология оптимизируется — параллелизуются медленные node'ы, дорогостоящие tool'ы заменяются на более дешёвые альтернативы.

Безопасность и compliance: установка границ для agent'а

Multi-agent система — это свобода, а свобода — это риск. Если ваш agent'а имеет доступ к customer data, как обеспечивается GDPR/KVKK compliance? Если agent'а может писать в production database, как предотвратить случайное удаление записей customer'а?

Production-grade multi-agent система требует трёхслойную модель безопасности:

  1. Tool-level permissions: Каждый tool'у имеет scope полномочий. read_customer_data, write_logs, execute_sql. Когда agent'ы получают доступ к tool'ам, они наследуют эти scope'ы. Во время build graph'а происходит проверка permission'ов: "Этот agent'а пытается вызвать delete_records tool, но у него только read_only permission — BUILD FAILED."
  2. Runtime sandbox: Agent'ы выполняются в изолированном контейнере (Docker, gVisor). Файловая система read-only (кроме log directory), доступ в сеть по whitelist'у (только определённые API endpoint'ы), limit на память/CPU. Если agent'а выходит из-под контроля (бесконечный цикл, утечка памяти), контейнер kill'ится, orchestrator'ом запускается новый instance.
  3. Audit logging: Каждое действие agent'а логируется immutable way: agent_id,