Одного вызова 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.
Но такая свобода создаёт новые проблемы:
- Security boundary: Если вы даёте agent'у доступ к терминалу, как он не выполнит
rm -rf /? SDK'и предлагают sandbox-окружения (Docker контейнер, изоляция сети), но в production это добавляет 300-500ms overhead. - 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, но требует начальных инвестиций.
- 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 Orchestrator | Decentralized |
|---|---|---|
| Avg. Latency | 1,87s | 2,14s |
| P99 Latency | 4,2s | 6,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 система требует трёхслойную модель безопасности:
- Tool-level permissions: Каждый tool'у имеет scope полномочий.
read_customer_data,write_logs,execute_sql. Когда agent'ы получают доступ к tool'ам, они наследуют эти scope'ы. Во время build graph'а происходит проверка permission'ов: "Этот agent'а пытается вызватьdelete_recordstool, но у него толькоread_onlypermission — BUILD FAILED." - Runtime sandbox: Agent'ы выполняются в изолированном контейнере (Docker, gVisor). Файловая система read-only (кроме log directory), доступ в сеть по whitelist'у (только определённые API endpoint'ы), limit на память/CPU. Если agent'а выходит из-под контроля (бесконечный цикл, утечка памяти), контейнер kill'ится, orchestrator'ом запускается новый instance.
- Audit logging: Каждое действие agent'а логируется immutable way:
agent_id,