Перейти к содержимому
arckep.ru — все нейросети в одном месте без VPN Перейти
>AISTUDY_
Поддержать
AUTHORСвежий выпуск №024 → Куда внедрять агентов: фронт или тыл

Модуль 4.3 · Урок 2

Фреймворки оркестрации агентов

45 мин
ОбзорПрактика
4.3 / Урок 2 из 4

Введение

Собрать мультиагентную систему из голых API-вызовов можно. Но через неделю вы утонете в управлении состоянием, обработке ошибок, ретраях и логировании. Фреймворки оркестрации решают эти задачи за вас:

  • Управление состоянием — где агент остановился, что уже сделал, какой контекст накопил
  • Восстановление после сбоев — checkpoint, retry, fallback
  • Наблюдаемость — трейсы, метрики, логи каждого шага
  • Масштабирование — параллельное выполнение, очереди, распределённые воркеры

Четыре фреймворка покрывают основные сценарии: LangGraph для сложных графов, CrewAI для ролевых команд, Mastra для TypeScript-стека, Semantic Kernel для .NET/enterprise. Разберём каждый.


LangGraph — графовая оркестрация

Ключевая идея

Агентская логика описывается как граф состояний. Узлы — это действия (вызов модели, инструмент, проверка). Рёбра — переходы между действиями, в том числе условные. Граф компилируется в исполняемое приложение.

Durable execution

Главное преимущество LangGraph — устойчивое выполнение. Каждый шаг сохраняется в checkpoint. Если процесс упал на третьем узле из пяти, после перезапуска он продолжит с третьего, а не начнёт заново. Это критично для долгих workflow: исследование, генерация отчёта, согласование.

graph LR
    A[Старт] --> B[Узел 1: Исследование]
    B --> CP1[Checkpoint 1]
    CP1 --> C[Узел 2: Анализ]
    C --> CP2[Checkpoint 2]
    CP2 --> D{Условие: достаточно данных?}
    D -- Да --> E[Узел 3: Генерация отчёта]
    D -- Нет --> B
    E --> F[Конец]

    style A fill:#f8fafc,stroke:#e2e8f0
    style B fill:#4f46e5,color:#fff,stroke:#4338ca
    style C fill:#4f46e5,color:#fff,stroke:#4338ca
    style E fill:#4f46e5,color:#fff,stroke:#4338ca
    style CP1 fill:#059669,color:#fff,stroke:#047857
    style CP2 fill:#059669,color:#fff,stroke:#047857
    style D fill:#ca8a04,color:#fff,stroke:#a16207
    style F fill:#f8fafc,stroke:#e2e8f0

Пример: граф из двух агентов

from langgraph.graph import StateGraph
from typing import TypedDict

class AgentState(TypedDict):
    messages: list
    next_step: str

def research_node(state: AgentState) -> AgentState:
    """Агент-исследователь: собирает информацию"""
    # Вызов LLM с инструментами поиска
    result = llm.invoke(state["messages"])
    return {"messages": state["messages"] + [result], "next_step": "writer"}

def writer_node(state: AgentState) -> AgentState:
    """Агент-писатель: формирует итоговый текст"""
    result = llm.invoke(state["messages"])
    return {"messages": state["messages"] + [result], "next_step": "end"}

graph = StateGraph(AgentState)
graph.add_node("researcher", research_node)
graph.add_node("writer", writer_node)
graph.set_entry_point("researcher")
graph.add_edge("researcher", "writer")
graph.add_edge("writer", "__end__")

app = graph.compile()
result = app.invoke({"messages": ["Напиши статью про AI-агентов"], "next_step": ""})

Human-in-the-loop

LangGraph позволяет приостановить граф на любом узле и дождаться ввода человека. Агент готовит черновик, человек одобряет или корректирует, агент продолжает. Реализуется через interrupt_before и interrupt_after параметры при компиляции графа.

