LangGraph体验:用代码模拟烹饪全流程,AI工作流如此简单!

大家好,今天我们来聊聊一个有趣的话题——如何用LangGraph来模拟真实的业务流程。通过一个完整的烹饪例子,你将看到AI工作流管理的魅力所在!

什么是LangGraph?

LangGraph是一个基于图结构的工作流管理库,可以让你用代码直观地描述复杂的业务流程。就像我们做饭需要经过多个步骤一样,很多业务场景也需要按照特定顺序执行多个任务。

环境准备:安装必要的依赖

1
pip install langgraph

烹饪工作流:从买菜到上桌

让我们来看一个具体的例子:烹饪红烧羊排的完整流程。

核心代码结构

首先,我们定义整个工作流的状态:

1
2
3
4
5
6
from langgraph.graph import StateGraph, START, END
from typing_extensions import TypedDict

class State(TypedDict):
ingredients: str # 食材
ret: list # 执行结果记录

三个关键节点

1. 超市采购节点

1
2
3
4
5
6
def supermarket(state):
print("supermarket")
return {
"ingredients": state["ingredients"],
"ret": ["{}买到了".format(state["ingredients"])]
}

2. 查找菜谱节点

1
2
3
4
5
6
7
def recipe(state):
print("recipe")
last_ret = state["ret"]
return {
"ingredients": state["ingredients"],
"ret": last_ret + ["搜到了红烧{}的菜谱".format(state["ingredients"])]
}

3. 烹饪制作节点

1
2
3
4
5
6
7
def cooking(state):
print("cooking")
last_ret = state["ret"]
return {
"ingredients": state["ingredients"],
"ret": last_ret + ["做了一道红烧{}".format(state["ingredients"])]
}

构建工作流图

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建状态图
sg = StateGraph(State)

# 添加三个节点
sg.add_node("supermarket", supermarket)
sg.add_node("recipe", recipe)
sg.add_node("cooking", cooking)

# 建立节点关系
sg.add_edge(START, "supermarket") # 开始 -> 采购
sg.add_edge("supermarket", "recipe") # 采购 -> 找菜谱
sg.add_edge("recipe", "cooking") # 找菜谱 -> 烹饪
sg.add_edge("cooking", END) # 烹饪 -> 结束

执行工作流

1
2
3
graph = sg.compile()
ret = graph.invoke({"ingredients": "羊排"})
print(ret)

运行结果:

1
2
3
4
5
6
7
8
9
10
11
supermarket
recipe
cooking
{
'ingredients': '羊排',
'ret': [
'羊排买到了',
'搜到了红烧羊排的菜谱',
'做了一道红烧羊排'
]
}

技术亮点解析

1. 状态管理

State类定义了整个工作流的数据结构,确保每个节点都能访问和修改统一的状态。

2. 节点封装

每个业务步骤都被封装成独立的函数,职责单一,便于测试和维护。

3. 可视化流程

通过边的连接,清晰地展现了业务流程:采购 → 找菜谱 → 烹饪

4. 数据传递

每个节点都能读取上游节点的输出,并向下游节点传递处理结果。

实际应用场景

这种工作流模式在实际项目中非常有用:

  • 客服系统:用户咨询 → 意图识别 → 答案生成 → 满意度调查
  • 电商流程:下单 → 库存检查 → 支付 → 发货
  • 内容生产:选题 → 大纲 → 写作 → 审核 → 发布

扩展思考

当前我们的流程是线性的,但LangGraph还支持更复杂的场景:

  • 条件分支:如果某食材缺货,自动选择替代方案
  • 并行执行:同时准备多个食材
  • 循环处理:重复尝试直到成功

总结

通过这个简单的烹饪例子,我们看到了LangGraph在业务流程管理中的强大能力。它让复杂的业务逻辑变得清晰可见,让代码更好地反映真实的业务场景。

无论是简单的线性流程,还是复杂的决策网络,LangGraph都能提供优雅的解决方案。下次当你面对复杂的业务流程时,不妨考虑用图结构的方式来思考!


动手试试吧! 你可以替换食材名称,或者添加新的烹饪步骤,体验LangGraph带来的流程管理乐趣。

欢迎在评论区分享你的LangGraph使用经验!