Чаму команды перахоцяюць з ланцаў LangChain на рабочыя пралэтыры LangGraph
Агенты вырабаткі павинны мець стойкае становішча, галузі і HITL. Зберагачыце інструменты LangChain усередзіні вузлаў; пераносіце тэкст развітку керавання ў явны граф, калі таго захоць можлівасць эксплуатацыі.
Команды, якім стае недастатнька лінейная структура LangChain, частаўа пераходзяць на LangGraph — не таму, што такі структуры ўжо “мертвыя”, а таму, што для практычнага викорыстання агентам потрэбны стабільны стан, цыклы і чыстая логіка керування. Прычыной пераходу є проблемы з эксплуатацыяй: неабходнасць павторных спроб, участкаў людзяў у процесе, розгалужэнняя логіки і можласці стежыць за частковым працэсам.
Што LangChain зробіў права
LangChain ператворыў LLM-і на програмаваныя інструменты за дапамогою складальных запросаў, інструментаў, механізмаў выкарыстання дадзеных і схем канектавання LCEL. Ён нормалізаваў ідею, што прыкладнэе рашэнне ёсць графам вызываў моделей і ператворэння дадзеных, а таксама стварыў інструменты для дэманстрацый RAG, якія даўжа выклікаюць інтерес у екосыстэме. Для простых алгорытмаў з одним проходам дадзеных або лёгкім розгалужэнняем ён застаецца эфектывным наборам інструментаў.
Дзе ён пачынае ствараць проблемы у практычнай эксплуатацыі
Лінейныя або спецыяльныя екзэкутары агентаў станавяцца недастатнімі, калі патрэбны:
- Цыклы, якія зноў выкарыстоўваюць дадзеныя пасля невыпаннага заведама
- Можласць паўзы/працягвання працы пасля перачынення процэсу
У такім случае дадзенне большай колькасці памяці ў ланцюг скрывае топалогію ўнутры працэсуальных прапаноў. Збоі стаюць частынай наратыву, а не пераходамі станоў у формате тексту.
Што на самай працэ ўзменяе LangGraph
LangGraph прызначае першакласныя элементы стан, вузлы, грані і пункты контроля. Система падчас выканання знае положэнне курсора ў рабочым процесе. Перарывы, перегляд і стрімінг падзеяў вузлаў стаюць прыроднымі. Вы продовжваеце выкарыстоўваць компоненты LangChain унутры вузлаў; змінюецца толькі шар оркестрацыі.
Форма коду, болей дакладна
Ментальная модель у форме ланцюга:
from langchain.agents import AgentExecutor, create_tool_calling_agent
agent = create_tool_calling_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = executor.invoke({"input": "Find the latest invoice and flag anomalies"})
Ментальная модель у форме графа з явнымі галузямі і можласцю зберагання дадзеных:
from langgraph.graph import StateGraph, END
def call_model(state: AgentState) -> AgentState:
response = llm.invoke(state["messages"])
return {"messages": [response]}
def route(state: AgentState) -> str:
last = state["messages"][-1]
return "tools" if last.tool_calls else END
graph = StateGraph(AgentState)
graph.add_node("agent", call_model)
graph.add_node("tools", tool_node)
graph.add_conditional_edges("agent", route, {"tools": "tools", END: END})
graph.add_edge("tools", "agent")
app = graph.compile(checkpointer=checkpointer)
У другай форме падчынны шлях «апрацавац змест, а потым, можа, перапісаць» ўстаўляецца як видны элемент, а не як параграф у мегапрампцы.
Дзе падходяць CrewAI і Pydantic AI
CrewAI оптымізуе саўместную працю ролей/задач, калі метафорай выступае экіпаж, а не машына станоў. Pydantic AI і падобныя кіты агентаў на адной заснове типавання акцэнююць на викорыстоўванні інструментаў на адной заснове схемы. Яны можу існаваць разам з LangGraph або заменіць яго, калі патрэбы керування потокам задач є меншымі. Тэндэнцыя да пераходу на LangGraph ўсё сильнейшая, калі важлівыя ўстойчывасць і можлівасць розгалужэння — а не тады, калі дастатнік короткі список задач для экіпажа.
Рэальныя проблемы, якія стояць за пераходам
- Закрытый поток керування у екзэкутарах агентаў.
- Відсутнасць можлівасці чакання людзей без маніпуляцый з глобальным станом.
- Штормы перапрыбуткаў, якія занова выконваюць незворачныя вызывы інструментаў.
LangGraph не вяршыць чаго-небудзь зачарована, каб паспрацавалі паказаныя проблемныя інструменты, але ён дазволяе рашыць гэтыя проблемы пад час перагляду коду.
Калі LangChain яшчэ мае сенс
- Пайплайны запыткаў у стылі ETL
- Просты RAG без циклаў
- Код-з’ёднаннік усередине узлоў графа
- Шыранне знанняў і швыдкае стварэнне пратотыпаў
Не перапісвайце работаючы пакетны задачы LCEL у граф рады простаўкі.
Калі варта перапісваць
- Агенты з калькольніцамі, якія выкарыстоўваюць рэфлексію
- Саўстанавленне дакументацыі HITL
- Дзейнікі доследжэнняў або операцый, якія працуюць дзёўга
- Патрэба ў налагоджэнні стану з можлывасцю «паўтарэння часу»
План міграцыі
- Апісайце ланцюгі і пазначыце тыя, якія выкарыстоўваюць паўтарэння, галузі або HITL.
- Выявіце схему спакаванага стану (TypedDict / Pydantic).
- Перакладзіце кожны сегмент ланцуга у вузел з чысткімі вхіднымі/выходнымі даннымі.
- Заменіце галузі, апісаныя у запитах, на умовныя рэшткі.
- Дадзіце прыстроі контроля стану перш чым увёліце функцію паўзы/працявання ў працоўнай сітцы.
- Залічвайце рэтрыверы/інструменты LangChain унутрь вузелаў, каб утрымаць можлівасць паштоўнай переработы інтеграцый.
Арганізацыйныя наследкі
Графы ствараюць спакаваны діалект между інжынерамі ML і платформы: вузелы адпавядаюць за власнасць, рэшткі — за SLA. Реагаванне на інцыдэты павышаецца, калі сторанкі цитуюць назвы вузелаў. Гэтая яснасць є важлівай часткай “чаму маець месца міграцыя”, больш чым будзь-які мікротэст.
Косты і компромісы
Графы дадаюць додатковы код і выклікаюць патрэбу навучання. Чрэзмерная фрагментацыя кожнага дапаможніка у вузел стварае зайвыя даны. Пачніце з простага цыклу: рэтрывер → генераванне → ацэнка → перапісва, а потым дзеліце вузелы, калі паказуюць на то метрыкі.
Заканчэнне
LangChain научыў працоўнікам галузі, як пад’язаць модэлі. LangGraph научыў, як запускаць іх як системы. Цяжар пераходу не столькі ў адмове, сколькі у прызнанні таго, што працоўныя агенты ёсць рабочіяя процесы — а рабочыяя процесы заслуговуют на машыны станоў, а не проста на лініі перадачы данных.
Запісы з команд, якія перейшлі
Можна спакою чакаць паралельнага запуску: застаўце шлях ланцуга для трафіку з низкім рызыкам, а частка сэсій нехай пераходзіць на граф. Пораўняйце практычныя показнікі адказоў інструментаў, сярэдню колькасць крокаў да завершэння і частоту перарываў з боку людзей. Якщо граф будзе кращы па працэсабельнасці, нават якщо якасць адказаў схожая, тады перейдзіце на яго. Якщо няма, проблема была ў іншым — зазвычай у дизайне або ацэнцы інструмента, а не у марке калектара.
Анты-цялі дакументаў: LangGraph не будзе правіляць індэкс, які не можа дацаў адказ, а таксама інструмент без ключоў ідэмпотентнасці. Супараднавайце міграцыю з контрактамі для інструментаў і з навучальными набрамі па афлайн-режыме, якія тэстуюць тыя галузі, якія вас цікавяць.
Метрыкі інтересу паказваюць, што разработчыкі пераводзяцца да кітасоў у стыле графаў і команд, калі продакшн-агенты выкарыстоўваюць патрабаванні да стойкага стану і галузеўвання — а не проста да дыялектаў з большай дужынай. Першая хвіля дапрацоўак на базе LLM адзначалася простымі пайплайнамі з вызовам і атрыбутаванням дадзеных; нынешняя хвіля адзначаецца яснымі рабочымі процесамі.
Шаблоны, якія з’яўляюцца ў аналізе пасля выканання
Калі агент, які работае на асоцыяцыйных ланцутках, не функцыонуе ў працэйным режыме, опис проблемы часта выглядае аднакова: модель «выбрала» прыйняць рашэнне або паскочыць пераканалку верыфікацыйнага інструмента, або праба працы зноў стварыла побачны эфект, або ніхто не мог з’ясавіць, чы раней велася процедура запошуку. Графы не пазбавляюць нас гэтых багоў, але яны зміняюць наявныя пасля гэтага доказы. Лог-файлы на рэвенеўскам адзінку і разлікі станоў чэкпойнтаў паказваюць апошняй правільны стан. Гэта скрачвае сярэжны час розумення проблемы, нават калі сярэжны час яе вылечэння ўсё ж залежыць ад якосці інструмента.
Проектаванне стану, каб міграцыі давалі рэзультат
Прыдатныя схемы стану чыста і ясна называюць бізнес-этапы: retrieved, drafted, graded, approved, committed. Канцы ланцуткаў перамешчаюць гэтыя флагі; запыткі іх не ствараюць. Пад час міграцыі кожны стары сегмент ланцутка прыроўнюецца да адпаведнага этапу. Якщо этап не можа быць названы, сегмент можа ўсё ще не патрабаваць свайго сабстаятнага рэвену.
Чалавек у працэйным цыкле без глобальных зменяючыхся спосабаў
Часта сіткі выкарыстоўваюць прыем HITL у зовнішнях чергах, якія з’едынаюцца за дапамой калбэкаў. Інтарупцыяны LangGraph заставляюць чаканне вестыся ўнутрь самага часу выконання: пункт перапытку замарожваецца, UI скарыстоўваецца затверджэнне, а праця продырвалася далей з тым самым ідэнтыфікаторам нитки. Такія рашэнні усунуць цэлы клас багоў “згубленага затверджэння”, якія ствараюць проблемы ў ручна адмаўляваных системах чакання.
Стрімаванне і адзычкі UX
Корыстувальнікі продуктав на адміністрацыю чакаюць стрымы токенав і таксама стрымы крокаў (“пошук”, “ацэнка”, “чаканне на затверджэнне”). Стрымы западзеў графа чыста адпавядаюць тым крокам. Сіткі могу імітаваць гэта за дапамой спецыяльных калбэкаў, але модель графа падходзіць да вокабуляру UX, які ўжо сформаваўся на рынку.
Контроль витак
Большая колькаўская кантэнцыя можа значыць большую колькасць вызоў модэля. Абмежыце максимальную колькасць пераглядоў у цыклах разгледу. Рэзультаты выкарыстоўвання кеша захавваюцца ў стане на весь час жыцця ниткі. Перадважайце дашчавыя класыфікаторы для вузлаў маршрутызацыі і заставайце вялікія модэлі для сынтэзы. Міграцыя — гэта можласць намерна адключыць гэтыя механізмы, а не адкрываць іх у счытку за выкарыстоўванне хмарных сервісаў.
Інтэроперабельнасць з існуючымі інвестыцыямі LangChain
Інструменты для выкарыстоўвання дадзеных, абгульнікі інструментаў, парсеры выходных дадзеных і шаблоны запитаў рэдка калі патрабуюць перапісву. Вузлы імпортуюць іх. Аргумент пра вялікія ўжо зробленыя витраты проты LangGraph зазвычай занікае, калі команды бачаць, што міграцыя — гэта перанесення існуючай структуры, а не ўсё новая будова. Якщо CrewAI чы іншыя кіты вже маюць падсістэму, абгульніце іх як адзіны вузел, замест таго каб прымусваць ўніфікацыю.
Матрыца рашэнняў (скапаная)
| Сігнал | Lean chain | Lean graph |
|---|
Паводзіны типовага тыдня перапісву
Дзень 1–2: накрасіць чынную ланцоўку як граф на дошцы працы; пазначыць станы. Дзень 3: рэалізаваць «шчаслівы» шлях з двумя умовнымі рэшткамі. Дзень 4: дадаць тэпак перагляду і перарыв для небяспечнага інструмента. Дзень 5: аналізаваць трафік і паруляваць выкарыстоўваныя траекты. Команды, якія прахоцяюць крок з дошкай працы, ствараюць «спагеті» з ланоўкаў унутры вузлаў і дывуюцца, чаму нічога не павылучылася.
Што значыць «завершанае» для міграцыі
Міграцыя адбываецца тады, калі аператары можаць самымі засобамі выявіць, який вузол запрацаваў последнім, якія ключы стану зменіліся і як пракрантаваць роботу з пярэднім пунктом перапыткі — без неабяжнае чытання історыі дзейнасці у Slack. Якасць адказоў можа застацца незменнай з самага пачатку; але можнасць працаваць — ні.
Конкрэтныя разлікі ў проявах адказоў на бяды
Бяды ў ланцоўчатых структурах часта прымаюць форму адной эксцэпцыі, якая пакрывае аблуку модэлю глыбока ўсередзіне виконвальнай последовасці. Бяды ў графах можна атрыбуаваць назве вузла і ключам стану, якія былі пры ўзбіе. Інжынеры падтрымкі выкарыстоўваюць гэтыя атрыбуты, каб вырашыць, чы хацяца правіць механізмы выкарысцы дадзеных, функціяў ацэнкі чы адаптараў інструментаў. З часам гэтыя разлікі становяцься важлівейшым фактам у аналізе рэнтабельнасці міграцыі, чым будзь-які мікротэст на колькісць токеноў за секунду.
Версіяванне графаў
Спрэбуйце спісаваныя визначэнні графа аднарадзіць як элементы з версіямі. Калі зменшуюцца параметры вузлаў, паднесіце значэнне graph_version у метаданыях пункта перапытку і адклейце некампатыбельныя запускі. Без такой дисцыпліны функцыя паўзы/працэсу запуску становіцца працоўнай перакладкой пад час поступовых развяртанняў. Ланцюгі рэдка сталкваліся з гэтым, таму што яны рэдка паўзяюць у процесе работы; графы робяць гэтую проблему виднымі — і рашальнымі.
Досвід локальнай разработкі
Здатнасць LangGraph пераходзіць праз вузлы з ўстановленым станам дапамагае павышыць якасць перагляду PR-запросаў. Рэвізоры можаць запускаць адзін вузел з зафіксаванымі данымі, узамест таго каб перазапускаць цэлы ланцюг. Такі падход стимулюе стварэнне меншых, тэставаныях вузлаў — тое жа атласна натыску, які вже існуе для HTTP-обработчаў у хорашай архітэктуре служб.
Калі не трэба фрагментавацыя
Якщо два «вузлы» завжды працюють разам без жадных переходаў межы ўсередзіні іх, трэба заліць іх як адны вузел, у яком рэалізуюцца последовныя вызывы LangChain. Графы павінны фіксаваць рашэння, а не кожную межу функцыі. Чрэзмерная фрагментацыя є прычыной невыкарыстоўвання можлівасцей пад час актыўных міграцый.
Траекторыя экасістэмы
Калі інструменты для стварэння контрольных пунктав, дэбагування ў студіях і адкладання рэшэнняў працююць краща, знижуецца вартасць раннега выбору графаў. Аднак стратэгічныя прычыны застаюцца тымі ж — неабходнасць чыстасці прабегу выканання: агенты ёсць рабочіяя процесы, і калі важна надзея на надзейнасць у працэ, яны павінны выкорыстоўваць чыткія машыны станаў.
Дадатак: пачатковыя тэмы для адгукнення ў часе перагляду архітектуры
З’ясавайце, чы можа ныяны ўпрабовач на час зупініцца для правовага аналізу без втраты стану; чы запобігаецца падвойным вызовам інструментоў пад час перапрыбутку; чы новы інжынер можа назваць крокі на адной толькі візуалізацыі ходу задачы; і чы ацэнка включае ўсі можлівыя шляхі розвязкі, а не толькі той, які заканчываецца успехам. Негатывныя адказы ўскладнююць процес міграцыі. Пазитывныя адказы можа значыць, што LangChain-plus-discipline вже достатні — і гэта таксама ўзяць за правільны резултат.
Дадатак: пытанні для пачатку дыялогу пад час аналізу архітектуры
З’ясавайце, чы можа ныяны ўпрабоўчык на час зупініцца для правовага аналізу без втраты стану; чы запобігаецца падзейванню дублікатных вызоў інструментаў пад час перапрыбутку; чы новы інжынер можа назваць крокі на адной лягуце трэйса; і чы ацэнка павярнутая да всіх варыянтов роzwіцця, а не толькі да успешнага шляху выкарыстоўвання. Негатыўныя адказы ёсць сігналамі пра неабходнасць міграцыі. Пазитыўныя адказы можа значыць, што LangChain-plus-discipline вядома ўжо дастатні — і гэта таксама ёсць правямы результат.
Функцыйнасць — гэта KPI міграцыі, якую ў канечнай лініі зауважае фінансавы віддзел.
Документавацыйце прыпускі, стосоўныя прабегу кантролю, разам з кодам, каб будучыя змены не моглі таямна адмахнуцца якога-небудзь кроку чы фільтра. Вядчыжайце тэсты, якія можна пераканаць на машыне, над культурнымі знаннямі, якія дзеляюцца толькі ў чат-тредах. Практыкуйце сценарыі адказу на неудачы ўсякі раз, калі змінююцца топологія чы правілы ідэнтыфікаціі. Храніце наборы ацэнкі ў версіях разам з графам, каб проблемы сталі видныя ранейш, чым гэта зробляць кліенты.