Когда выбирать LangGraph

  • Сложные workflow с циклами и ветвлениями
  • Критичные процессы, где нельзя потерять прогресс
  • Нужна полная наблюдаемость через LangSmith
  • Команда уже использует LangChain

CrewAI — ролевые команды агентов

  • GitHub: https://github.com/crewAIInc/crewAI (~51 000 stars)
  • Самый быстрый путь от идеи до работающего прототипа
  • Один из самых быстрых фреймворков для прототипирования ролевых команд агентов (по отзывам разработчиков 2026 года)

Ключевая идея

Каждый агент — это роль с целью и предысторией. Вы описываете команду как менеджер: вот исследователь, вот редактор, вот задачи. CrewAI сам координирует их взаимодействие.

Поддержка MCP

CrewAI нативно поддерживает Model Context Protocol. Агенты могут использовать MCP-серверы как инструменты без дополнительной обвязки.

Пример: команда из двух агентов

Определение агентов в CrewAI

python
Нажмите на строку — увидите объяснение

Задачи и запуск команды CrewAI

python
Нажмите на строку — увидите объяснение

Когда выбирать CrewAI

  • Чёткое разделение ролей в команде агентов
  • Структурированные бизнес-процессы
  • Нужен быстрый прототип за часы, не дни
  • Интеграция с MCP-серверами

Mastra — TypeScript-first фреймворк

  • GitHub: https://github.com/mastra-ai/mastra (~24 000 stars)
  • Создан командой Gatsby (бэкграунд YC)
  • Агенты, workflows, RAG, evals — всё в одном пакете

Ключевая идея

Mastra — это фреймворк для TypeScript-разработчиков, которым нужно всё сразу: агенты, пайплайны, RAG, оценка качества. Не надо собирать из 5 разных библиотек. Типобезопасность из коробки, интеграции генерируются автоматически.

Human-in-the-loop с persistent state

Mastra сохраняет состояние workflow между запросами. Агент может приостановиться, дождаться одобрения человека и продолжить через минуту, час или день. Состояние не теряется.

Встроенные evals

Качество ответов агента можно оценивать программно: relevance, faithfulness, toxicity. Это работает в CI/CD — прогнал тесты, увидел деградацию, откатил.

Пример: агент-аналитик

import { Mastra } from '@mastra/core';
import { Agent } from '@mastra/core/agent';
import { openai } from '@ai-sdk/openai';

const analyst = new Agent({
  name: 'analyst',
  instructions: 'Ты аналитик данных. Анализируй информацию и давай структурированные выводы. Отвечай на русском.',
  model: openai('gpt-4o'),
});

const mastra = new Mastra({
  agents: { analyst },
});

const agent = mastra.getAgent('analyst');
const response = await agent.generate('Проанализируй рынок AI-фреймворков в 2026 году');
console.log(response.text);

Когда выбирать Mastra

  • Проект на TypeScript / Next.js / Node.js
  • Нужны встроенные evals для CI/CD
  • Хотите один фреймворк вместо пяти библиотек
  • Типобезопасность критична

Semantic Kernel — enterprise на .NET

  • GitHub: https://github.com/microsoft/semantic-kernel (~28 000 stars)
  • C#, Python (и Java в ограниченном виде)
  • Semantic Kernel активно развивается и является основой для Microsoft Agent Framework (преемник SK + AutoGen).

Ключевая идея

Semantic Kernel — это SDK от Microsoft для встраивания LLM в корпоративные приложения. Архитектура построена на плагинах: каждый плагин — набор функций, доступных агенту. Планировщик решает, какие плагины вызвать для выполнения задачи.

Интеграция с экосистемой Microsoft

Semantic Kernel тесно интегрирован с Azure OpenAI, GitHub Copilot SDK, Microsoft 365. Если ваша компания на стеке Microsoft — это путь наименьшего сопротивления.

Пример: агент на C#

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;

