LangGraph支持的核心设计模式及对应代码示例

以下是LangGraph支持的核心设计模式及对应代码示例,结合官方文档和最佳实践整理:


🔧 一、顺序执行模式(Sequential Workflow)

适用场景:线性任务流(如数据预处理→生成→输出)

from langgraph.graph import StateGraph
from typing import TypedDict

# 🚀 定义状态结构
class ArticleState(TypedDict):
    content: str

# 📌 节点函数
def preprocess(state: ArticleState) -> ArticleState:
    state["content"] = "预处理后的文本"
    return state

def generate(state: ArticleState) -> ArticleState:
    state["content"] += "\n生成的新内容"
    return state

# 🛠️ 构建图
workflow = StateGraph(ArticleState)
workflow.add_node("preprocess", preprocess)
workflow.add_node("generate", generate)
workflow.add_edge("preprocess", "generate")  # 顺序连接
workflow.set_entry_point("preprocess")
workflow.set_finish_point("generate")

# ▶️ 执行
app = workflow.compile()
result = app.invoke({"content": ""})
print(result["content"])

输出

预处理后的文本
生成的新内容

💡 关键点:add_edge定义节点顺序,set_entry_pointset_finish_point标记起止。


🔄 二、监督模式(Supervisor-Agent)

适用场景:多智能体协作(如任务分派)

from langgraph.types import Command

class State(TypedDict):
    task: str
    result: str

def supervisor(state: State) -> Command:
    if "数据分析" in state["task"]:
        return Command(goto="data_agent")  # 路由到数据分析Agent
    return Command(goto="default_agent")

def data_agent(state: State) -> State:
    state["result"] = "分析完成"
    return state

workflow = StateGraph(State)
workflow.add_node("supervisor", supervisor)
workflow.add_node("data_agent", data_agent)
workflow.add_conditional_edges("supervisor", supervisor)  # 动态路由
workflow.add_edge("data_agent", END)  # 结束

⚠️ 注意:add_conditional_edges实现动态路由,Command(goto=节点名)控制跳转。


🧩 三、Map-Reduce模式

适用场景:并行处理列表数据(如批量生成标题)

def topic_splitter(state: State) -> list:
    return [Send("generate_title", {"topic": t}) for t in state["topics"]]

def generate_title(state: State) -> State:
    state["title"] = f"{state['topic']}的标题"
    return state

workflow = StateGraph(State)
workflow.add_node("splitter", topic_splitter)
workflow.add_node("generate_title", generate_title)
workflow.add_conditional_edges("splitter", topic_splitter)  # 分发任务
workflow.add_edge("generate_title", END)

🌟 核心:Send对象将列表拆分为独立状态,并行执行。


👥 四、人机协同模式(Human-in-the-loop)

适用场景:高风险操作需人工审核

from langgraph.types import interrupt

def review(state: State):
    if state["risk_level"] > 0.8:
        interrupt({"alert": "需要人工审核!"})  # 暂停流程
    return state

# 恢复执行(人工输入后)
graph.invoke(Command(resume="审核通过"))

🔒 安全机制:interrupt()暂停流程,Command(resume=)恢复。


💭 五、反思优化模式(Reflection)

适用场景:迭代优化输出质量

def generator(state: State) -> State:
    state["draft"] = "初稿内容"
    return state

def critic(state: State) -> State:
    if "错误" in state["draft"]:
        state["feedback"] = "需修正XX"
        return Command(goto="generator")  # 重新生成
    return Command(goto=END)

workflow.add_node("generator", generator)
workflow.add_node("critic", critic)
workflow.add_edge("generator", "critic")
workflow.add_conditional_edges("critic", critic)  # 循环优化

🔁 特点:通过条件边实现循环,直至满足质量要求。


📊 模式对比总结

模式核心机制适用场景复杂度
顺序执行固定节点链路线性流程任务
监督模式动态路由(Command)多智能体分工⭐⭐⭐
Map-ReduceSend对象分发批量并行处理⭐⭐
人机协同中断(interrupt)高风险操作审核⭐⭐
反思优化条件循环边迭代优化输出⭐⭐⭐

完整代码参考:LangGraph官方示例库
提示:结合with_structured_output()可强化结构化输出能力(见的JSON模式)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值