Галоўная / Артыкулы

Спарэння шасцях фрэймворкаў Python для AI-агентаў па стварэнні таго самага агента.

Той самы рэсерч-агент, створаны ў LangGraph, CrewAI, PydanticAI, OpenAI Agents SDK, Smolagents і Google ADK, з лініямі, токенамі, показнікамі дэбагу і путаўнікам для выбору.

Выдавец: REACTAPP.TOP11 хв чытання2518 слоў

Крыніцы: I Compared 6 Python AI Agent Frameworks So You Don’t Have To: LangGraph vs CrewAI vs PydanticAI vs OpenAI SDK vs Smolagents vs Google ADK

Калі запытаць колькісць людзей, якую парадыгму агента выкорыстоўваць, вы отрымаеце дзесяткі абэцэнтных, суперасліжных адказоў. Аднія групы называюць LangGraph занадто складным для вікорыстання. Іншыя — ўнічыю серйозным варыянтом. Трэція радзяць зовсім не вікорыстоўваць парадыгмы, а працаваць безпосерэдна з API модэлю. У праектах кліентацкага характэра такі падход зробляе працу дорогай, таму практычны выход — перастаць спарчвацца і адрабатваць експерымент.

Експерымент быў просты: за адны вякенд створыць ідэнтычны агент у шасці парадыгмах Python, выкорыстоўваючы тую ж задачу, той жа модэль, тыя ж інструменты і той жа крытэрыя оцэнкі. Праект, які стаў базой для эксперыменту, быў аналізам дакументаў па стандартам 2026 года, тое значыць — выкарыстоўванне дадзэнняў з PDF-файлаў, ўзаінтэрэсаванне іх з базай дадзэнняў, напісанне статызы і адправка рэзультата па электроннай пошцы. Рэзультаты не падтрымалі ніякую з гучна выступаючых груп.

Што было створана і як гэта было оцэнена

Тэставальны агент прымае названне компаніі, шукае апошнія новыні ў інтэрнэце, выявляе ключовыя фінансавыя показнікі, практычвае іх з местной базай дадзеных SQLite і вяртае структураваныя даны у фармаце JSON. Гэта тры інструменты, адзін агент і адзін шаблон выходных дадзеных.

Гэта робіцца навмесна, каб было нудна. Майжэ ніхто не выклікае автонамны кодавальны агент як свой першы прыменны сістэма. Большая частка рэальной працы агентоў — гэта оркестратор API з невялікімі функціямі аналізу, і кожная платформа должна легка справляцца з гэтым. GPT-4o служыў як мадэль у всіх віпадках, калі платформа гэта дазволяла.

Было вымерана пяць пунктав:

  • колькасць ліній коду, якія трэбаецца
  • колькасць токенаў за адну працу, у сярэднем за 10 робатаў
  • сярэдняя затрымка
  • часы з моменту пачатку працы да стварэння працоўнага пратотыпу
  • „Бал дыбагавання ў 2 гадзіны ночы“, тое ўсё, насколькі лёгка можна з’ясаваць, што пайшло не так, калі працэс зламаецца пазней у ночы

Гэты последній показнік мае большое значэнне, чым можа здавацца. Разныя рэчы завжды ламаюцца.

LangGraph: для тых, хто любі контроль

Апошней час — 210 ліній. Час на стварэнне рабочага агента — тры гадзіны. 2,847 токэнаў за адну запусканню.

LangGraph здаецца створаным інжынерамі распрацоўваных сістэм. Вы задаеце стан, задаеце вузлы, праграфіцеее рэшткі межы ўзьміж і скомпілюеце рэзультат. Гэта меньш нагадвае стварэнне AI-агента, а больш — парадактаванне каналу дадзэйна, што ўжо ўзнагарода.

Першы гадзінка ўскладнена. Відвідванне StateGraph, add_node і add_conditional_edges для агента з трыма інструментамі здаецца занадта складным процэсам, і хочацца проста перайсці да наступнага варыянта.

Тады неудача змінюе сітуацыю. Пад трэцім тэстовым запытам агент паспеў практычна, а запуск LangSmith паказаў усі крокі па шагу: які вузол выбраў неправільна, які стан ён меў і чаму ён вызваў інструмент базы дадзенаў раней, чым выканаў пошук. Лічнае колькасць фрэймворкаў дазволяе такі прымітны дыягназ.

