LANGGRAPH

LangGraph 中的应用程序从一个入口点开始,根据执行情况,流程可能会进入一个函数或另一个函数,直到到达END。

1. 状态

**状态(State)**是 LangGraph 的核心概念。它表示流经您应用程序的所有信息。

复制代码
from typing_extensions import TypedDict

class State(TypedDict):
    graph_state: str

状态是用户定义的,因此字段应精心设计,以包含决策过程所需的所有数据!

2. 节点

**节点(Nodes)**是 Python 函数。每个节点:

  • 将状态作为输入
  • 执行一些操作
  • 返回状态的更新
复制代码
def node_1(state):
    print("---Node 1---")
    return {"graph_state": state['graph_state'] +" I am"}

def node_2(state):
    print("---Node 2---")
    return {"graph_state": state['graph_state'] +" happy!"}

def node_3(state):
    print("---Node 3---")
    return {"graph_state": state['graph_state'] +" sad!"}

例如,节点可以包含:

  • LLM 调用:生成文本或做出决策
  • 工具调用:与外部系统交互
  • 条件逻辑:确定后续步骤
  • 人工干预:从用户获取输入

3. 边

**边(Edges)**连接节点并定义通过图的可能路径

复制代码
import random
from typing import Literal

def decide_mood(state) -> Literal["node_2", "node_3"]:
    
    # Often, we will use state to decide on the next node to visit
    user_input = state['graph_state'] 
    
    # Here, let's just do a 50 / 50 split between nodes 2, 3
    if random.random() < 0.5:

        # 50% of the time, we return Node 2
        return "node_2"
    
    # 50% of the time, we return Node 3
    return "node_3"

边可以是:

  • 直接的:始终从节点 A 到节点 B
  • 有条件的:根据当前状态选择下一个节点

4. 状态图

**状态图(StateGraph)**是包含您整个代理工作流的容器

复制代码
from IPython.display import Image, display
from langgraph.graph import StateGraph, START, END

# Build graph
builder = StateGraph(State)
builder.add_node("node_1", node_1)
builder.add_node("node_2", node_2)
builder.add_node("node_3", node_3)

# Logic
builder.add_edge(START, "node_1")
builder.add_conditional_edges("node_1", decide_mood)
builder.add_edge("node_2", END)
builder.add_edge("node_3", END)

# Add
graph = builder.compile()
相关推荐
无限大62 小时前
为什么"Web3"是下一代互联网?——从中心化到去中心化的转变
前端·后端·程序员
cypking2 小时前
CSS 常用特效汇总
前端·css
毕设源码-邱学长2 小时前
【开题答辩全过程】以 基于springboot的社区团购小程序设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
风月歌2 小时前
小程序项目之超市售货管理平台小程序源代码(源码+文档)
java·微信小程序·小程序·毕业设计·源码
程序媛小鱼2 小时前
openlayers撤销与恢复
前端·js
Thomas游戏开发2 小时前
如何基于全免费素材,0美术成本开发游戏
前端·后端·架构
小李独爱秋2 小时前
Linux操作系统实验报告单(13) 显示进程列表
linux·运维·服务器·操作系统·实验报告单
若梦plus2 小时前
Hybrid之JSBridge原理
前端·webview
SimonKing2 小时前
浅谈银行系统对接中的安全和槽点
java·后端·程序员