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()
相关推荐
来杯@Java12 分钟前
图书管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·mybatis·课程设计
ZC跨境爬虫28 分钟前
跟着 MDN 学CSS day_39:(Flexbox 弹性盒子核心机制)
前端·css·ui·html·tensorflow
小陈同学呦31 分钟前
前端如何处理订单状态导航的数据竞态问题
前端·javascript
卷毛的技术笔记1 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
编程大师哥1 小时前
匿名函数 lambda + 高阶函数
java·python·算法
喵个咪1 小时前
GoWind Toolkit 前端代码生成|Vue3(ElementPlus/Vben)、React(AntDesign)全自动一键生成教程
前端·vue.js·react.js
東雪木1 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
adrninistrat0r1 小时前
Java调用链MCP分析工具
java·python·ai编程
噜噜噜阿鲁~2 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
春生野草2 小时前
反射、Tomcat执行
java·开发语言