Функцыя, пра якую людзі рэдка гавораюць: стойкае выкананне. Зупінены запуск працюе далей з свайго последнага пункта перапыткі. Гэта зручна пад час эксперыментаў у выхідныя. Але калі сістэма працуе над 10 000 дакументаў цэлую ноч, гэта вялічыць, чы будзеце вы спаць, чы вас разбудзяць о 3 гадзіні ранку.

LangGraph таксама вікорыстаў наіменшую колькасць токенаў пад час тэстаў. Паколькі граф выказвае логіку керавання, мадэль не вітрачае токены на выбір наступнага крока — вы ужо сказалі ёй гэта.

Косц адпрацоўкі — гэта рашучасць з самага пачатку. Не існуе можнасці проста склеіць інструкцыі і спадзявацца на рэзультат. Ясна задача спрыяе стварэнню правільнай структуры, але калі вы ўсё ўсвайомляеце працэс выканання, вы будзеце ствараць больш дыяграм, чым выпускаты функцыі.

Рэйтынг дэбагавання у 2 гадзіны ночы: 9/10. LangSmith заслужыла свою рэпутацыю, і проблемы тут дыягнаставаліся быстрэй, чым будзь-дзе іншае.

CrewAI: прыстойны протатэп

Апошней 340 ліній коду. 45 хвілін, каб стварыць рабочага агента. 4,216 токенав на адну запуск.

Час ад pip install crewai да правільнага рэзультата складаў трохі больш чым паўгадзіны, што ўзяло другое месца па швальнасці пасля Smolagents.

CrewAI працюе ў командах, а не з адзінамі агентамі. Кожны член каманды мае свою ролю, цель і історыю, задачы дастаюцца групе, а члэні каманды вяршаюць рашэнне, хто чым займіцца.

researcher = Agent(
    role="Financial Research Analyst",
    goal="Find and verify recent financial data",
    backstory="You're a senior analyst at a hedge fund...",
)

Поле з апавертамі выглядае як гэты трук, і яго спрыялі з іроніяй. Аднак рэзультаты, якія даў агент CrewAI, былі значна болей дэталізаваныя, чым тыя, якія отрымаліся пасля адправкі таго ж запіту праз прымітныя API-званні, таму саме вакуум ролі змінюе спосаб, якім мадэль падходзіць да задання.

Швальдзіва мае свой косц. CrewAI выкарыстоўваў прыблізна на 48% больш токенаў, чым LangGraph для аднаго і таго ж заведама. Архітэктура прыпускае саўместную працу прынеймна двух чы трох агентаў, таму нават дзеянне, якое аднаго агента было бы дастатнек, выконваецца за рахунак кількаразовых перадач заданняў. Кроме таго, ён працуе сінхронна, і ўтрамбаванне яго ў асінхронны FastAPI-бэкенд заставіла пакрыць званні функцыяй run_in_executor. Гэта ўсё-такі можна пераканацца, проста гэта раздражае.

Косцы быстра растуць. Адна з опублікованых парадоў паказала, што CrewAI коштаў $1,088 за тэсты, тым часам як адпаведны варыант PydanticAI коштаў $390. Калі запускаты агента тыясячы разоў ў дзень, разлік стаўняеся ў вялічыну.

Па шкале аддыягавання ён атрымлівае 5/10 о 2 гадзіны ночы. Успехі прыемны, але неудачы знікаюць у ланцузе дэлегавання, які працюе як чорны яшчык. Одна бага зайняла 40 хвілін, пакуль не выявілася, што гэта два агента, які перадаюць адно і тое ж заведанне аднам другаму.

PydanticAI: тыхі, але высокаякісны рашэннік

Апошней 130 ліній коду. 1,5 гадзіны на стварэнне рабочага агента. 2,912 токена за адну працу.

Калі LangGraph падходзіць тым, хто прагне контролю, а CrewAI — тым, хто не тэрпіць, то PydanticAI падходзіць распрацоўшчыку, які хоча, каб код стаў зрозумілым вярху шасці месцаў. Команда Pydantic створыла яго, і кожны, хто вжо вікорыстоўвае FastAPI, ведае палову API. Агенты маюць тыпаванне, выходныя даны пераверачваюцца, а залежнасці вводзяцца, таму все, што можна знайсці до запуску, нарадзіва знаходзіцца.

agent = Agent(
    "openai:gpt-4o",
    result_type=CompanyAnalysis,  # Pydantic model
    system_prompt="You are a financial research assistant.",
)

Параметр result_type выпалюе большэйшую ролю, ніж можа здавацца. Кожна адпаведна модэлю відпаведзь автаматычна пераканальвана па вашай схеме. Калі модэль вяртае некарэктны JSON, што зрэшты і адбываецца, фрэймворк гэта зафіксавае і прабуе зноў, і не патрабуеяе рукапіснага коду для верыфікацыі.

