LangChain × LangGraph 分层编排:组合确定性流程与自主 Agent
《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday
你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。
上一小节,咱们使用 LangGraph 实现了一套研发任务分流流程。
这套流程有三个功能:
- 任务不存在,就要求用户补充任务编号
- 任务已经完成,就直接结束
- 任务仍在进行中,才进入后续处理
这套流程还是蛮稳定,因为每条路径都已经由代码提前写好了。
但是,如果进行中的任务还需要继续分析交付风险,问题就没有这么固定了。
Agent 得先查询测试报告。
如果测试已经全部通过,就不需要再查失败详情。
但是,如果测试失败了,还得继续查询失败位置、断言内容和实际值,最后再生成风险结论。
这里面既有确定的流程,也有不确定的决策。
因此,这样的需求,如果全部交给 LangGraph ,咱们得把每一种 Tool 调用顺序都提前写出来。
而如果全部交给 createAgent(),模型又可能拿一个已经完成或者根本不存在的任务继续分析,白白消耗模型调用。
所以,这一小节要解决的问题就是:
使用 LangGraph 控制确定的业务流程,再把真正需要模型判断的部分交给 LangChain Agent。
也就是 LangChain 和 LangGraph 配合使用,来把 组合确定性流程 与 自主 Agent 进行组合。
如果用个专业的名字表示,那就是 Workflows and agents
其中:
- Workflow 拥有预先确定的代码路径
- Agent 则会动态决定自己的处理过程和 Tool 使用方式
先看一下最终结果
本节代码在:
/Code/Node/第五章/08-langchain-langgraph-workflow
模型环境变量和前几节保持一致,直接执行:
npm run demo
代码运行之后,程序会依次处理三个任务:DEV-1024、DEV-2048、DEV-9999
先看正在进行中的 DEV-1024:
这里同时出现了两条执行路径。
- 外层的
LangGraph执行路径:load_task → risk_agent → finalize_analysis - 内层的 Agent 自己决定的 Tool 调用路径:
get_latest_test_report → get_failure_detail
接着再看已经完成的 DEV-2048:
任务已经完成,普通代码直接给出了处理结果,模型根本没有被调用。
不存在的 DEV-9999 也是一样:
本节试读已结束
继续学习,解锁完整课程
购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。
