Головна / Статті

LangGraph, CrewAI чи Google ADK? Одне завдання для двох агентів, три фреймворки.

Порівняйте LangGraph, CrewAI та Google ADK, створивши одну й ту саму пару дослідника-письменника, а потім оберіть за допомогою п’яти запитань щодо контролю, швидкості та моделі A2A.

Видавець: REACTAPP.TOP6 хв читання1464 слів

Джерела: LangGraph vs CrewAI vs Google ADK: I Built the Same Agent Three Times

Порівняння фреймворків зазвичай ґрунтуються на одній схемі: таблиця функцій, абзац у кожному стовпці та висновок, який уникає будь-яких рекомендацій. Це не допомагає тим, хто опинився на роздоріжжі та мусить зробити вибір та рухатися далі. У цьому порівнянні ми створили однакову невелику систему у LangGraph, CrewAI та Google ADK, тож відмінності походять від коду та компромісів, а не від технічних характеристик.

Три ментальні моделі

Коротке уявлення перед написанням коду:

  • LangGraph — це коробка з кубиками Lego. Кожен вузол, ребро та умовний гілку визначаються явно. Це забезпечує найбільший контроль, але вимагає найбільших зусиль для опанування.
  • CrewAI — це заздалегідь сформована команда, яка запитує, що їй робити. Ролі та цілі визначаються, а фреймворк забезпечує координацію. Це найшвидший шлях до функціонального прототипу, причому майже немає можливості контролювати, як агенти передають один одному завдання.
  • Google ADK працює, як досвідчений інженер бекенду. Він ґрунтується на подіях та має стан, передбачає можливість спостереження, тестування та плавне усунення помилок, крім того, має тісний зв’язок із Google Cloud та Gemini.

Жодне з цих тверджень не є критикою. Це різні підходи до того, що більшість розробників потребують найчастіше.

Завдання для тестування

Кожна платформа виконує однакову роботу: дослідник збирає матеріал, а потім автор перетворює його на кінцеву відповідь, тож автор не може почати роботу, поки дослідник її не завершить. Маршрутизатор у стилі керівника саме цим і займатиметься, що робить його справедливим критерієм для оцінки того, наскільки по-різному кожен інструмент виражає один і той самий процес.

LangGraph

Спочатку імпортується:

from langgraph.graph import StateGraph, END
from typing import TypedDict

Потім — стан у вигляді тексту, вузли та явні ребра:

class State(TypedDict):
    query: str
    research: str
    final_answer: str
def research_node(state: State) -> State:
    # Call your research agent/tool here
    state["research"] = f"Research findings for: {state['query']}"
    return state
def writer_node(state: State) -> State:
    # Call your writer agent, using state["research"]
    state["final_answer"] = f"Final answer using: {state['research']}"
    return state
graph = StateGraph(State)
graph.add_node("research", research_node)
graph.add_node("writer", writer_node)
graph.set_entry_point("research")
graph.add_edge("research", "writer")
graph.add_edge("writer", END)
app = graph.compile()
result = app.invoke({"query": "What is agentic AI?"})

Усі краї тут малюються вручну. На кожному кроці чітко видно, що буде далі, і це є ціною та перевагою LangGraph: додатковий код заздалегідь в обмін на контрольний потік, який фреймворк ніколи не імпровізує.

CrewAI

from crewai import Agent, Task, Crew

Далі йдуть агенти та завдання:

researcher = Agent(
    role="Research Specialist",
    goal="Find accurate information on the given topic",
    backstory="An expert at gathering and synthesizing information."
)
writer = Agent(
    role="Content Writer",
    goal="Write a clear final answer using research findings",
    backstory="An expert at turning research into clear prose."
)
research_task = Task(
    description="Research: {query}",
    agent=researcher,
    expected_output="A summary of relevant findings"
)
writing_task = Task(
    description="Write a final answer using the research",
    agent=writer,
    expected_output="A clear, well-written final answer",
    context=[research_task]
)
crew = Crew(agents=[researcher, writer], tasks=[research_task, writing_task])
result = crew.kickoff(inputs={"query": "What is agentic AI?"})