У праекце full-stack-ai-agent-template была адбыта контрольваная парада, якая падтрымлівае гэты патэрн. Тая ж самая чат-аплікацыя запатрабавала або 160 рэальных ліній коду у PydanticAI, або або 280 у LangGraph і або 420 у CrewAI.

Корачэйшы код не завжды значыць лепшы, але тут была пераканальвана швальнасць разумеўця кожнай версіі. Версію PydanticAI можна было чытаць і разумець лінія за лініяй. Версію LangGraph трэба было уявляць сабе граф, а версію CrewAI — разумець ўсю ўзаемадзейнасць ў ўсіх елементах.

Абсалютным лімітам являецца тое, што PydanticAI — гэта фрэймворк з аднім агентам. У яго няма вбудованай сістэмы керавання калькамі агентаў, перадачы задач або дэлегавання, таму для праекта з трохма агентамі патрэбна самастайна рэалізацыя механізмаў коордынацыі. Модуль pydantic-graph існуе, але ў дапамозе складных рабочых працэсаў ён яшчо не можа конкуруваць з LangGraph чы CrewAI.

Рэбуткі проблем па празначанні да паўнай ночы адзначаюцца оценкай 8/10. Памылкі тыпу выяўляюцца рана, інтэграваныя асяроддзя паведамляюць пра проблемы ўсё раней, чым ўсё запускаецца, а трэйсы выканання паказваюць правыя радкі коду.

OpenAI Agents SDK: успех, які застаўся непазначаным

Прыблізна 150 радкоў коду. Адзін гадзін — і готавы рабочы агент. 2,791 токені на адны запуск.

Фрэймворк ад вялікога віробніка модэляў здаецца спосабам прыкрэплення да ўсё болей шырокага праграмнага сераўісу, і яго практычна не включылі ў тэсты. Аднак такія падазры выявіліся хыбнымі.

SDK — гэта версія, створаная OpenAI на базе ранейшага эксперымента Swarm, і ён складаецца з чатырох прымітыв: Агенты, Перадачы, Інструменты і Рэгулярныя правілы. Серэд іх выдзеляюцца Перадачы: вы задаеце, якія агенты могу перадаць заведамення іншым, а фрэймворк займаецца ўсуненням перакрыцэнняў. Ён менш гнучкі, чым графічны модэль LangGraph, але для прыблізна 80% сцэнарыяў з удзелам калькі агентаў гэтага дастатнь і ён значна простыяй.

agent = Agent(
    name="Researcher",
    instructions="You are a financial research assistant.",
    tools=[search_tool, db_tool],
    handoffs=[summary_agent],
)

Ён таксама большэй не прыяжаны да адзінаго прадаўцы. Падтрымка больш чым 100 LLM-аў стала можлівай за дапамой адаптара any-llm, а той самы тэст быў запрацоўваны з Claude без жадных змян у кодзе.

Эфектываасць токенаў параднае з LangGraph, што даўае адно з найніжэйшых рэзультатаў у тэсце. Вбудованая аптрымка трэсінгу ўстойчыва, хоць на адну градусацыю ніжэй за LangSmith.

Недзеяючы момент — меньшы экасістэм. У LangGraph ёсць гады інструментаў спільнай адукацыі, нарадчыкаў і апробаваных патэранаў. У данам продукце ён новейшы, таму у экстрэмальных сітуацыях часта трэба працаваць самам.

Рэйтынг дыбагавання ў 2 гадзіны ночы: 7/10. Аптрымка трэсінгу ўбудована і корыстна, а адныя ўпаркі ўсё ж зрозумелы. Аднак прасчупы ў дакументацыі вымагаюць частэйшаг чытання коду, чым хацелася б.

Smolagents: выбор мінімалістаў

Апошнія 95 лініяў коду. 30 хвілін, каб стварыць рабочага агента. 3,340 токенаў за адну запусканню.

Этыя цыфры — не памылка. Proект Hugging Face спрыяе мінімалізму, пры чым яго основная логіка складаецца з прыблізна 1 000 ліній коду на Python, якія можна прачытаць за адно апоўдні. Спробуйце тое ж з LangGraph.

Разлік не толькі ў розмерзе. Усе іншыя фрэймворкі тут вікорыстоўваюць вызовы інструментаў у фармаце JSON, пры чым агент выдае пакет дадзеных з інструкцыямі, якую функцыю запускаць з якімі аргументамі. Код CodeAgent з Smolagents заместа таго запісвае справжній код на Python.

