Команды парабілілі 6 фрэймворкаў для AI-агентаў на Python, каб вам не патрэбна была гэтае: LangGraph проты
Практычныя рэкомендацыі па выборе между 6 фрэймворкамі для стварання AI-агентаў на Python, каб вам не патрэбна была дадатковая інформацыя: LangGraph протык CrewAI протык PydanticAI протык OpenAI SDK протык Smolagents протык Google AD: умовы выкарыстоўвання.
Наступныя прыміткі паказваюць практычны шлях для розбору “6 фрэймворкаў AI-агентаў на Python, якія можна пораўняць, каб вам не трэба было гэта робіць: LangGraph проты CrewAI проты PydanticAI проты OpenAI SDK проты Smolagents проты Google ADK”. Акцэнт ставіцца на контракты, перакананняя та месцы для коду, які можна проста застосавіць, а не на мотывацыйныя аспекты.
Вы створылі той самы інструмент для керавання доследжэнням шасць разоў. Лішыліся жывучымі толькі два з гэтых комплектаў на выходны.
Працюючы над проектам, вы шас створылі той самы інструмент для аналізу даных. Лявільнымі за выходны засталіся толькі два з іх. Спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што вядзецца пад частыя аберанціі. Такі список дапамагае залічваць змяны ў кодзе чыста.
Настройка: Чаго вы насправды створылі
Калі працуеце над кнігай «The Setup: What you Actually Built», спачатку запісаце кантракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список контролю дапамагае заліцьварыць пазнейшыя змены ў кодзе. Зберагаце настройкі за межамі коду аплікацыі. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Запісваце ID запиту, ID модэлю і час адпаведзення за кожны вызов. Без такога лёгкага стэйта нерегулярныя проблэмы падаёў выглядаюць як багі аплікацыі.
Фрэймворк 1: LangGraph — Раю для любіцоў контролю
Калі працуеце з Framework 1: LangGraph — Раю для тых, хто любіць контроль, спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпалення. Такі список дапамагае залічыцца з пазнейшымі змянамі ў кодзе. Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не елементамі пазнейшай дорабачэння. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам адпаведзення за кожны вызов. Без такога сляда павтаральныя проблэмы прадастаўця выглядаюць як багі ў самай прыемлівай.
Framework 2: CrewAI — Апарат для шырання протатэў
Калі працуеце з Framework 2: CrewAI — The Fast Prototype Machine, спачатку запісайце умовы працы: неабяжлівыя даны, сигнал успеху і тое, што выходзіць пад частыя неудачы. Такі список дапамагае заліцварваць будучыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі та часам затрымкі праз кожны вызов. Без такога следу періодычныя проблэмы падаюць на думку як багі самай прыемлівасці.
researcher = Agent(
role="Financial Research Analyst",
goal="Find and verify recent financial data",
backstory="You're a senior analyst at a hedge fund...",
)
Framework 3: PydanticAI — The Quiet Overachiever
Калі працуеце над Framework 3: PydanticAI — The Quiet Overachiever, спачатку запісайце угоду: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрэтывайце гэты этап як угоду межа даннімі і перакананымі выходамі. Дайце назвы артыкулам, задаце перакананні успеху і адмовіцеся ад тыхоўага частковага завершэння. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам затрымкі праз кожны вызов. Без такога следу періодычныя памылкі прадастаўця выглядаюць як багі прыемніка. Калі працуеце над Framework 3: PydanticAI — The Quiet Overachiever, спачатку запісайце угоду: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Зберагаюце настройкі за межамі коду прыемніка. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжлівага чытання всей структуры.
agent = Agent(
"openai:gpt-4o",
result_type=CompanyAnalysis, # Pydantic model
system_prompt="You are a financial research assistant.",
)
Хтоце тут усё стала цікавым
Метод «Хтоце тут усё стала цікавым» працюе найэфектывней, калі яго рассматрываць як мерыемую паверхню. Запісаце адна ідеальная версія працы, адзін кейс неудачы і прыметкі па поверненню да пачатковага стану перш чым расширваць масштабы. Дакументавайце як успішны, так і варыянты вярнення да нормальнага стану разам. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў ёсць частью продукту, а не чымось, што дадаецца пазней. Закрепіце інтэрпретара і файлы з канфігурацыяй залежнасцей перш чым выучаць циклы. Разніця ў настройках межаў лэптопа і среды CI ёсць найчастэйшай прычыной тых, чаму дэманстраціі API не працуюць.
Framework 4: OpenAI Agents SDK — Нейкі сенсацыйны успех
Framework 4: OpenAI Agents SDK — Аплікацыя «The Sleeper Hit» працюе наўздоўж краща, калі яе розглядаць як мерыемую структуру. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметкі па поверненню да пачатковага стану пры расшырэнні масштаба. Валіце вялікія, складныя для тэставання скрыпты на корысть маленькіх, тэставаныях елементаў. Калі якісьць крока не выпаняецца, прычына неудачы павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Зафіксавайце версію інтэрпретара і файл з правіламі залежнасцяў пры тэставанні циклу. Разніця ў версіях між ноутбукам і сервісам CI — гэта самая частая прычына непрацяючых дэманстрацый API.
agent = Agent(
name="Researcher",
instructions="You are a financial research assistant.",
tools=[search_tool, db_tool],
handoffs=[summary_agent],
)
Framework 5: Smolagents — Мечта пурыстаў ад відкрытага кода
Framework 5: Smolagents — The Open-Source Purist’s Dream працюе наякша, калі яго спрыяваць як до меркавання. Зафіксавайце адны ідеальны прымер роботы, адну справу з бягамі та прыметкі па варыянт адвярнення пры розшырэнні меж. Спрыявайце гэты ўрадок як кантракт межа вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, задаць критэрыя успеху та адмовіцца ад мовчанкавага частковага завершэння. Закрепіце інтэрпретара та файл з правіламі залежнасцяў пры тым, як выучаеце цикл. Адхіленне межа ноутбука та системы CI — гэта самая частая мовчанкавая працяжка пад час дэманстрацый API. Framework 5: Smolagents — The Open-Source Purist’s Dream працюе наякша, калі яго спрыяваць як до меркавання. Зафіксавайце адны ідеальны прымер роботы, адну справу з бягамі та прыметкі па варыянт адвярнення пры розшырэнні меж. Зберагаюце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных та флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можаць адбавляць контроль без неабяжнага чытання всіх элементаў.
agent = CodeAgent(
tools=[search_tool, db_tool],
model=InferenceClientModel(),
)
result = agent.run("Analyze recent financial news for Acme Corp")
Framework 6: Google ADK — The Enterprise Sleeper
Для Framework 6: Google ADK — The Enterprise Sleeper неабяжна прадзецьваць параметры вхідных дадзеных, адпаведнага власніка крока і крэтыяры выходу пры змены коду. Аператары павінны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не яго пазнейшай дапрацоўкі. Неабяжна аддзеліць стварэнне кліента ад цыклу паведамленняў, каб можна было змяніць прадстаўніка без перапісвання машыны стану размовы.
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],
)
Вывак: Усё залежыць (але не так, як вы думаеце)
Для вынесення вывару: гэта залежыць (але не так, як вы думаеце). Перш чым зменіць код, неабяжна адзначыць вхідныя даны, власніка крока і критэрыі завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Валіце маленькія, тэставальныя елементы працэздатнасі замест большых скрыптав. Калі крок не выйшоў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Раздзеляйце стварэнне кліента ад цыклу перадачы паведамленняя, каб можна было зменіць прадаўцоў без перапісвання машыны стану размовы.
Полная табліца паўтарэння
Для абсалютнай таблицы парабянаў неабходна перад зменыма коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры выходу. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цэму этапу як кантракту межа вхіднымі данымі і перакананымі выходамі. Даць назвы артыфактам, задаць перакананні на успех і адмовіцца ад безгучнаг частковаг завершэння. Разлучыце стварэнне кліента ад циклу паведамленняў, каб можна было зменіць прадаўцоў без перапісвання машыны стану размовы. Для абсалютнай таблицы парабянаў неабходна перад зменыма коду задаць вхідныя даны, адпаведальнага за крок і крэтыяры выходу. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Зберагачыце настройкі за межамі коду прыемлівання. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф.
| 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 |
Едынай рэч, якую хацелі быць ведомым пры пачатку
Кал працуеце над Едынай рэччю, якую хацелі быць ведомым пры пачатку, спачатку запісайце угоду: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісуйце адночасна шлях успеху і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є частью продукту, а не пазнейшым дапрацоўкам. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам адліку за кожны вызов. Без такога следу періодычныя памылкі прадаўцоў выглядаюць як багі ў прыемніку.
Чэк-ліст для эксплуатацыі
Для чэк-ліста для эксплуатацыі, перш чым зменяць код, задаце данні, адпаведальную особу за крок і критэрыя завершэння. Аперацыёныя працавнікі должны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Запісвайце часы выканання аперацый і косць токена чыста запытку праз функцыйнальныя рэзултаты. Відразлівая візуабельнасць косцей з самага пачатку запобегае неспакоўным счыткам, калі маршрут пераходзіць з дэмавайнага режыма ў спяльныя среды.
Аддзельце стварэнне кліента ад цыклу паведамленняў, каб было можна змяніць прадаўцаў без перапісвання машыны стану размовы.
Зробіце контрольны пункт пасля дорогіх крокаў. Функцыя продакцыі не павинна зноў нарахоўваць косці той самай вызову LLM, калі аператар праканае пазнейшы вузел.
Закрепіце версіі залежнасцей і запісвайце хэш адобраза, які выканаў дэму. Возможнасць перадзвічання працэсу лепшая за традыцыйныя знаёмства.
Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына нехарактэрыстыкі павинна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок крокаў.
Перш чым запускать стэк, заморозьце версіі, зафіксавце «золаты» транскрыпты для критичных шляхоў і паказваце спосабы атрыбуціі. У спадзяльных средах неабходны ліміты частоты запуска, пераканання ў належнасці тэриторыі і чысткі власніка для ротацыі секрэтных дадзенняў. Валідную надзею на стабільнасць трэба важыць больш, чым крэатывныя разовыя дамастанты.
Прымітка для пакету d8a5e6e43262: не кладзіце ключы прадаўцоў у репазітарый, задаце верхнюю межу токенаў на сесію і зберагачыце транскрыпты празаўсёды разам з фікстурамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся порównаннімы.
Для практык ужыцтва прыміткі 0, перад зменай коду неабходна адзначыць вхідныя даны, власніка кроку і критэрыя завершэння. Аперацыёныя працавнікі должны магчымае перадзеўжаць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цім этапу як кантракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, адзначыце критэрыя успеху і не прымайце тыхнучых частковых рэзультатаў.
Дзеянне паўжасткі 0/819: звярніце увагу на час выканання, клас памылкі і колькасць выкарыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай сэтце запытаў, а не на асобістых спазыраннях, выявіце, чы хацяце застаўіць змену.
Працюючы над запісам паўжасткі 1, спачатку запішыце контракт: неабходныя данні, сігнал успеху і тое, што выходзіць на частым нявыпанні. Такі чарт дапамагае заставіць пазнейшыя змены коду чыстымі. Зберагаюце канфігурацыю праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можу працаваць без падчытання всей структуры.
Дзеянне паўжасткі 1/819: звярніце увагу на час выканання, клас памылкі і колькасць выкарыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай сэтце запытаў, а не на асобістых спазыраннях, выявіце, чы хацяце застаўіць змену.
Пры спроектаванні захода абаронення 2 наявнасць меркаванага паверхні ўзмацняе яго эфектыўнасць. Перш чым расширваць масштаб, неабходна зафіксаваць адны ідеальны прыклад роботы, адзін прыклад неудачы і змест кроку з вярненням да пачатковага стану. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач.
Дзялянка абаронення 2/819: памерыце час выканання, класія ошибак і колькасць токенаў, якія былі выкарыстоўваны для гэтага заходу, а пасля, на аднойчынных крітэрыях, а не на індывідуальных прыкладах, выявіце, чы рэшыцца застаўляць змены.
Для захода абаронення 3 перш чым зменіць код, неабходна чыткая дэфініцыя вхідных даных, адпаведальнага за крок і крітэрыяў завершэння. Аперацыёныя системы павінны магчымае перзапуск кроку з вядомай точкі контролю, не падозрэўаючы пра схованы стан. Запісвайце час выканання і колькасць токенаў або запытак разам з рэзультатамі функцыйнасці. Відкрытая інформацыя пра витраты запобегае неспакойным расчыткам, калі процес пераходзіць з дэмавайшых умов у спакульнаныя сераўеры.
Дзеянне паўжасткі 3/819: звярніце увагу на час выканання, клас памылкі і колькасць викорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе паказаных пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацься застаўляць змяну.
Працюючы над запісам паўжасткі 4, спачатку запішыце контракт: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковай памылкі. Такі список контроля дапамагае заставаць пасляэтапныя змяны ў кодзе чыстымі. Адначасова задокументавайце шлях успеху і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є частью продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 4/819: звярніце увагу на час выканання, клас памылкі і колькасць викорыстоўваных токенаў для гэтага запісу, а пасля, на аднойчынай базе паказаных пытанняў, а не на індывідуальных прыкладах, выявіце, чы рэшацься застаўляць змяну.
Запіс працэўнай практыкі 5 будзе найэфективнейшы, якщо яго спрыяваць як виміроўваную паверхню. Зафіксавайце адна ідеальная транскрыпцыю, адзін прыклад неудачы і запіс про вярнэнне да пачатковага стану пры расшырэнні масштаба. Спрыявайце гэты ўражок як кантракт межа вхіднымі дадзеннямі і паверыранымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць критэрыя успеху і не падтрымвайце тыхія частковыя завершэння.
Деталі працэўнай практыкі 5/819: вимеравайце час выкарыстоўвання, класыя ошибкі і колькасць токенав для гэтага запісу, а пасля вырашайце, чы робіць змяну на адной пазычанай сэткі пытанняў, а не на адной лепты.
Маркер перапісвы 1 для d8a5e6e43262: перафразавайце суседзячыя тверджэння на мове аперацый, залучыце слоты [[CODE_n]] без змян і утримайцеся ад павторэння рэчэй з выхіднага тексту.
Маркер перапісвы 2 для d8a5e6e43262: перафразавайце суседзячыя тверджэння на мове аперацый, залучыце слоты [[CODE_n]] без змян і утримайцеся ад павторэння рэчэй з выхіднага тексту.
Перапісаць маркер 3 для d8a5e6e43262: перафразаваць супакоўаныя тверджэння мовай аперацый, застаўляць слоты [[CODE_n]] недзеянымі, і утрымацца ад павторэння рэчэй з вучорашняеў.
Перапісаць маркер 4 для d8a5e6e43262: перафразаваць супакоўаныя тверджэння мовай аперацый, застаўляць слоты [[CODE_n]] недзеянымі, і утрымацца ад павторэння рэчэй з вучорашняеў.
Перапісаць маркер 5 для d8a5e6e43262: перафразаваць супакоўаныя тверджэння мовай аперацый, застаўляць слоты [[CODE_n]] недзеянымі, і утрымацца ад павторэння рэчэй з вучорашняеў.
Перапісаць маркер 6 для d8a5e6e43262: перафразаваць супакоўаныя тверджэння мовай аперацый, застаўляць слоты [[CODE_n]] недзеянымі, і утрымацца ад павторэння рэчэй з вучорашняеў.
Перапісаць маркер 7 для d8a5e6e43262: перафразаваць супакоўаныя тверджэння мовай аперацый, застаўляць слоты [[CODE_n]] недзеянымі, і утрымацца ад павторэння рэчэй з вучорашняеў.
Перапісацыя маркера 8 для d8a5e6e43262: перафразавайце суседзяючыя тверджэння на языку аперацый, застаўляйце слоты [[CODE_n]] без змян і утримвайцеся ад повторэння рэчы з выкладку.
Перапісацыя маркера 9 для d8a5e6e43262: перафразавайце суседзяючыя тверджэння на языку аперацый, застаўляйце слоты [[CODE_n]] без змян і утримвайцеся ад повторэння рэчы з выкладку.
Перапісацыя маркера 10 для d8a5e6e43262: перафразавайце суседзяючыя тверджэння на языку аперацый, застаўляйце слоты [[CODE_n]] без змян і утримвайцеся ад повторэння рэчы з выкладку.