Skip to content

Latest commit

 

History

History
98 lines (78 loc) · 2.91 KB

240910-langgraph-overview.md

File metadata and controls

98 lines (78 loc) · 2.91 KB

langgraph overview

what is langgraph?

langgraph 是一个使用 LLM 来构建有状态,多角色应用的库,可用于创建 agent 以及多个 agent 协作的工作流;

key features

flowchart LR
    s0[fa:fa-list-ul 关键特性]
    s1["fa:fa-step-forward 循环和分支: 能够实现循环和条件判断"]
    s2["fa:fa-step-forward 持久化: 执行图中步骤之后能够自动存储状态。<br/> 能够在随时暂停和恢复图的执行,<br/> 以达到错误恢复,人工干预,时间旅行等功能"]
    s3["fa:fa-step-forward 循环中的人类参与: <br/> 中断 agent 计划好的下一步,以便人类可以授权或编辑"]
    s4["fa:fa-step-forward 支持流式输出"]
    s5["fa:fa-step-forward 与 langchain 集成: 可集成 langchain 和 langsmith,但并不依赖"]

    s0 --> s1
    s0 --> s2
    s0 --> s3
    s0 --> s4
    s0 --> s5
Loading

how to build langgraph

flowchart TB
    subgraph s1["fa:fa-step-forward 初始化 LLM 和工具"]
        direction LR
        s101["
#35; get llm
llm_model = llm.LLM(yml_config).get_llm()
#35; 定义一个工具列表,初始包含一个名为search的工具
tools = [search]
#35; 绑定工具节点到LLM模型,使得模型可以调用工具节点中的工具
model = llm_model.bind_tools(tools=tools)
        "]
    end

    subgraph s2["fa:fa-step-forward 初始化带状态的 graph"]
        s201["
#35; 创建一个工作流,用于处理对话
workflow = StateGraph(MessagesState)
        "]
    end

    subgraph s3["fa:fa-step-forward 定义图的节点"]
        s301["
#35; 添加图的节点
workflow.add_node('agent', call_model)
workflow.add_node('tools', tool_node)        
        "]
    end

    subgraph s4["fa:fa-step-forward 定义图的入口点及边"]
        s401["
#35; 添加图的边及条件边
workflow.add_edge(START, 'agent')
workflow.add_conditional_edges('agent', should_continue)
workflow.add_edge('tools', 'agent')        
        "]
    end

    subgraph s5["fa:fa-step-forward 编译图"]
        s501["
#35; 创建一个检查点,用于保存对话状态
checkpointer = MemorySaver()

#35;  编译工作流,生成一个可执行的应用程序
app = workflow.compile(checkpointer=checkpointer)        
        "]
    end

    subgraph s6["fa:fa-step-forward 执行图"]
        s601["
config = {'configurable': {'thread_id': 111}}
final_state = app.invoke(
    {'messages': [HumanMessage(content='what's the weather like in san francisco?')]},
    config=config,
)

print(final_state['messages'][-1].content)        
        "]
    end


    s1 --> s2 --> s3 --> s4 --> s5 --> s6
Loading

完整代码详见: langgraph_example.py