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

LangGraph для агентаў у працэсе вырабоцтва: пункты контролю, HITL і графы з калькольнімі агентамі

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

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

Крыніцы: LangGraph Explained: Build Production-Ready AI Agents in 2026

Што такое LangGraph?

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

Два гады тыму багато “агентаў” былі проста цыкламі з LLM без можлівасці вяснавання. Абяканне падчас выкаання задачы значыла перзапуск з нуля. Графы робяць памятку, розгалужэння і воззврат да выкаання задачы прывілейованымі элементамі.

Чаму ланцюгі не былі дастатні

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

Асновныя паняці: вузлы, рэшткі і стан

  • Стан — атрыбуты з паказаным тыпам, якія несе працэс выкаання
  • Вузлы — функціі, якія апдэйтуе стан
  • Канты — фіксаваныя або умовныя пераходы
  • Кампілявацыя — пераканальванне структуры, прыўязка чэкпойнтара
  • Выклік/стрым — адканальванне з налаштаваннямі
  • from typing import TypedDict, Annotated
    from langgraph.graph import StateGraph, END
    import operator
    
    # Define your state
    class AgentState(TypedDict):
        messages: Annotated[list, operator.add]
        next_action: str
        final_answer: str
    
    from langgraph.graph import StateGraph, END
    from langgraph.prebuilt import ToolNode
    from langchain_openai import ChatOpenAI
    from langchain_core.tools import tool
    
    # 1. Define a tool
    @tool
    def search_web(query: str) -> str:
        """Search the web for current information."""
        # Connect to your actual search API here
        return f"Search results for: {query}"
    
    # 2. Define the LLM with tools bound
    llm = ChatOpenAI(model="gpt-4o", temperature=0)
    tools = [search_web]
    llm_with_tools = llm.bind_tools(tools)
    
    # 3. Define node functions
    def call_llm(state):
        response = llm_with_tools.invoke(state["messages"])
        return {"messages": [response]}
    
    def should_continue(state):
        last_message = state["messages"][-1]
        if last_message.tool_calls:
            return "run_tools"
        return END
    
    # 4. Build the graph
    workflow = StateGraph(AgentState)
    workflow.add_node("agent", call_llm)
    workflow.add_node("run_tools", ToolNode(tools))
    
    workflow.set_entry_point("agent")
    workflow.add_conditional_edges("agent", should_continue)
    workflow.add_edge("run_tools", "agent")
    
    # 5. Compile with a checkpointer
    from langgraph.checkpoint.sqlite import SqliteSaver
    memory = SqliteSaver.from_conn_string("agents.db")
    graph = workflow.compile(checkpointer=memory)
    
    # 6. Run with a thread ID for persistent state
    config = {"configurable": {"thread_id": "user-123"}}
    result = graph.invoke({"messages": [("user", "What is the latest GPT model?")]}, config)
    print(result["messages"][-1].content)
    
    # Add a human approval gate before a risky action
    workflow.add_node("human_review", interrupt(before="execute_payment"))
    
    pip install langgraph langchain-openai psycopg2-binary
    

    Як на самай працуе кераванне станам

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

    Першы агент (Python)

    З’явіце стан → дадзіце вузлы → з’ўяжыце канты → кампіляюце → выклікайце з ідэнтыфікатарам ніткі, калі вікорыстоўваеце сэйвер.

    Участка чалавека

    Атрымайце перыявленне пры парадоксальных наследках; продажыце працэс з падтверджаннем. Гэта ўпрацоўкавая разліка межа дэмантаў і агентаў у прыродных умовах.

    Шаблоны калькі агентаў

    Перадача заданняя адміністратару/спецыялісту, паралельныя галузі і сабграфы чыста адпрацоўваюцца за дапамогою іменаваных вузлаў з аднародным чыяўнікам стану або станам, раздзеленым на часткі.

    Стойкасць і вярнэнне

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

    Калі варта выбраць LangGraph

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

    Заключэнне

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

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

    Інструментавайце падзеі запуску/заканчэння вузлаў, каб трэйсы показвалі, якая галузь працавала. Графы без тэлеметрыі становяцца „чорнымі яшчыкамі“ у 2 гадзіны ночы.

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

    Ігнораваць шум ад прамоцый на рынку; інжынерная цэннаць — гэта контрольныя точкі ў потоцы керування і HITL. Тэўтарыкі неабходна направляць на гэтыя прымітывы.

    Інструментавацыя запускам/заканчэнню супэльнікаў вузлаў, каб трэйсы паказвалі, якая гілка была выканана. Графы без тэлеметрыі стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігнораваць шум ад прамоцый на рынку; інжынерная цэннаць — гэта контрольныя точкі ў потоцы керування і HITL. Тэўтарыкі неабходна направляць на гэтыя прымітывы.

    Інструментавацыя запускам/заканчэнню супэльнікаў вузлаў, каб трэйсы паказвалі, якая гілка была выканана. Графы без тэлеметрыі стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігнораваць шум ад прамоцый на рынку; інжынерная цэннае — гэта контрольныя точкі і HITL. Туторыялі неабходна сконцэнтраваць на гэтых прымітывах.

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

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

    Ігнораваць шум ад прамоцый на рынку; інжынерная цэннае — гэта контрольныя точкі і HITL. Туторыялі неабходна сконцэнтраваць на гэтых прымітывах.

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

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

    Ігноравайце шум ад прамоцый на рынку; інжынерная цэнна — гэта контрольныя точкі і HITL. Нехай навучальныя матэрыялы сфокусаваны на гэтых прымітывах.

    Інструментавайце запуск/заканчэнне супарадкі вузлаў, каб трэйсы паказвалі, якая гілка выканана. Графы без тэлеметрыяй стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігноравайце шум ад прамоцый на рынку; інжынерная цэнна — гэта контрольныя точкі і HITL. Нехай навучальныя матэрыялы сфокусаваны на гэтых прымітывах.

    Інструментавайце запуск/заканчэнне супарадкі вузлаў, каб трэйсы паказвалі, якая гілка выканана. Графы без тэлеметрыяй стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігнораваць шум праспекту; інжынерная цэннаць — гэта контрольныя точкі па тэчы бізнес-логікі і HITL. Туторыялі неабходна сконцэнтраваць на гэтых прымітывах.

    Інструментавацыя запускам/заканчэнню справы вузла, каб трэйсы паказвалі, якая гілка была выканана. Графы без тэлеметрыі стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігнораваць шум праспекту; інжынерная цэннаць — гэта контрольныя точкі па тэчы бізнес-логікі і HITL. Туторыялі неабходна сконцэнтраваць на гэтых прымітывах.

    Інструментавацыя запускам/заканчэнню справы вузла, каб трэйсы паказвалі, якая гілка была выканана. Графы без тэлеметрыі стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігнораваць шум ад прамоцый на рынку; інжынерная цэннаць крыўціцца ў контрольным прайску і HITL. Тэўтарыялі нехай былі сфокусаваны на гэтых прымітывах.

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

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

    Ігнораваць шум ад прамоцый на рынку; інжынерная цэннаць крыўціцца ў контрольным прайску і HITL. Тэўтарыялі нехай былі сфокусаваны на гэтых прымітывах.

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

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

    Ігнораваць шум праспекту; інжынерная цэннаць — гэта контрольныя точкі па тэчы бізнес-логікі і HITL. Туторыялі неабходна сконцэнтраваць на гэтых прымітывах.

    Інструментавацыя запускам/заканчэнню справы вузла, каб трэйсы паказвалі, якая гілка была выканана. Графы без тэлеметрыі стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

    Ігнораваць шум праспекту; інжынерная цэннаць — гэта контрольныя точкі па тэчы бізнес-логікі і HITL. Туторыялі неабходна сконцэнтраваць на гэтых прымітывах.

    Інструментавацыя запускам/заканчэнню справы вузла, каб трэйсы паказвалі, якая гілка была выканана. Графы без тэлеметрыі стаюць чорнымі коробкамі о 2 гадзіны ночы.

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

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

    Кожны тып інцыдэту ў працоўнай сітцы трэба аднасоўваць да праблемы графа: таймауты → вузел перапрыбуткаў, некарэктны JSON інструмента → вузел верыфікацыі, перакрыцча аператара → перарыв.

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

    Утрымвацца ад размешчэння ўсей політыкі бізнесу ў адным „бог-вузле“; раздзеляць ёю, каб можна было атрыбуаваць адпаведныя прычыны неудач.

    Кожны тып інцыдэту ў працоўнай сітцы трэба аднасоўваць да праблемы графа: таймауты → вузел перапрыбуткаў, некарэктны JSON інструмента → вузел верыфікацыі, перакрыцча аператара → перарыв.

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

    Ўзайце адзін «бог-вузел» для всей правілы бізнесу; раздзяліце іх, каб можна было выявіць прычыны абэранцэй.

    Спраўаце кожны тып інцыдэту ў працоўнай сістэме да атракты графа: праханні часу → вузел павторных спроб, некарэктны JSON інструмента → вузел верыфікацыі, перакрыцча аператара → перарыв.

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

    Ўзайце адзін «бог-вузел» для всей правілы бізнесу; раздзяліце іх, каб можна было выявіць прычыны абэранцэй.

    Спраўаце кожны тып інцыдэту ў працоўнай сістэме да атракты графа: праханні часу → вузел павторных спроб, некарэктны JSON інструмента → вузел верыфікацыі, перакрыцча аператара → перарыв.

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

    Ўзайце адзін «бог-вузел» для всей правілы бізнесу; раздзяліце іх, каб можна было выявіць прычыны абэранцэй.

    Спраўцаваце кожны тып інцыдэту ў працоўнай сітцы з атрактам графа: таймауты → вузел перапрыбуткаў, некарэктны JSON інструмента → вузел верыфікацыі, перакрыцце аператара → перарыв.

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

    Утрымаўцеся ад падмешвання ўсей політыкі бізнесу ў адны “бог-вузел”; раздзяліце ўсё, каб можна было атрыбуаваць адпаведныя неудачы.

    Спраўцаваце кожны тып інцыдэту ў працоўнай сітцы з атрактам графа: таймауты → вузел перапрыбуткаў, некарэктны JSON інструмента → вузел верыфікацыі, перакрыцце аператара → перарыв.

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