agent = CodeAgent(
    tools=[search_tool, db_tool],
    model=InferenceClientModel(),
)
result = agent.run("Analyze recent financial news for Acme Corp")

Запіс коду дазвае агенту ствараць інструменты натуральнаўску, з цыкламі, умовнымі выразамі і ланцоўкамі операцый, якія JSON не можа выразіць. Доследжэнні на прыкладах падтрымліваюць гэта, адколі кодавыя агенты па большасці тэстаў параджаюць агентам, базаваным на JSON.

Адплата за гэта — безпека, адколі агент генеруе і запускае Python. Сандбоксінг доступны праз E2B, Docker і Pyodide, але яго трэба насталяваць самостоятэльна. Стандартны LocalPythonExecutor явна не ўтварае межы безпекі, і пра гэта сказана ў яго дакументацыі.

Выкарыстоўванне токенаў было вышэй, чым у LangGraph і OpenAI SDK. Генераваны Python ёсць довгачынны паўтароўкамі, у працоўнасці з компактным JSON, а кожны імпорт і заявленне зменнай коштае токаны.

З Gemini або GPT все працюе чыста, але здаецца неадаптаваным. Ён выказвае высокія якосці з мадэлямі і інфраструктурой Hugging Face, а інтэграцыя з Hub, якая дазволяе дзеліцься і завантажваць агенты так сама, як мадэлі, ёсць выключна, калі вы ужо працуеце в этой экосістэме.

Рэйтынг дыбагавання за 2 гадзіны ночы: 8/10. Чытанне коду, напісанага агентам, лепшая за дэкадаванне ланцуга вызоваў інструментаў у фармаце JSON, а працоўныя проблемы прадаюцца у відпаведным фармаце адлучэнняя паходжання каштоўкі ў Python.

Google ADK: таёмны чампіон сярод корпаратыўных рашэнняў

Прыблізна 180 ліній коду. Два гадзіны на стварэнне працоўнага агента. 3,102 токэнаў за адну запуск.

Кіт для разработкі агентаў Google з’явіўся тыха ў 2025 годзе, і багато распрацоўшчыкаў на Python так і не пробавалі яго. Гэта прычына, якую трэба усунуць.

ADK мае чыста пазіцыю ў пытанні структуры, але ў выкананні ёсць гнучкім, як і большасць внутрашніх інструментаў Google. Агенты візначаюцца за дапамогою модэлю, назвы, інструкцый і інструментаў, падобна да SDK OpenAI. Над імі знаходзяцца агенты для работы з потокамі задач (па серыі, паралельна і у цікле), а таксама новейшы API AgentTeam для коордынацыі кальколькі агентаў.

from google.adk.agents import Agent
root_agent = Agent(
    model="gemini-2.5-flash",
    name="financial_analyst",
    instruction="You are a financial research assistant.",
    tools=[search_tool, db_tool],
)

Сама структура адміністрацыі і ўскладненняя яе выдзеляе. Тэставы пісаюцца у фармаце JSON, adk eval ўжоўце іх, і вы атрымліваеце структураваныя атласы пра тое, чы робіцца адпаведна адзінакоўваецца з аспактамі. Няма іншай структуры ў лісты, якая б прыносіла такія розвітаныя інструменты адміністрацыі.

Размешчэнне таксама праходзіць гладка, калі толькі вы выкарыстоўвайце Google Cloud. Vertex AI Agent Engine керуе масштабаваннем, стэжэннем і сеансамі, але гэта ўмова мае вельмі важлівыя наследкі.

ADK налаштавана для Gemini. Іншыя мадэлі працуюць праз LiteLLM, пры тым у дасведчэннях, прыкладах і інструментах завжды прыпускаецца наявнасць Gemini. Работа з GPT-4o выклікала не задокументаваныя сітуацыі, якія знадобіліся 45 хвілін, каб іх рашыць.

Рэйтынг для дэбагавання у 2 гадзіны ночы: 6/10. Інтэрфейс распрацоўшчыка adk web дапамагае. Але паведамленні пра адказы іноды застаюцца загадкавымі, а дасведчэння ёсць вельмі масіўнымі, як і звычайна у Google, што ускладнюе ўжоўцу.

Каторы выбраць

