Выбор фреймворка для агентного ИИ: LangGraph, CrewAI, OpenAI SDK, ADK
Пропустите таблицы с функциями. Разделите свой проект на одну из пяти категорий, сравните четыре стиля оркестрации и посмотрите минимальные примеры использования LangGraph, CrewAI и OpenAI SDK.
Источники: A Guide to Choosing an Agentic AI Framework
Выбор фреймворка для агентов в 2026 году кажется сложнее, чем должно быть. Если начать поиски, вы столкнетесь с LangGraph, CrewAI, OpenAI Agents SDK, Google’s Agent Development Kit, Claude Agent SDK, AG2, PydanticAI и ещё несколькими решениями, каждое из которых предлагает себя в качестве наиболее подходящего варианта.
Эта путаница — не результат неудачных исследований с вашей стороны. Рынок раздроблен, и выбор скорее философский, чем технический, поскольку каждый фреймворк отражает своё мнение о том, в какой степени следует контролировать выполнение действий агента и как агенты должны взаимодействовать друг с другом. Одна из формулировок из пояснительных материалов IBM хорошо описывает правильный подход: перестаньте спрашивать, какой фреймворк лучше, и задайте себе вопрос о том, какую систему агентов вы собираетесь создать.
Приведенный ниже материал предназначен для разработчиков и архитекторов среднего уровня и руководителей, которые уже знают, что такое агент: это модель с инструментами, инструкциями и некоторой памятью, способная выполнять более одного шага для достижения цели. Предполагается, что вы умеете читать код на Python и уже пробовали использовать цикл вызова инструментов для одного агента. В тексте проекты делятся на пять категорий, затем сравниваются четыре философии оркестрации, после чего приводятся три минимальных примера кода, чтобы вы могли оценить различия в моделях программирования перед тем, как начать работу над кодовой базой.
Что на самом деле экономит вам фреймворк
Для демонстрации вы можете создать агента без использования какого-либо фреймворка. Однако некоторые проблемы возникают практически в каждой серьезной системе, и фреймворк существует в основном для того, чтобы вам не приходилось решать их заново:
- Цикл рассуждений. Вызываете модель, запускаете выбранные ею инструменты, возвращаете результаты обратно и повторяете процесс до тех пор, пока не будет выполнено условие остановки.
Все приведённые здесь фреймворки охватывают эти четыре области. Они отличаются степенью настойчивости в продвижении собственного решения.
Начните с конкретного случая использования
Прежде чем сравнивать функции, определите, что именно вы планируете создать. Пять категорий охватывают большинство проектов, причём каждая из них предлагает свой список возможных вариантов.
- Линейные рабочие процессы. Шаги выполняются в предсказуемом, в основном фиксированном порядке: сотрудник службы поддержки ищет информацию в базе знаний, составляет ответ и, возможно, открывает заявку. Здесь не требуется обсуждений между сотрудниками. Необходима надежность. LangChain подходит для последовательностей, LlamaIndex — для задач, требующих активного поиска информации, а LangGraph находит свое применение там, где последовательности нуждаются в условиях или циклах.
- Автономные команды из нескольких агентов. Цель задачи передается группе агентов, которые сами определяют способ её выполнения — например, планировщик, программист и рецензент совместно работают над программным проектом. Такие задачи по своей природе являются открытыми. AG2 (поддерживаемый преемник AutoGen) и CrewAI — это наиболее распространенные решения для таких случаев.
Такой способ сортировки превращает вопрос «какая фреймворк?» в более конкретную формулировку. Является ли процесс предсказуемым, исследовательским, ограниченным определенными ролями, направленным на внедрение в производство или всего лишь гипотезой?
Четыре способа, с помощью которых фреймворки моделируют координацию
Даже среди фреймворков, попавших в список возможных решений, существуют различия в способах представления координации. В целом они следуют одной из четырех философий.
- На основе графов. Агенты и логика представляются в виде узлов направленного графа, а явные ребра, будь то условные или циклические, определяют последующие действия. LangGraph — наиболее яркий пример; по сути, здесь определяется машина состояний.
- На основе ролей. Каждый агент — это участник команды с определенной ролью, целью и предысторией, в то время как слой процессов определяет, как задачи передаются между ними. CrewAI построена именно на этой концепции.
Ни одна философия не является абсолютно лучшей. Ваш выбор должен определяться существующей моделью понимания проблемы в вашей команде и степенью явного контроля над путями выполнения, которую вы действительно хотите иметь.
Место фреймворка в стеке
Каждая платформа строится на одном или нескольких поставщиках моделей и управляет циклом рассуждений. Над этим находится вызов инструментов, который всё больше стандартизируется с помощью MCP. Сообщается, что с декабря 2025 года за его развитие отвечает Agentic AI Foundation при Linux Foundation, и каждая из этих платформ поддерживает его в той или иной форме. Когда агентам необходимо обмениваться информацией между разными процессами или сервисами, протокол Agent2Agent (A2A) становится аналогичным стандартом, имеющим встроенную поддержку в ADK и постепенно появляющимся и в других решениях.
Ниже рассматриваются механизмы сохранения состояния, такие как создание чекпоинтов LangGraph в базе данных или простая история чатов в памяти, а также слои наблюдаемости, например LangSmith для LangGraph или встроенный трейсинг в SDK OpenAI Agents. Эти элементы становятся гораздо более важными, когда агент работает с реальными пользователями, чем в рамках ноутбука. Ни одна из этих платформ не привязана к конкретной облачной платформе. SDK OpenAI Agents и Google ADK естественным образом ориентированы на модели своих поставщиков, в то время как LangGraph и CrewAI стремятся оставаться независимыми от конкретных моделей.
Три минимальных примера
Эти фрагменты преднамеренно очень маленькие. Они демонстрируют модель программирования каждой платформы и не являются производственными системами. Названия пакетов и шаги установки в этой области быстро меняются, поэтому сначала проверьте актуальную документацию к каждому проекту.
LangGraph: граф из двух узлов
# pip install langgraph
from langgraph.graph import StateGraph, END
from typing import TypedDict
class State(TypedDict):
question: str
answer: str
def research(state: State) -> State:
state["answer"] = f"Researched: {state['question']}"
return state
def write(state: State) -> State:
state["answer"] = f"Written up: {state['answer']}"
return state
graph = StateGraph(State)
graph.add_node("research", research)
graph.add_node("write", write)
graph.set_entry_point("research")
graph.add_edge("research", "write")
graph.add_edge("write", END)
app = graph.compile()
result = app.invoke({"question": "What is agentic AI?", "answer": ""})
print(result["answer"])
# Output: Written up: Researched: What is agentic AI?
Код определяет типизированное состояние, общее для всех узлов, добавляет два узла в виде обычных функций Python и соединяет их с помощью явного ребра. Здесь не используется никакой LLM. LangGraph преднамеренно остаётся нейтральным в этом отношении, поэтому вы можете подключать любой нужный вам клиент модели к каждому узлу.
CrewAI: двухагентная команда
# pip install crewai
from crewai import Agent, Task, Crew
researcher = Agent(
role="Researcher",
goal="Find accurate information on the given topic",
backstory="An experienced analyst who values accuracy over speed."
)
writer = Agent(
role="Writer",
goal="Turn research into a clear summary",
backstory="A technical writer who favours plain language."
)
research_task = Task(
description="Research agentic AI frameworks",
expected_output="A short list of key considerations",
agent=researcher
)
write_task = Task(
description="Summarise the research for a developer audience",
expected_output="A concise paragraph",
agent=writer
)
crew = Crew(agents=[researcher, writer], tasks=[research_task, write_task])
result = crew.kickoff()
Нет узлов или рёбер, которые нужно соединить. Два агента описываются через их роль и цель, и каждому из них задаётся задание. Стандартный процесс команды выполняет задания поочерёдно, передавая результат каждого следующему. CrewAI осуществляет координацию, которую в LangGraph пришлось бы моделировать явно.
OpenAI Agents SDK: передача диалога между агентами
# pip install openai-agents
from agents import Agent, Runner
billing_agent = Agent(
name="Billing",
instructions="Handle billing questions concisely."
)
triage_agent = Agent(
name="Triage",
instructions="Answer general questions; hand off billing questions to Billing.",
handoffs=[billing_agent]
)
result = Runner.run_sync(triage_agent, "Why was I charged twice this month?")
print(result.final_output)
В примере агенту, отвечающему за сортировку задач, сообщают о ещё одном агенте, которому он может передать работу. Если модель определяет, что сообщение касается вопросов оплаты, движок SDK автоматически переносит разговор к агенту по оплате. Никаких графов, никаких метафор ролей: только агенты, а также инструменты и способы передачи задач, которые они могут использовать. Google ADK похож по масштабу — это корневой агент с sub_agents, однако его подагенты образуют явное дерево, которое может включать удалённых агентов через протокол A2A, в то время как перечень способов передачи задач выше представлен в виде плоской структуры.
Подбор подходящей платформы для вашей ситуации
Используйте LangGraph, когда:
- в вашем рабочем процессе есть циклы, повторные попытки или условные ветви, которые вы хотите явно описать;
- вам нужно сохранять состояние после перезапуска или для отладки с использованием механизма «путешествия во времени»;
- ваша команда уже использует компоненты LangChain.
Используйте CrewAI, когда:
- проблема естественным образом делится на определённые роли, и такая структуризация помогает людям вне инженерных команд понимать ситуацию;
- вам нужно, чтобы что-то заработало в течение нескольких часов;
- вы готовы использовать более простые фреймворки для критически важных компонентов, если последовательность действий, основанная на ролях, становится недостаточной;
Используйте OpenAI Agents SDK в следующих случаях:
- вы разрабатываете приложения в основном на моделях OpenAI и хотите добавить минимально необходимый слой над циклом рассуждений;
- вам нужна простая передача задач между несколькими специалистами.
Используйте Google ADK в следующих случаях:
- вы уже работаете в Google Cloud или экосистеме Gemini;
- агенты должны работать в разных командах или сервисах, что идеально подходит для модели удалённых агентов A2A.
Обратитесь к другим решениям в следующих случаях:
- Безопасность типов важнее гибкости оркестрации, и в таком случае PydanticAI, который проверяет входные и выходные данные агента согласно моделям Pydantic, может превзойти все четыре подхода;
- Вы находитесь на этапе прототипирования одного из пяти сценариев использования, и в таком случае LangFlow или Flowise до написания кода фреймворка — лучший старт.
Ошибки, которые допускают команды
- Выбор до определения.** Команды берут тот фреймворк, у которого больше всего оценок, и пытаются вписать свою задачу в его структуру. Сначала определить категорию обычно помогает четко сформировать список возможных вариантов, гораздо эффективнее, чем изучение четырех наборов документации.
- Игнорирование затрат на смену.** Подсказки, логика агента и шаблоны оркестрации редко можно легко перенести с одного фреймворка на другой. Если вы предполагаете, что первый выбор вскоре окажется недостаточным, планируйте частичную переработку и не рассчитывайте на быструю замену.
Ваши следующие шаги
- Прежде чем изучать документацию любой платформы, определите, к какой из пяти категорий относится ваш проект: линейная, автономная с множеством агентов, основанная на ролях, оркестрация в производственных условиях или быстрый прототип.
- Установите одну из вышеупомянутых платформ и создайте простой пример, адаптированный под ваши собственные задачи, вместо приведённого в документации.
- Поищите готовые серверы инструментов MCP для систем, к которым вам нужно подключиться, и избегайте ручного создания соединительных компонентов, если такие уже существуют.
- Заранее договоритесь о правилах перехода на другую платформу, например, о переходе на LangGraph при выполнении трёх определённых условий.
Kраткий вариант
Прежде чем спрашивать, какая фреймворк лучше всего подходит, определите, какая из пяти типичных схем описывает ваш проект: предсказуемый линейный поток, автономная команда без четких рамок, группа с определенными ролями, задача по оркестрации производства или идея на этапе прототипирования.
Ответ на этот вопрос сужает круг возможных вариантов еще до того, как откроется таблица функций. После этого остается в основном вопрос философии. Выберите LangGraph для прямого контроля над ветвлением логики, CrewAI для работы на основе ролей и быстрой итерации, OpenAI Agents SDK для простоты использования моделей OpenAI, а ADK — если вы уже работаете в экосистеме Google. MCP и A2A постепенно становятся стандартами для инструментов и взаимодействия агентов, поэтому смена подхода позже будет менее болезненной, хотя это все равно не обойдется без затрат.