var kernel = Kernel.CreateBuilder()
    .AddOpenAIChatCompletion("gpt-4o", apiKey)
    .Build();

var agent = new ChatCompletionAgent
{
    Name = "Analyst",
    Instructions = "Анализируй данные и предоставляй структурированные отчёты. Отвечай на русском.",
    Kernel = kernel
};

var history = new ChatHistory();
history.AddUserMessage("Какие тренды в AI-агентах в 2026?");

await foreach (var message in agent.InvokeAsync(history))
{
    Console.WriteLine(message.Content);
}

Когда выбирать Semantic Kernel

  • Корпоративная разработка на .NET
  • Инфраструктура на Azure
  • Нужна интеграция с Microsoft 365 и GitHub Copilot
  • Требования к enterprise-grade поддержке

Pydantic AI — type-safe Python для production

Pydantic AI (~16 950 stars на май 2026, релиз v1.93.0 от 8 мая 2026) — фреймворк от команды Pydantic с акцентом на типобезопасность и observability через Pydantic Logfire.

Ключевая идея

Один из самых популярных Python-фреймворков для production-агентов 2026 года. Использует Pydantic-модели как контракт между LLM, tools и приложением: структурированные input/output, validation на лету, автодополнение в IDE, возможность тестирования без вызова LLM.

Когда выбирать

  • Production-приложения на Python, где критична надёжность
  • Команды уже использует Pydantic для API/конфигов
  • Нужна детальная observability через Pydantic Logfire (родной observability-стек)
  • Хочется минималистичный API без graph state machines (LangGraph) и без role-decoration (CrewAI)

Когда не выбирать

  • Если стек на TypeScript (используйте Mastra или Vercel AI SDK)
  • Сложный multi-agent с условными переходами и циклами (LangGraph удобнее)
  • Команда не использует Pydantic — кривая входа

Мини-пример

from pydantic_ai import Agent
from pydantic import BaseModel

class WeatherResponse(BaseModel):
    location: str
    temperature_c: float
    summary: str

agent = Agent(
    "anthropic:claude-sonnet-4-6",
    output_type=WeatherResponse,
    system_prompt="Ты — погодный ассистент."
)

result = agent.run_sync("Какая погода в Москве?")
print(result.output.temperature_c)  # типизировано как float

В отличие от LangGraph и CrewAI — нет общего state graph, нет ролевых crews. Это decorator-style фреймворк: вы просите Agent с типизированным выходом, оркестрацию строите композицией Python-функций.


Strands — AWS-ориентированный simplicity-first

Strands Agents SDK (~5 800 stars, релиз v1.39.0 от 8 мая 2026) — open-source фреймворк с корнями в AWS, но cloud-agnostic. Принцип: agent = model + tools + prompt, без overhead графов и crews.

Ключевая идея

Минимальный API: декорируете Python-функцию через @tool, передаёте список tools агенту, агент сам решает порядок вызовов через native model reasoning (Claude tool use, OpenAI function calling).

from strands import Agent, tool
from strands.models.anthropic import AnthropicModel

@tool
def get_weather(city: str) -> str:
    """Возвращает погоду в указанном городе."""
    return f{city} +18°C, ясно"

agent = Agent(
    model=AnthropicModel(model_id="claude-sonnet-4-6"),
    tools=[get_weather],
    system_prompt="Ты — погодный ассистент."
)

result = agent("Какая погода в СПБ?")
print(result.message)

Когда выбирать Strands

  • Приложение на AWS (Bedrock, Lambda) — Strands из коробки интегрирован с Bedrock-моделями и AWS Observability
  • Хочется минимум абстракций — agent loop + tools, никаких state graphs
  • Multi-agent через композицию (один агент вызывает другого как tool) — без декларативной оркестрации
  • Нужна нативная поддержка MCP и A2A (поддерживается)

Когда не выбирать

  • Сложные multi-agent с условиями и циклами — LangGraph удобнее
  • Не AWS-стек — сравнимые по простоте Pydantic AI и Mastra богаче фичами

