一、基础理解(必考)
1) LangGraph 是什么?与 LangChain 的关系?
标准回答:
LangGraph 是在 LangChain 之上、专注于 Agentic Workflow(智能体工作流) 的有向图(DAG/状态机)框架。它用 State / Node / Edge / Graph 来描述复杂多轮流程与分支,并提供持久化(persistence/checkpointer)以支持长对话、人工介入、容错与“时间旅行”。而 LangChain 更像是组件库与可组合的可运行单元(Runnables/Chains/Agents/Tools)。在复杂流程里,我会用 LangGraph 编排整体流转,用 LangChain 提供 LLM 与工具能力。(LangChain AI, LangChain Blog)
要点清单:
LangGraph:编排/状态机;LangChain:组件库/执行单元。
强项:复杂分支、多 Agent、状态持久化与人工干预。(LangChain AI)
2) 为什么用 Graph,而不是简单 Chain?
标准回答:
Chain 线性好上手,但分支、循环、并发依赖一复杂就难维护;Graph 把“谁先跑、跑完去哪儿、遇到条件怎么分路”全部显式化,可读、可测、可控,特别适合多 Agent 协作、工具调用决策、审阅环节(HITL)。LangGraph 还内置**条件边 add_conditional_edges、顺序片段 add_sequence**等语义化原语。(LangChain AI)
3) 核心组件有哪些?(State / Node / Edge / Graph / Persistence)
标准回答(一句话版):
State:共享数据结构(可用
TypedDict/Pydantic/dataclass 定义),节点读写都基于它;支持Reducer合并多节点更新。Node:函数或 Runnable,输入 State、输出部分 State 更新。
Edge:决定流转,含普通边与条件边。
Graph:把节点和边编成可编译/可执行的工作流。
Persistence:通过 checkpointer 为每步打快照到
thread,支持长记忆、人工中断/恢复、时间回溯与容错。(LangChain 文档, Medium, LangChain AI)
4) 什么是 Agentic Workflow?举例
标准回答:
Agentic Workflow 是把智能体的思考-行动-反思过程用可控的图结构表达:例如“研究员 Agent→工具检索→验证 Agent→人审→汇总 Agent”,每步的输入输出与路径选择都由 State/Edge 管理,并可在任一点中断等待人审后继续。(LangChain AI)
二、机制与实现(进阶)
1) State 与传统 Memory 有何不同?
标准回答:
传统 Memory 多是会话“黑盒”拼接;LangGraph 的 State 是显式模式化的应用状态,可按键(渠道)细粒度更新,并用 Reducer 决定合并策略(覆盖/累加/去重)。这让可观测性、可测试性、并发合并成为一等公民。(LangChain 文档, Medium)
极简定义示例:
1 | from typing import TypedDict, Annotated |
(TypedDict/Reducer 的思路见官方与实践文章。)(LangChain 文档, Medium)
2) 如何添加节点?节点如何收/返数据?
标准回答:
用 StateGraph(StateSchema) 创建图;add_node(name, fn) 注册节点;节点函数 接收 State、返回部分 State 更新;add_edge/ add_sequence 定义流转;编译后 app.invoke(input, config) 执行。
1 | from langgraph.graph import StateGraph, END |
(API 语义参考文档。)(LangChain AI)
3) If-Else 条件分支怎么做?
标准回答:
用 add_conditional_edges(start, router, mapping);router(state) 返回映射里的分支键。
1 | def route(state: State): |
(条件边是 LangGraph 的一等公民。)(LangChain AI, Medium, DEV Community)
4) 长对话记忆 / 循环执行如何实现?
标准回答:
依靠显式 State + Reducer保存上下文,并用 Edge 实现回边或停止条件;对于超长会话与跨会话记忆,启用 checkpointer 将状态写入 thread,每次用同一 thread_id 继续。若需人审环节,用 interrupt 暂停并恢复。(LangChain AI)
5) 如何持久化执行状态?为何有意义?
标准回答:
在 compile 传入 checkpointer(如 MemorySaver/SqliteSaver),系统每个超步(super-step)都会快照到 thread,随后可回放、恢复、分叉试验,实现人机协同(HITL)、容错与时间旅行。
1 | from langgraph.checkpoint import MemorySaver # 或 SqliteSaver(...) |
(持久化与线程语义见官方概念页与 JS 版文档说明。)(LangChain AI)
三、应用与思考(专家)
1) 多智能体系统如何用 LangGraph 表达?
标准回答(结构化):
节点划分:
Researcher(检索/起草)→Verifier(事实核验/引用补全)→Synthesizer(结构化输出)。关键状态:
messages、facts、citations、tools_logs;对messages采用累加 Reducer。边逻辑:Verifier 评分低于阈值→ 回到 Researcher;高于阈值→ Synthesizer。
HITL:在发布前 interrupt 等待人审。
工具位:统一用
ToolNode执行检索/计算工具,降低节点对工具适配成本。(LangChain AI)
2) 科学计算/实验流程自动化中,相比传统编排的优势?
标准回答:
语义更贴近“推理-行动”:把 LLM 的决策、工具调用与验收环节显式化;
细粒度可观测:State/Reducer 让每一步的输入输出可追溯;
HITL 与可回溯:checkpointer 支持“暂停-审阅-继续”和时间旅行;
复杂分支更自然:条件边/循环优雅表达实验分叉与失败回退。(LangChain AI)
3) 与状态机(State Machine)的相似之处?
标准回答:
二者都以状态 + 转移为核心:节点像“状态处理器”,边是“转移函数”,条件边对应“守卫条件”。不同在于 LangGraph 的状态可结构化/可合并,并内置快照/回放与人审中断。(LangChain AI)
4) 可扩展性挑战与对策
标准回答:
图规模增长:强约束命名与模块化子图;
并发与一致性:为并发写入的键设计合适 Reducer(累加/去重/优先级);
工具爆炸:收敛到
ToolNode+ 统一工具接口;可观测性:事件日志+线程快照;
团队协作:约定 State 模式与边命名规范,建立“设计评审”清单。(Medium)
四、追问速答(拉扯细节)
1) 能否与 LangChain 工具库结合?怎么做?
速答:
可以。推荐用 ToolNode:让工具调用成为一个标准节点,输入/输出都走 State(通常是 messages 通道),兼容 LangChain 的工具与 ReAct 策略。(LangChain AI, LangChain)
2) 支持异步/并发吗?
速答:
LangGraph 的图本身支持多起点依赖收敛(一个节点可等多个前驱完成)与并行分支;在实现层可用异步 Runnable/外部并行执行,最后通过 Reducer 合并到同一 State 键。(LangChain AI, Medium)
3) 节点失败时如何做容错?
速答(工程化建议):
分层重试:节点内重试 + 图级回退边;
幂等设计:节点按“输入 State→输出增量”保证可重放;
持久化恢复:依赖 checkpointer 从最近快照恢复继续;
人审兜底:关键节点前后放
interrupt。(LangChain AI)
4) 与 Prefect/Airflow 的差异与优势?
速答:
Prefect/Airflow 更偏批式/数据工程 DAG;
LangGraph 专注 LLM/Agent 推理-行动回路(条件边、工具调用、HITL、对话记忆、时间旅行等是一等能力)。如要 ETL/调度选 Prefect/Airflow;要智能体流程选 LangGraph。(LangChain AI)
五、30 秒口播版(面试开场可直接说)
“我把 LangGraph 当作面向智能体的状态机。它在 LangChain 之上,用 State/Node/Edge 把复杂分支、循环和工具调用显式化;用 checkpointer 把每步状态快照到
thread,从而支持长记忆、人工中断/恢复与时间旅行。实现上我会用add_node / add_edge / add_conditional_edges编排流程、用Reducer合并并发写入;多智能体场景下把检索、验证、汇总拆成节点,低分回路重写,高分发布,并在关键点interrupt走人审。相比传统 DAG 编排,LangGraph 对 LLM 推理-行动链路的表达更自然、可观测也更强。” (LangChain AI)
六、加分点(可主动抛出)
人-机协作:熟练使用
interrupt做审批与回溯分叉。(changelog.langchain.com)工具调用最佳实践:统一
ToolNode,把工具当“副作用节点”。(LangChain AI)State 设计:为并发量身定制 Reducer(累加/去重/优先级),并把关键指标(score、citations)单独成键,便于路由与审计。(Medium)
Support me with a coffee?