Зверніть увагу на те, чого немає поруч із LangGraph: ніхто не малює граф та не під’єднує ребра. У коді вказано, хто відповідає за що, а логіка обробки в CrewAI самостійно передає результат дослідницького завдання у завдання з написання тексту. Досягнення робочої версії займає значно менше часу — близько двадцяти хвилин, як тільки шаблон стає знайомим.

Google ADK

from google.adk.agents import Agent
from google.adk.runners import Runner
research_agent = Agent(
    name="researcher",
    model="gemini-2.0-flash",
    instruction="Research the given topic thoroughly and return findings.",
)
writer_agent = Agent(
    name="writer",
    model="gemini-2.0-flash",
    instruction="Write a clear final answer using the research findings provided.",
    sub_agents=[research_agent]  # hierarchical relationship
)
runner = Runner(agent=writer_agent, app_name="research_writer_app")
result = runner.run(user_id="user1", session_id="session1",
                     new_message="What is agentic AI?")

Подивіться на поле sub_agents. ADK будується на ієрархії батьків та дітей, яка функціонує на основі подій, а його час виконання керує циклом, який переміщується між надходячими запитами, викликами моделей та запуском інструментів. Він знаходиться між вручну складеною схемою з’єднань у LangGraph та неявною координацією у CrewAI: у вас є ієрархія, але більша частина внутрішніх процесів обробляється автоматично, на відміну від LangGraph.

У чому справжня різниця

Прості приклади здаються на перший погляд схожими. Різниці проявляються вже після етапу прототипування.

Контроль та можливість спостереження. LangGraph широко вважається найкращим варіантом для складних, розгалужених робочих процесів у продакшені. Функції створення контрольних точок та надійної виконуваності вбудовані, і, за повідомленнями, Klarna використовує його для обслуговування 85 мільйонів користувачів. Саме таке використання в продакшені є найкращим доказом якості, незалежно від списку функцій. Єдиним недоліком є необхідність опанування складної інтерфейсної структури, яка є найскладнішою серед трьох саме через найбільш чіткий контроль.

Швидкість створення першого прототипу. CrewAI постійно перемагає в цьому аспекті. Для створення першої багатоагентної системи чи швидкої перевірки ідеї його абстракція на основі ролей дозволяє швидше запустити функціонал. Однак та сама високорівнева абстракція стає обмеженням, коли логіка координації ускладнюється, оскільки зменшується можливість точного контролю над тим, коли та як агенти передають один одному завдання.

Потреби корпорацій та мовні вимоги. ADK став загальнодоступним у 2026 році та змінив свій підхід, замінивши свій ієрархічний виконавець на двигун на основі графів, який і був основою дизайну LangGraph з самого початку. Його справжня перевага полягає в чомусь іншому. Він підтримує більше мов, ніж будь-хто з конкурентів (Python, TypeScript, Go, Java, Kotlin), може безпосередньо інтегруватися з Gemini та Google Cloud для команд, які вже їх використовують, а також містить інструменти для оцінки, яких немає у LangGraph та CrewAI.

Взаємодія між різними фреймворками. Мало хто з порівнянь згадує про це. ADK нативно підтримує протокол Agent2Agent (A2A), тож агент, написаний у зовсім іншому фреймворку, може обмінюватися повідомленнями з ним, а підписані картки агентів забезпечують криптографічну перевірку. Коли системі потрібно викликати агента, який належить постачальнику чи партнеру, A2A виконує для агентів ту саму функцію, що й MCP для інструментів: він стандартизує взаємодію між двома агентами замість взаємодії агента з інструментом.

