Построение сложных AI-агентов требует понимания трех разных слоев: оркестрации рабочего процесса (workflow), маршрутизации моделей (model routing) и маршрутизации провайдеров (provider routing). LangChain и CrewAI решают первую задачу, а OpenRouter — две остальные. Использование фреймворка оправдано, если вам нужна сложная логика, память и делегирование. Если же цель — просто выбрать лучшую модель для запроса и автоматически переключиться на резервную при ошибке, нативный роутинг OpenRouter проще и эффективнее.
01Три слоя абстракции
Понимание различий между слоями помогает избежать избыточной сложности:
- Workflow orchestration (LangGraph, CrewAI): Планирование, управление состоянием, память, делегирование задач между агентами. LangGraph использует графы с явным состоянием, CrewAI — роли и события.
- Model routing (OpenRouter): Выбор модели для конкретного вызова. Параметр
modelsв OpenRouter — это упорядоченный список фолбэков. Если первая модель возвращает ошибку, система автоматически пробует следующую. - Provider routing (OpenRouter): Выбор конкретного провайдера (endpoint) для выбранной модели. Многие модели доступны у разных провайдеров. OpenRouter выбирает оптимальный, а для запросов с инструментами использует Auto Exacto для сортировки провайдеров по качеству вызова инструментов.
02LangChain и LangGraph: Графовая оркестрация
LangGraph — это низкоуровневый рантайм для создания устойчивых (durable) рабочих процессов. Он моделирует процесс как граф узлов и ребер. Это дает полный контроль, но требует написания кода для каждого шага.
Ключевые возможности:
- Checkpointer: Сохраняет состояние графа для каждого потока, позволяя делать "time travel" (возврат к предыдущим состояниям) и обеспечивать отказоустойчивость.
- Human-in-the-loop: Функция
interrupt()позволяет приостановить выполнение узла, сохранить состояние и ждать подтверждения от человека (черезCommand), прежде чем продолжить. - Store: Долгосрочная память вне состояния графа для кросс-поточных данных.
LangGraph идеален, когда каждый шаг должен быть проверяемым, возобновляемым и прозрачным. Однако для простой задачи "вызов модели с фолбэком" это избыточно.
03CrewAI: Ролевые агенты и событийные потоки
CrewAI предлагает другой подход: организация работы через роли (Roles), цели (Goals) и задачи (Tasks). Агенты объединяются в Crews (команды), которые могут работать последовательно или иерархически (с менеджером-агентом).
Структурным элементом является Flow — событийно-ориентированный слой, определяющий шаги, передачу состояния и логику ветвления. В отличие от графов LangGraph, здесь вы описываете задачи текстом, а агенты сами решают, как их выполнить.
- Параметр
allow_delegationразрешает агентам делегировать задачи друг другу. max_iter(по умолчанию 20) иmax_execution_timeограничивают итерации и время выполнения.
CrewAI ближе к описанию бизнес-задач, чем к определению технического графа. Это снижает порог входа, но дает меньше контроля над каждым шагом выполнения.
04Нативный роутинг OpenRouter: Простота и надежность
Если вам не нужна сложная оркестрация, а требуется только выбор модели и автоматический фолбэк, OpenRouter позволяет сделать это без сторонних фреймворков. Вы отправляете запрос на https://openrouter.ai/api/v1/chat/completions с параметром models, содержащим список приоритетных моделей.
Пример функции на Python, реализующей роутинг с фолбэком:
import os
import requests
def route(models: list[str], prompt: str) -> tuple[str, str]:
response = requests.post(
"https://openrouter.ai/api/v1/chat/completions",
headers={"Authorization": f"Bearer {os.environ['OPENROUTER_API_KEY']}"},
json={
"models": models,
"messages": [{"role": "user", "content": prompt}]
},
timeout=120
)
response.raise_for_status()
body = response.json()
return body["choices"][0]["message"]["content"], body["model"]
# Пример использования: черновик с одной модели, ревью с другой
draft, draft_model = route(
["anthropic/claude-sonnet-5", "openai/gpt-5.6-sol"],
"Draft a one-paragraph summary of what a model fallback list does."
)
review, review_model = route(
["openai/gpt-5.6-sol", "anthropic/claude-sonnet-5"],
f"Review this draft for accuracy and suggest improvements: {draft}"
)В этом примере, если anthropic/claude-sonnet-5 недоступна, OpenRouter автоматически пробует openai/gpt-5.6-sol. Цена запроса рассчитывается по той модели, которая в итоге ответила, а поле model в ответе указывает, кто именно обработал запрос.
05Сравнительная таблица
| Критерий | LangGraph / LangChain | CrewAI | OpenRouter Native |
|---|---|---|---|
| Основная задача | Графовая оркестрация, явное состояние | Ролевые агенты, событийные потоки | Выбор модели, фолбэк, провайдеры |
| Мульти-модель | Да (объект модели на узел/агента) | Да (LLM на агента/команду) | Да (список models в запросе) |
| Планирование и память | Явное (граф, checkpointer, store) | Через агентов, процессы и состояние Flow | Нет (только роутинг) |
| Человек в цикле | interrupt() + checkpointer |
Требует кастомной логики в Flow | Не предусмотрено |
| Стриминг | Да | Да (на уровне crew, stream=True) |
Да (на уровне запроса) |
| Что нужно писать | Узлы, ребра, схема состояния, конфиг | Определения агентов, задач, crew, flow | Тело запроса (JSON) |
06Гибридный подход: OpenRouter внутри фреймворка
Вы не обязаны выбирать между оркестрацией и роутингом. OpenRouter предоставляет интеграции для обоих фреймворков:
- LangChain: Используйте
ChatOpenRouterкак провайдера моделей внутри агентов LangChain. - CrewAI: Укажите OpenRouter как провайдера в классе
LLM.
Это позволяет сохранить сложную логику оркестрации (графы или роли) и одновременно получить преимущества роутинга OpenRouter (фолбэки, выбор провайдеров, Auto Exacto).
07Кому подойдёт / что запустится
- Выбирайте OpenRouter Native, если: Вам нужно просто вызывать модели с фолбэком, экономить токены на дешевых моделях для черновиков и использовать сильные модели для финальной проверки. Идеально для простых пайплайнов "черновик -> ревью" или API-шлюзов.
- Выбирайте LangGraph, если: Вам нужен полный контроль над состоянием, возможность паузы для проверки человеком, долгосрочная память и сложная логика переходов между шагами. Подходит для сложных enterprise-агентов.
- Выбирайте CrewAI, если: Вы хотите быстро собрать команду специализированных агентов с ролями и целями, делегирующих задачи друг другу, без глубокого погружения в техническую реализацию графов.
Для большинства задач, где требуется только надежность вызовов LLM, нативный роутинг OpenRouter является самым легким и эффективным решением. Фреймворки стоит подключать только тогда, когда логика приложения выходит за рамки последовательных вызовов моделей.
Источник: OpenRouter ↗
