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

Чаму команды перахоцяюць з ланцаў LangChain на рабочыя пралэтыры LangGraph

Агенты вырабаткі павінны мець стойкае становішча, галузі і HITL. Зберагачыце інструменты LangChain усерэдзіні вузлаў; пераносіце тэкст развітку керавання ў явны граф, калі таго захоць можлівасць эксплуатацыі.

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

Крыніцы: LangChain to LangGraph: What’s Driving the Migration

Команды, якім стае недастатнька лінейная структура 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 ўсё сільнейшая, калі важлівыя ўстойчывасць і можлівасць розгалужэння — а не тады, калі дастатнік короткі спіс задач для экіпажа.

    Рэальныя проблемы, якія стояць за пераходам

    1. Закрытый поток керування у екзэкутарах агентаў.
    2. Відсутнасць можлівасці чакання людзей без маніпуляцый з глобальным станом.
    3. Штормы перапрыбуткаў, якія занова выконваюць незворачныя вызывы інструментаў.
  • Слабая дыферэнціявацыя межу «памылкай модэлю» і «прыскочаннем параграфу бізнес-процэсу».
  • Тэставанне, якое не можа націліцца на адзін узел з станам фікстура.
  • LangGraph не вяршыць чаго-небудзь зачарована, каб паспрацавалі паказаныя проблемныя інструменты, але ён дазволяе рашыць гэтыя проблемы пад час перагляду коду.

    Калі LangChain яшчэ мае сенс

    • Пайплайны запыткаў у стылі ETL
    • Просты RAG без цыклаў
    • Код-з’ёднаннік унутры узлоў графа
    • Шыранне знанняў і швыдкае стварэнне пратотыпаў

    Не перапісвайце работаючы пакетны задачы LCEL у граф рады простаўкі.

    Калі варта перапісваць

    • Агенты з калькольніцамі, якія выкарыстоўваюць рэфлексію
    • Саўстанавленне дакументацыі HITL
    • Дзейнікі доследжэнняў або операцый, якія працуюць дзёўга
    • Патрэба ў налагоджэнні стану з можлывасцю «паўтарэння часу»

    План міграцыі

    1. Апісайце ланцюгі і пазначыце тыя, якія выкарыстоўваюць паўтарэння, галузі або HITL.
    2. Выявіце схему спакаванага стану (TypedDict / Pydantic).
    3. Перакладзіце кожны сегмент ланцуга у вузел з чысткімі вхіднымі/выходнымі данымі.
    4. Заменіце галузі, апісаныя у запітах, на умовныя рэшткі.
    5. Дадзіце прыстроі контроля стану перш чым увёліце функцію паўзы/працявання ў працоўнай сітцы.
    6. Залічвайце рэтрыверы/інструменты LangChain унутрь вузелаў, каб утрымаць можлівасць паштоўнай перэработы інтэграцый.

    Арганізацыйныя наследкі

    Графы ствараюць спакаваны дыялект между інжынерамі ML і платформы: вузелы адпавядаюць за власнасць, рэшткі — за SLA. Рэагаванне на інцыдэты павышаецца, калі сторанкі цытуюць назвы вузелаў. Гэтая яснасць ёсць важлівай часткай “чаму маець месца міграцыя”, больш чым будзь-які мікротэст.

    Косты і компромісы

    Графы дадаюць додатковы код і выклікаюць патрэбу навучання. Чрэзмерная фрагментацыя кожнага дапаможніка у вузел стварае зайвыя даны. Пачніце з простага цыклу: рэтрывер → генераванне → ацэнка → перапісва, а потым дзеліце вузелы, калі паказуюць на то метрыкі.

    Заканчэнне

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

    Запісы з команд, якія перэйшлі

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

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

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

    Шаблоны, якія з’яўляюцца ў аналізе пасля выканання

    Калі агент, які работае на асоцыяцыйных ланцутках, не функцыонуе ў працэйным рэжыме, опіс проблемы часта выглядае аднакова: мадэль «выбрала» прыйняць рашэнне або паскочыць пераканалку верыфікацыйнага інструмента, або праба працы зноў стварыла побачны эфект, або ніхто не мог з’ясавіць, чы раней велася процедура запошуку. Графы не пазбавляюць нас гэтых багоў, але яны зміняюць наявныя пасля гэтага доказы. Лог-файлы на рэвенеўскам адзінку і разлікі станоў чэкпойнтаў паказваюць апошняй правільны стан. Гэта скрачвае сярэжны час розумення проблемы, нават калі сярэжны час яе вылечэння ўсё ж залежыць ад якосці інструмента.

    Праектаванне стану, каб міграцыі давалі рэзультат

    Прыдатныя схемы стану чыста і ясна называюць бізнес-этапы: retrieved, drafted, graded, approved, committed. Канцы ланцуткаў перамешчаюць гэтыя флагі; запыткі іх не ствараюць. Пад час міграцыі кожны стары сегмент ланцутка прыроўнюецца да адпаведнага этапу. Калі этап не можа быць названы, сегмент можа ўсё шчэ не патрабаваць свайго сабстаятнага рэвену.

    Чалавек у працэйным цыкле без глобальных зменяючыхся спосабаў

    Часта сіткі выкарыстоўваюць прыем HITL у зовнішнях чэргах, якія з’едынаюцца за дапамой калбэкаў. Інтарупцыяны LangGraph заставляюць чаканне вестыся ўнутрь самага часу выканання: пункт перапытку замарожваецца, UI скарыстоўваецца затверджэнне, а праця продырвалася далей з тым самым ідэнтыфікаторам ніткі. Такія рашэнні усунуць цэлы клас багоў “згубленага затверджэння”, якія ствараюць проблемы ў ручна адмаўляваных сістэмах чакання.

    Стрымаванне і адзычкі UX

    Корыстувальнікі продуктав на адміністрацыю чакаюць стрымы токенав і таксама стрымы крокаў (“пошук”, “ацэнка”, “чаканне на затверджэнне”). Стрымы западзеў графа чыста адпавядаюць тым крокам. Сіткі могу імітаваць гэта за дапамой спецыяльных калбэкаў, але мадэль графа падходзіць да вокабуляру UX, які ўжо сформаваўся на рынку.

    Контроль віток

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

    Інтэроперабельнасць з існуючымі інвестыцыямі LangChain

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

    Матрыца рашэнняў (скапаная)

    Сігнал Lean chain Lean graph
    Адаптаванне RAG за адзін прыход так необавязкова Ціклы адказаў складнае прыроднае HITL у серэдзіне працы дадана званоўка вбудованае Працы на калькі дзён незручнае тэпкі перагляду Простыя запросы ETL ідэальнае занадта многа

    Паводзіны тыповага тыдня перапісву

    Дзень 1–2: накрасіць чынную ланцоўку як граф на дошцы працы; пазначыць станы. Дзень 3: рэалізаваць «шчаслівы» шлях з двумя умовнымі рэшткамі. Дзень 4: дадаць тэпак перагляду і перарыв для небяспечнага інструмента. Дзень 5: аналізаваць трафік і паруляваць выкарыстоўваныя траекты. Команды, якія прахоцяюць крок з дошкай працы, ствараюць «спагеты» з ланоўкаў унутры вузлаў і дывуюцца, чаму нічога не павылучылася.

    Што значыць «завершанае» для міграцыі

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

    Конкрэтныя разлікі ў проявах адказоў на бяды

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

    Версіяванне графаў

    Спрэбуйце спісаваныя візначэнні графа аднарадзіць як элементы з версіямі. Калі зменшуюцца параметры вузлаў, паднесіце значэнне graph_version у метаданыях пункта перапытку і адклейце некампатыбельныя запускі. Без такой дысцыпліны функцыя паўзы/працэсу запуску становіцца працоўнай перакладкой пад час поступовых развяртанняў. Ланцюгі рэдка сталкваліся з гэтым, таму што яны рэдка паўзяюць у працэсе работы; графы робяць гэтую проблему віднымі — і рашальнымі.

    Досвід локальнай разработкі

    Здатнасць LangGraph пераходзіць праз вузлы з ўстановленым станам дапамагае павышыць якасць перагляду PR-запросаў. Рэвізоры можаць запускаць адзін вузел з зафіксаванымі данымі, узамест таго каб перазапускаць цэлы ланцюг. Такі падход стымулюе стварэнне меншых, тэставаныях вузлаў — тое жа атласна натыску, які ужо існуе для HTTP-обработчаў у хорашай архітэктурэ служб.

    Калі не трэба фрагментавацыя

    Калі два «вузлы» завжды працуюць разам без жадных перэходаў межы ўсерэдзіні іх, трэба заліць іх як адны вузел, у яком рэалізуюцца последовныя вызывы LangChain. Графы павінны фіксаваць рашэння, а не кожную межу функцыі. Чрэзмерная фрагментацыя ёсць прычыной невыкарыстоўвання можлівасцей пад час актыўных міграцый.

    Траекторыя экасістэмы

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

    Дадатак: пачатковыя тэмы для адгукнення ў часе перагляду архітэктуры

    З’ясавайце, чы можа ныяны ўпрабовач на час зупініцца для правовага аналізу без втраты стану; чы запобігаецца падвойным вызовам інструментоў пад час перапрыбутку; чы новы інжынер можа назваць крокі на адной толькі візуалізацыі ходу задачы; і чы ацэнка включае ўсі можлівыя шляхі розвязкі, а не толькі той, які заканчываецца успехам. Негатывныя адказы ўскладнююць працэс міграцыі. Пазітывныя адказы можа значыць, што LangChain-plus-discipline ужо достатні — і гэта таксама ўзяць за правільны рэзултат.

    Дадатак: пытанні для пачатку дыялогу пад час аналізу архітэктуры

    З’ясавайце, чы можа ныяны ўпрабоўчык на час зупініцца для правовага аналізу без втраты стану; чы запобігаецца падзейванню дублікатных вызоў інструментаў пад час перапрыбутку; чы новы інжынер можа назваць крокі на адной лягуце трэйса; і чы ацэнка павярнутая да всіх варыянтов роzwіцця, а не толькі да успешнага шляху выкарыстоўвання. Негатыўныя адказы ёсць сігналамі пра неабходнасць міграцыі. Пазітыўныя адказы можа значыць, што LangChain-plus-discipline вядома ўжо дастатні — і гэта таксама ёсць правямы рэзультат.

    Функцыйнасць — гэта KPI міграцыі, якую ў канечнай лініі зауважае фінансавы віддзел.

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