跳到主要内容
📖 本章预览

本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。

第17章 Graph 工作流:像搭积木一样编排 AI

17.1 Graph 核心概念

17.1.1 为什么需要 Graph

ReAct Agent 的局限:
- 执行路径不可控(LLM 自主决定,可能跑偏)
- 复杂流程难以表达(多分支、并行、循环)
- 调试困难(黑盒执行)

Graph 工作流的优势:
- 显式定义执行路径(节点 + 边)
- 支持条件分支、并行执行、循环
- 可视化、可调试、可复现

17.1.2 核心概念

Graph 三要素:

1. Node(节点)—— 执行单元
- LLM Node:调用大模型
- Tool Node:调用工具/函数
- Human Node:等待人工输入
- 自定义 Node:任意逻辑

2. Edge(边)—— 连接节点,定义执行顺序
- 普通边:A → B(无条件跳转)
- 条件边:A → B/C/D(根据条件选择)

3. State(状态)—— 在节点间传递的数据
- 类似一个共享的 Map,每个节点可读写

17.2 StateGraph 构建

17.2.1 基本用法

/**
* 构建一个简单的 Graph:分类 → 处理 → 回复
*/
public CompiledGraph buildSimpleGraph(ChatModel chatModel) {

StateGraph graph = new StateGraph("customer-service");

// 定义节点
graph.addNode("classify", state -> {
// 意图分类
String intent = chatModel.call("判断以下问题的意图(咨询/投诉/退款):" + state.get("input"));
state.put("intent", intent.trim());
return state;
});

graph.addNode("handleQuery", state -> {
String answer = chatModel.call("回答用户咨询:" + state.get("input"));
state.put("output", answer);
return state;
});

graph.addNode("handleComplaint", state -> {
state.put("output", "已记录您的投诉,工单号:" + UUID.randomUUID().toString().substring(0, 8));
return state;
});

graph.addNode("handleRefund", state -> {
state.put("output", "已提交退款申请,预计 3-5 个工作日到账。");
return state;
});

// 定义边
graph.setEntryPoint("classify");

// 条件路由:根据意图分发到不同节点
graph.addConditionalEdge("classify", state -> {
String intent = (String) state.get("intent");
if (intent.contains("投诉")) return "handleComplaint";
if (intent.contains("退款")) return "handleRefund";
return "handleQuery";
}, Map.of(
"handleQuery", "handleQuery",
"handleComplaint", "handleComplaint",
"handleRefund", "handleRefund"
));

// 所有处理节点都指向结束
graph.addEdge("handleQuery", StateGraph.END);
graph.addEdge("handleComplaint", StateGraph.END);
graph.addEdge("handleRefund", StateGraph.END);

return graph.compile();
}

17.2.2 执行 Graph


🔒 解锁完整内容

本章剩余内容需要解锁后查看

以上仅为本章部分预览内容,完整内容包含更多深度源码解析、实战代码和面试要点。

加入知识星球你将获得:

  • ✅ 全部 26 章完整内容 + 持续更新
  • ✅ 配套源码 + 实战项目
  • ✅ 一对一答疑 + 面试辅导
  • ✅ 简历优化 + 内推机会

📚 本章完整目录

以下为本章完整目录结构,加入知识星球即可解锁全部内容。

17.3 条件路由与分支控制

17.3.1 多级条件路由

17.3.2 循环控制

17.4 内置节点类型

17.4.1 LLM Node

17.4.2 Tool Node

17.4.3 Human Node

17.5 实战:多步骤研究工作流

17.6 与 LangGraph 对比