LangSmith — мониторинг агентов в production

LangSmith — платформа наблюдаемости от LangChain. Работает не только с LangGraph, но с любым LLM-фреймворком.

Что даёт:

  • Трейсы — полная цепочка вызовов: какой агент, какой prompt, какой ответ, сколько токенов, сколько времени
  • Evals — автоматическая оценка качества ответов на датасетах
  • Мониторинг — дашборды, алерты, автокатегоризация ошибок
  • Datasets — хранение и версионирование тестовых примеров

Для production-систем с агентами наблюдаемость не опциональна. Без трейсов вы не поймёте, почему агент выдал ерунду на третьем шаге из семи.


Сравнительная таблица

КритерийLangGraphCrewAIMastraSemantic Kernel
Stars на GitHub~32K~51K~24K~28K
ЯзыкPython, JSPythonTypeScriptC#, Python, Java
Архитектурный подходГрафы состоянийРоли и задачиAgents + WorkflowsPlugins + Planning
Durable executionДаНетДаНет
Встроенные evalsLangSmithНетДаНет
Human-in-the-loopДаДаДаДа
Поддержка MCPНетДаНетНет
Время до прототипаЧасыМинутыЧасыЧасы
Идеален дляСложная логика с цикламиБыстрый прототип с ролямиTypeScript fullstack.NET и Enterprise

Дерево выбора фреймворка

flowchart TD
    START{На каком языке проект?} -->|Python| PY{Какая задача?}
    START -->|TypeScript| MASTRA[Mastra]
    START -->|C# / Java| SK[Semantic Kernel]

    PY -->|Сложные графы с циклами| LG[LangGraph]
    PY -->|Быстрый прототип с ролями| CREW[CrewAI]
    PY -->|Корпоративный .NET| SK

    LG --> LG_CHECK{Нужен мониторинг?}
    LG_CHECK -->|Да| LS[LangGraph + LangSmith]
    LG_CHECK -->|Нет| LG_SOLO[LangGraph standalone]

    CREW --> CREW_CHECK{Нужен MCP?}
    CREW_CHECK -->|Да| CREW_MCP[CrewAI + MCP-серверы]
    CREW_CHECK -->|Нет| CREW_SOLO[CrewAI standalone]

    style START fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style PY fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style LG_CHECK fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style CREW_CHECK fill:#f8fafc,stroke:#4f46e5,stroke-width:2px
    style MASTRA fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style SK fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style LG fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style CREW fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style LS fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style LG_SOLO fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style CREW_MCP fill:#f0fdf4,stroke:#059669,stroke-width:2px
    style CREW_SOLO fill:#f0fdf4,stroke:#059669,stroke-width:2px

Итоги

Четыре фреймворка — четыре разных подхода к одной задаче:

  1. LangGraph — графы состояний с checkpoint-ами. Для сложной условной логики, где важна устойчивость к сбоям. Экосистема LangChain и LangSmith в комплекте.

  2. CrewAI — ролевые команды агентов. Самый быстрый путь к работающему прототипу. Нативный MCP. Если задача хорошо ложится на роли — это оптимальный выбор.

  3. Mastra — TypeScript-first с evals и RAG из коробки. Для fullstack-разработчиков на Node.js/Next.js, которым нужен один фреймворк вместо зоопарка библиотек.

  4. Semantic Kernel — enterprise SDK от Microsoft. Для компаний на .NET/Azure, где важна корпоративная поддержка и интеграция с экосистемой Microsoft.

Не существует универсального “лучшего” фреймворка. Выбор определяется стеком, задачей и командой. Начинайте с того, что ближе к вашему языку и инфраструктуре.

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

Скачать урок

Есть идея или нашли ошибку?

// Обсуждение

Можно писать анонимно. Укажите email, чтобы получать уведомления об ответах.