Ефективність використання токенів. Тут також існує помітна різниця. Тестування однакових завдань за допомогою LangGraph та CrewAI показало, що LangGraph витрачає значно менше токенів. Ймовірною причиною є те, що LangGraph використовує прямі зв’язки між елементами, тоді як CrewAI покладається на LLM для маршрутизації завдань, і кожен з цих неявних виборів маршрутизації є додатковим викликом моделі з подальшими витратами. У будь-якому разі за це хтось платить.

Вибір у порядку

Пропустіть таблиці з функціями та по черзі поставте собі ці запитання:

  1. Швидке створення прототипу, чи це перша багатоагентна система? Виберіть CrewAI. Це найшвидший шлях до функціонального продукту, і цей вибір можна переглянути, якщо логіка координації виявиться складною.
  2. Потрібен максимальний контроль над розгалуженнями, чітким направленням помилок чи контрольними точками з участю людини? Виберіть LangGraph. Коли логіка направлення є складною, ви хочете самостійно керувати кожною діагоналлю, а не дозволяти це робити логіці фреймворку.
  3. Ви вже працюєте з Google Cloud чи потрібні мови окрім Python? Виберіть Google ADK. Нативна інтеграція з Gemini та Cloud усуває перешкоди для команд у цій екосистемі, а спектр підтримуваних мов є неперевершеним.
  4. Чи обов’язково агенти з різних фреймворків чи постачальників мають спілкуватися між собою? Виберіть Google ADK для підтримки типу A2A, адже жоден з альтернативних варіантів не розглядає цю вимогу як ключову функцію.
  5. Жоден з вищезазначених варіантів не підходить? Використовуйте той, який краще знає ваша команда. Усі три варіанти готові до використання у продакшені у 2026 році, і важливішим є те, наскільки ретельно спроєктовані шари маршрутизації та інструментів.

Немає універсального переможця

Жоден фреймворк не є найкращим для всіх, а порівняння, які стверджують протилежне, мають на меті щось продати. Виберіть LangGraph для контролю та зміцнення структури у складних робочих процесах, CrewAI для найшвидшого створення прототипу, а Google ADK — для команд, орієнтованих на Google Cloud, та для справжнього обміну повідомленнями між різними фреймворками.

Вирішуйте на основі реальних обмежень — чи це те, що вже відомо команді, на якій хмарі працює система чи наскільки складною є логіка координації, а не на основі того фреймворку, який оголосив про найяскравіші новини нещодавно. Фреймворк є лише опорною конструкцією. Ефективний дизайн агента може застосовуватися до будь-якого з трьох підходів: циклічної роботи, отримання інформації, маршрутизації, стандартів інструментів, забезпечення прозорості та звички оцінювати результати.

Пов’язана література

  • Створіть агента для оцінки якості потенційних клієнтів за допомогою AI у Python з використанням FastAPI та Pydantic — Перетворіть необроблені потенційні клієнти на кваліфікованих: структуроване видобуття даних за допомогою LLM, перевірка за допомогою Pydantic, оцінка за правилами, зберігання у PostgreSQL, черги та можливість людського перегляду.
  • DS-STAR: пояснення агента з науки про дані від Google та причини його успіху — Покроковий огляд агента з науки про дані DS-STAR від Google: його сім модулів, цикл звітності DS-STAR+, опубліковані запити, результати абляційних тестів та існуючі обмеження.
  • Порівняння AutoGen та CrewAI: створення команд агентів та розрахунок їхньої вартості — практичне порівняння AutoGen та CrewAI для роботи з багатьма агентами: проксі-цикли, критики, групові чати, завдання та команди, а також AgentOps для відстеження витрат.
  • Пояснення Gemini Spark: завдання, навички, графіки, безпека та ціни — що робить агент Gemini Spark від Google, який працює постійно, у Gmail, Календарі та Docs, як функціонують його механізми безпеки, скільки він коштує, де його блокують та хто повинен його використовувати.