Фраза «Залежыць» разчароўвае ўсіх, таму прытаму логіка выбору, якая выклікана шэсцьма спробамі стварэння агента:

  • Выпуск да пятніцы: выберыце CrewAI або Smolagents. CrewAI падходзіць для команды, якая не впэўнена ў налагоджэнні выканання коду на Python. Smolagents падходзіць для тых, хто впэўнены ў цэм і хочаць мінімальных залежнасцей.
  • Павінен стабільна працаваць месцы: выберыце LangGraph або PydanticAI. LangGraph падходзіць для логікі з розгалужэннямі, крокаў з удзелам чалавека і патрэбы ў стабільным выкананні. PydanticAI падходзіць пераважна для працы з аднім агентам з структураванымі выходамі, калі будучыя чытальнікі павінны розумець код.
  • Ужо прыкладзеныя да певнай экасістэмы: выберыце OpenAI Agents SDK на платформе OpenAI за ўможнасць трэйсінгу і ацэнкі, або Google ADK на GCP за натыўнае інтэграцыя з Vertex AI з вбудованымі механізмамі ацэнкі.

Некамфортным моментам ёсць тое, што для большынства праектаў фрэймворк мае меншое значэнне, чым інжыніерыя запытоў і дызайн інструментаў. Калі сістэмны запыт і апісанні інструментаў сталі об’ектам серйознай увагі, якосьць выходу даных была практычна ідэнтычная ў всіх шысці прыкладах. Разлікі былі толькі ў досвядзе распрацоўшчыка, можлівасці дэбагавання і аперацыйных вітратах.

Установкі, якія засталіся: PydanticAI для задач з аднім агентам, якія займаюць большую частку працы, і LangGraph, калі рабочы працэс справды складны. Не трэба выбачацца за вікорыстоўванне двух фрэймворкаў.

Усе шысці паўнасупрацоўна

| Metric            | LangGraph   | CrewAI          | PydanticAI    | OpenAI SDK       | Smolagents      | Google ADK      |
| ----------------- | ----------- | --------------- | ------------- | ---------------- | --------------- | --------------- |
| Lines of code     | ~210        | ~340            | ~130          | ~150             | ~95             | ~180            |
| Time to prototype | 3 hrs       | 45 min          | 1.5 hrs       | 1 hr             | 30 min          | 2 hrs           |
| Avg tokens/run    | 2,847       | 4,216           | 2,912         | 2,791            | 3,340           | 3,102           |
| Multi-agent       | Yes (graph) | Yes (teams)     | Manual        | Yes (handoffs)   | Yes (hierarchy) | Yes (AgentTeam) |
| Type safety       | TypedDict   | Pydantic config | Full generics | Generic context  | Minimal         | Standard        |
| MCP support       | Yes         | Limited         | Native + A2A  | Native           | Yes             | Yes             |
| Model-agnostic    | Yes         | Yes             | Yes (20+)     | Yes (100+)       | Yes (LiteLLM)   | Gemini-first    |
| Best debugger     | LangSmith   | Logs            | IDE/types     | Built-in tracing | Code output     | ADK Web UI      |
| GitHub stars      | ~48K        | ~44K            | ~15K          | ~16K             | ~26K            | ~23K            |
| 2 AM debug        | 9/10        | 5/10            | 8/10          | 7/10             | 8/10            | 6/10            |

Ніякі з эых цыфраў не расказваюць всю історыю, але яны ўтвараюць правядзяглыя падставы для параджання, лепшыя за большасць пастаў пра параджанне.

Чакайце змян

Этыя фрэймворкі зміняюцца быстрэй, чым хтось можа іх задокументаваць. LangGraph выдала значны апдэйт пад час напісання гэтага тэксту. Корпаратыўны ўровень CrewAI атрымаў новыя інтэграцыі за адну недзелю. PydanticAI дадала падтрымку протаколу A2A, а Google ADK выдала функцыю SkillToolset за калькі дзён раней.

Кожныя параджанні маюць свой тэрмін службы. Чэрэз шысь месцацоў разлікі ў выконанні можаць зменшыцца, можаць з’явіцца нехватка функцый, а фрэймворк, які вы адмовіліся аднародзіць, можа стаць явным выборам. Таму выберыце той, з якім ваша каманда можа работаць у 2 гадзіны ночы, калі канвейн не працуе, а кліент чакае, а не той, у якога больш зірак у GitHub.

Супаўзялыя матэрыялы

  • Пяшчэнне пра прыстройку агента: компаненты, якія ператвараюць LLM у агента — што такое прыстройка агента, чаму агентам, які працуюць дзялейна, яна патрэбна, яе восьмы компаненты і як яны разам працуюць над рэальным заведам практычнага програмавання.