
一、从业务需求到智能工作流
前面两篇文章中,我们学习了LangGraph的基础概念和状态管理机制。今天我们将这些知识应用到一个真实场景:构建一个能够自动处理邮件的Agent。
这个Agent需要做三件事:读取邮件内容、判断邮件类型、根据类型采取不同的处理方式。如果是普通问询,就查询知识库给出回答;如果是会议请求,就检查日历并安排时间。
这正是LangGraph擅长的场景:多步骤、有决策分支、需要状态管理的复杂工作流。
二、业务需求分析
在实现之前,我们先明确一下具体需求:
输入:一封邮件的内容和发件人信息。
处理流程:
- 分析邮件意图(问询 or 会议请求)
- 如果是问询:查询知识库,生成回复
- 如果是会议请求:检查日历,找出可用时间,生成回复
- 将回复标记为草稿,等待审核
输出:生成的回复草稿和处理记录。
三、SOP设计
把业务需求转化为Agent的标准操作流程(SOP),就是将复杂任务拆解为明确的步骤。SOP的价值在于让工作流程标准化、可复制、可优化。
我们的邮件处理Agent的SOP:
步骤1:读取邮件 - 获取邮件内容和元数据,初始化处理状态
步骤2:分析意图 - 使用LLM判断邮件类型,决定后续路径
步骤3A:处理问询 - 查询知识库,生成回复内容
步骤3B:处理会议 - 检查日历,找出可用时间段
步骤4:生成草稿 - 整理回复内容,保存为草稿
这个SOP清晰地描述了Agent的工作流程,包含了顺序执行和条件分支,可以直接映射为LangGraph的节点和边。
四、代码实现
完整代码
from typing import TypedDict, Literal
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# 定义状态
class EmailState(TypedDict):
email_content: str
sender: str
intent: Literal["query", "meeting", "unknown"]
knowledge_result: str
available_times: list[str]
draft_reply: str
processing_log: list[str]
llm = ChatOpenAI(model="gpt-4", temperature=0)
def read_email(state: EmailState) -> EmailState:
"""读取邮件"""
return {"processing_log": [f"开始处理来自{state['sender']}的邮件"]}
def classify_intent(state: EmailState) -> EmailState:
"""分析邮件意图"""
prompt = ChatPromptTemplate.from_messages([
("system", "分析邮件意图,只返回'query'或'meeting'。"),
("user", "{email}")
])
result = (prompt | llm).invoke({"email": state["email_content"]})
intent = result.content.strip().lower()
return {
"intent": intent,
"processing_log": [f"识别意图:{intent}"]
}
def handle_query(state: EmailState) -> EmailState:
"""处理问询邮件"""
# 模拟知识库查询
kb = {"价格": "标准套餐999元/月", "功能": "支持文档处理、对话管理"}
result = next((v for k, v in kb.items() if k in state["email_content"]), "未找到相关信息")
return {
"knowledge_result": result,
"processing_log": [f"查询知识库:{result}"]
}
def handle_meeting(state: EmailState) -> EmailState:
"""处理会议请求"""
times = ["周三下午2:00-4:00", "周四上午10:00-12:00", "周五下午3:00-5:00"]
return {
"available_times": times,
"processing_log": [f"找到{len(times)}个可用时间段"]
}
def create_draft(state: EmailState) -> EmailState:
"""生成回复草稿"""
if state["intent"] == "query":
draft = f"感谢咨询!{state['knowledge_result']}如有其他问题请随时联系。"
else:
times = " ".join([f"- {t}" for t in state["available_times"]])
draft = f"感谢会议请求! 可用时间:{times}请选择合适的时间。"
return {"draft_reply": draft, "processing_log": ["生成草稿完成"]}
# 路由函数
def route_by_intent(state: EmailState) -> str:
return "handle_query" if state["intent"] == "query" else "handle_meeting"
# 构建工作流图
workflow = StateGraph(EmailState)
workflow.add_node("read_email", read_email)
workflow.add_node("classify_intent", classify_intent)
workflow.add_node("handle_query", handle_query)
workflow.add_node("handle_meeting", handle_meeting)
workflow.add_node("create_draft", create_draft)
workflow.set_entry_point("read_email")
workflow.add_edge("read_email", "classify_intent")
workflow.add_conditional_edges(
"classify_intent",
route_by_intent,
{"handle_query": "handle_query", "handle_meeting": "handle_meeting"}
)
workflow.add_edge("handle_query", "create_draft")
workflow.add_edge("handle_meeting", "create_draft")
workflow.add_edge("create_draft", END)
app = workflow.compile()
五、运行演示
处理问询邮件
query_email = {
"email_content": "你好,请问你们的产品价格是多少?",
"sender": "customer@example.com",
"processing_log": []
}
result = app.invoke(query_email)
print(f"意图:{result['intent']}")
print(f"草稿回复:{result['draft_reply']}")
print(" 处理日志:")
for log in result["processing_log"]:
print(f"- {log}")
输出结果:
意图:query
草稿回复:
感谢咨询!
标准套餐999元/月
如有其他问题请随时联系。
处理日志:
- 开始处理来自customer@example.com的邮件
- 识别意图:query
- 查询知识库:标准套餐999元/月
- 生成草稿完成
处理会议请求
meeting_email = {
"email_content": "我想和您约个时间讨论一下合作事宜。",
"sender": "partner@example.com",
"processing_log": []
}
result = app.invoke(meeting_email)
print(f"意图:{result['intent']}")
print(f"可用时间:{result.get('available_times', [])}")
print(f"草稿回复:{result['draft_reply']}")
输出结果:
意图:meeting
可用时间:['周三下午2:00-4:00', '周四上午10:00-12:00', '周五下午3:00-5:00']
草稿回复:
感谢会议请求!
可用时间:
- 周三下午2:00-4:00
- 周四上午10:00-12:00
- 周五下午3:00-5:00
请选择合适的时间。
六、扩展思路
这个邮件处理Agent展示了LangGraph的核心能力:通过状态图管理复杂的工作流。在实际应用中,可以继续扩展:
增加更多意图类型:投诉处理、订单查询、技术支持等,只需添加新的节点和路由规则。
接入真实系统:连接邮件服务API、真实的知识库、日历系统,将模拟数据替换为实际调用。
添加人工审核节点:在发送回复前,添加一个审核节点,让人工确认草稿内容。
实现多轮交互:保存对话历史,支持用户对回复进行追问或修改请求。
七、总结
通过这个邮件处理Agent,我们看到了如何将实际业务需求转化为LangGraph工作流:
首先是需求拆解。将复杂任务分解为清晰的步骤,形成SOP。每个步骤对应一个节点,步骤之间的决策对应条件边。
然后是状态设计。定义贯穿整个流程的状态对象,包含所有必要的信息。状态在各个节点间流转,每个节点只负责更新自己相关的部分。
最后是图的构建。用StateGraph将节点和边组织起来,形成完整的执行流程。条件边根据状态动态决定下一步,让工作流具备智能决策能力。
LangGraph的优势在于它让复杂的多步骤、多分支工作流变得清晰可控。相比传统的if-else嵌套或状态机实现,图结构更容易理解和维护。每个节点职责单一,条件边处理决策逻辑,状态对象管理数据流转,整个系统结构清晰,易于调试和扩展。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包:
- ✅ 从零到一的 AI 学习路径图
- ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
- ✅ 百度/阿里专家闭门录播课
- ✅ 大模型当下最新行业报告
- ✅ 真实大厂面试真题
- ✅ 2025 最新岗位需求图谱
所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》,下方扫码获取~

① 全套AI大模型应用开发视频教程
(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)

② 大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

③ 大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

④ AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

⑤ 大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

⑥ 大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

以上资料如何领取?

为什么大家都在学大模型?
最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

不出1年,“有AI项目经验”将成为投递简历的门槛。
风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!


这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


以上全套大模型资料如何领取?

450

被折叠的 条评论
为什么被折叠?



