# LangGraph 与 LCEL 构建大型复杂应用导览
这一章主要掌握关于LangGraph的相关知识,涵盖了LCEL表达式缺陷、LangGraph组件初识、LangGraph高级特性、LLMOps聊天机器人应用流程拆分等内容。
# 01. LCEL表达式缺陷与LangGraph初识
掌握了解LCEL表达式创建的链应用以及传统Agent组件的缺陷,涵盖了不可循环、黑盒、不可控等特性。
了解图和状态机的概念,并掌握LangGraph制作的图架构应用如何解决与扩展LCEL表达式及传统Agent组件的缺陷。
掌握掌握LangGraph各个组件的作用及功能,涵盖了节点、边、检查点、状态、预构建组件等。
# 02. LangGraph进阶使用与项目构建
掌握LangGraph的高阶技巧,涵盖状态持久化、人机交互、状态更新与回退、审查、流式传输、异步、子图等。
掌握利用LangGraph构建复杂Agent的思路拆解,从零实现ReACT智能体、工具调用智能体、代码助手智能体等。
# 03. 源码解析与LLMOps应用流程更新
了解LangGraph源码中核心组件运行流程及解析,加深对LangGraph的使用与理解。
更新LLMOps项目AI聊天机器人应用的运行流程,涵盖了知识库、工具调用、审核、问题建议等内容,并设计基于该运行流程的图架构,便于后续开发。
# 最新版 LangChain 用法提示
新版 LangChain 更推荐用 LCEL、
Runnable、ChatModel.bind_tools()、结构化输出和 LangGraph 来组织复杂链路;老式Chain、部分AgentExecutor写法可以读懂,但新项目应优先选择更清晰的图或 Runnable 编排。工具调用相关代码要区分两层:模型是否原生支持 tool/function calling,以及业务侧如何定义工具 schema、参数校验、错误兜底和观测日志。
如果示例中的导入路径和你当前安装版本不同,优先查当前版本包内导出位置;常见迁移方向是从
langchain拆到langchain-core、langchain-community、langchain-openai、langgraph等包。
# 拓展
工具或插件不要只看能不能调通,更要看是否可观测、可限流、可重试、可审计。联网类工具还要处理超时、空结果、搜索噪声和结果时效性。
Agent 场景里,Prompt 只是调度策略的一部分;工具描述、参数 schema、历史状态、错误反馈、停止条件和人工介入点同样会影响最终稳定性。
# 常见问题
为什么模型没有调用工具?常见原因是工具描述不清晰、参数 schema 过宽或过窄、用户问题不需要工具、模型本身不支持工具调用,或者工具绑定位置不对。
为什么工具调用后回答仍然不准?先看工具返回是否正确,再看工具结果是否被放回模型上下文,最后检查输出解析、历史消息和异常兜底是否覆盖了真实错误。
# 面试题
解释函数调用、工具调用和 Agent 的区别。
LangChain 中 tool schema 的作用是什么?为什么参数校验对生产环境很重要?
ReACT Agent 和 tool-calling Agent 的核心差异是什么?分别适合什么场景?
LangGraph 相比 LCEL 更适合解决哪些复杂编排问题?
# 生产问题排查
| 问题 | 常见原因 | 处理方式 |
|---|---|---|
| 工具没有被调用 | 工具描述弱、绑定失败、模型不支持 | 打印绑定后的模型配置,补充工具描述,换用支持工具调用的模型 |
| 参数格式错误 | schema 设计不清晰,模型生成字段不稳定 | 使用 Pydantic/JSON Schema 校验,失败后把错误反馈给模型重试 |
| 联网结果不可用 | 搜索为空、接口超时、命中低质量页面 | 增加超时、重试、结果过滤、来源白名单和降级回答 |
| Agent 循环不停止 | 缺少终止条件或工具返回被误判 | 设置最大迭代次数,记录每轮 thought/action/observation,增加停止规则 |
| 线上难以复现 | 缺少输入、工具请求和模型响应日志 | 给每次调用加 trace id,记录工具入参、出参、耗时和异常 |