第一部分:LangChain 完全指南

一、LangChain 是什么?

1.1 一句话解释

LangChain:大模型应用的"乐高积木"

它帮你做好了:

  • 连接各种 AI 模型
  • 处理提示词模板
  • 管理对话记忆
  • 连接外部工具
  • 处理文档做 RAG

1.2 生动比喻:乐高积木

传统LLM开发 LangChain
像手工雕刻 像乐高积木
每个项目从头开始 提供标准化组件
处理各种底层细节 快速组合成复杂应用
重复劳动,效率低下 可复用、可扩展

二、LangChain 整体架构

2.1 架构图

┌─────────────────────────────────────────────────────────────────┐

│                        LangChain 架构                           │

├─────────────────────────────────────────────────────────────────┤

│   ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐        │

│   │ Models  │  │Prompts │  │ Output  │  │ Chains  │        │

│   │  模型层  │  │ 提示词  │  │ 解析器  │  │   链    │        │

│   └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘        │

│        │            │            │            │                │

│        └────────────┼────────────┼────────────┘                │

│                     ▼                                         │

│              ┌─────────────┐                                 │

│              │    LCEL     │  ← 管道语法,用 | 连接          │

│              └──────┬──────┘                                 │

│                     │                                        │

│   ┌─────────┐  ┌────┴────┐  ┌─────────┐  ┌─────────┐       │

│   │ Agents  │  │ Memory  │  │ Tools   │  │ Indexes │       │

│   └─────────┘  └─────────┘  └─────────┘  └─────────┘       │

└─────────────────────────────────────────────────────────────┘


三、LangChain 组件详解

3.1 Models(模型层)

作用:统一调用各种 AI 模型

不用 Models 的问题

不同模型 API 各不相同,换模型要重写代码:

# OpenAIimport"gpt-4"# DeepSeekimport"deepseek-chat"# 每换一个模型,代码都要改!
用 Models 的好处

一次代码,随意切换模型:

fromimport# 切换模型只需要改这一行!"deepseek-chat"# model = init_chat_model("gpt-4o")"你好"

3.2 Prompts(提示词)

作用:模板化提示词

不用 Prompts 的问题

每次调用都要写完整提示词:

# 重复代码"你是一个医生,请回答:发烧怎么办""你是一个医生,请回答:咳嗽怎么办"
用 Prompts 的好处

模板化,一次定义,重复使用:

fromimport"你是一个{role},请回答关于{topic}的问题""role""医生""topic""发烧"

3.3 Output Parsers(输出解析)

作用:把 AI 输出变成结构化数据

不用 Output Parsers 的问题

需要手动解析字符串:

"返回JSON"# 返回:"{"fruit": "苹果", "color": "红色"}"# 要自己解析!
用 Output Parsers 的好处

自动解析成结构化数据:

fromimportfromimportclass水果BaseModelstrstrprint# 直接访问!

3.4 Chains(链)

作用:把多个组件串起来

fromimportfromimportfromimport"用一句话概括:{topic}""deepseek-chat""topic""AI"

3.5 Agents(代理)

作用:能自主决策和执行工具

不用 Agents 的问题

模型只会回答,不会做事:

"北京天气怎么样?"# 回答:抱歉我不知道(因为模型训练数据是过去的)
用 Agents 的好处

自主判断并调用工具:

fromimportfromimport@tooldefget_weathercity: strstr"""获取城市天气"""returnf"{city}今天晴天,25℃""deepseek-chat""你是一个助手""messages""role""user""content""北京天气怎么样?"# 自动调用工具!

3.6 Tools(工具)

作用:给 AI 增加超能力

fromimport@tooldefquery_orderorder_id: strstr"""查订单""""12345""已发货"return"未找到"

3.7 Memory(记忆)

作用:让 AI 记住对话历史

fromimport"chat_history"True"我叫小明""messages""role""user""content""我叫什么?"# 回答:小明!

3.8 Indexes(RAG)

作用:让 AI 读取自己的文档

fromimportfromimportfromimport"公司政策.txt"

3.9 Callbacks(回调)

作用:监控调试

import"LANGSMITH_TRACING""true""LANGSMITH_API_KEY""your-key"

四、LangChain 智能客服实战

fromimportfromimportfromimport@tooldefquery_orderorder_id: str"12345""已发货""12346""处理中"return"未找到"@tooldefcreate_returnorder_id: str, reason: strreturnf"已提交退货,订单{order_id}""chat_history"True"deepseek-chat""你是电商客服""messages""role""user""content""查订单12345"

第二部分:LangGraph 完全指南

五、LangGraph 是什么?

5.1 一句话解释

LangGraph:复杂工作流的"交通控制系统"

5.2 生动比喻:城市交通系统

简单链式调用 LangGraph
像单行道 像智能交通系统
只能单向顺序执行 管理多条路径和交叉口
没有分支,没有回头路 处理拥堵和动态调整路线
遇到问题只能停下 有条件跳转、循环执行
单行道(简单链式调用):

A → B → C → D

智能交通系统(LangGraph):

    A

   ↙ ↘

  B    C

  ↓   ↘

  D → E


六、LangGraph 整体架构

6.1 架构图

┌─────────────────────────────────────────────────────────────────┐

│                      LangGraph 架构                              │

├─────────────────────────────────────────────────────────────────┤

│                                                                  │

│   ┌─────────────────────────────────────────────────────────┐  │

│   │                    Graph (图)                            │  │

│   │  ┌─────────────────────────────────────────────────┐    │  │

│   │  │              StateGraph (状态图)               │    │  │

│   │  │                                               │    │  │

│   │  │    ┌─────────┐                                 │    │  │

│   │  │    │  Node   │ ← 节点(工作流中的一个步骤)   │    │  │

│   │  │    └─────────┘                                 │    │  │

│   │  │        ↓ ↑                                     │    │  │

│   │  │    ┌─────────┐                                 │    │  │

│   │  │    │  Edge   │ ← 边(连接步骤)              │    │  │

│   │  │    └─────────┘                                 │    │  │

│   │  │        ↓                                       │    │  │

│   │  │  ┌─────────────────────────────────────────┐   │    │  │

│   │  │  │     Conditional Edge (条件边)          │   │    │

│   │  │  │     根据状态选择不同分支               │   │    │

│   │  │  └─────────────────────────────────────────┘   │    │  │

│   │  └─────────────────────────────────────────────────┘    │  │

│   └─────────────────────────────────────────────────────────┘  │

│                              ↓                                   │

│   ┌─────────────────────────────────────────────────────────┐  │

│   │              Checkpointer (检查点)                       │  │

│   │         持久化状态,支持断点续传                         │  │

│   └─────────────────────────────────────────────────────────┘  │

│                              ↓                                   │

│   ┌─────────────────────────────────────────────────────────┐  │

│   │              Runnable (可运行对象)                       │  │

│   │         invoke() / stream() / batch()                   │  │

│   └─────────────────────────────────────────────────────────┘  │

│                                                                  │

└─────────────────────────────────────────────────────────────────┘

6.2 核心组件关系

┌────────────────────────────────────────────────────────────────┐

│                       LangGraph 核心组件                         │

├────────────────────────────────────────────────────────────────┤

│                                                                 │

│   StateGraph ─────┬─────────────────────────────────────       │

│   (状态图)        │                                             │

│                   │  管理                                        │

│                   ▼                                             │

│   ┌──────────────────────────────────────────────────────┐    │

│   │  State(状态)                                         │    │

│   │  • 整个工作流共享的数据                                 │    │

│   │  • 包含 messages、order_id、step 等                    │    │

│   └──────────────────────────────────────────────────────┘    │

│         ↑           ↑           ↑           ↑                   │

│         │           │           │           │                    │

│    ┌────┴───┐  ┌────┴───┐  ┌────┴───┐  ┌────┴───┐              │

│    │ Node A │  │ Node B │  │ Node C │  │ Node D │              │

│    │  接收  │  │  识别  │  │ 处理   │  │  结束  │              │

│    └────────┘  └────────┘  └────────┘  └────────┘              │

│         │           │           │                              │

│         └───────────┴───────────┘                              │

│                     ↓                                         │

│              ┌────────────┐                                   │

│              │   Edge     │ ← 普通边 / 条件边                  │

│              └────────────┘                                   │

│                                                                 │

│   Checkpointer(持久化)← 保存/恢复状态                        │

│                                                                 │

└────────────────────────────────────────────────────────────────┘


七、LangGraph 核心概念详解

7.1 Graph vs StateGraph vs MessageGraph

说明 适用场景
Graph 通用图 任意工作流
StateGraph 带状态的图 最常用!
MessageGraph 消息图 对话场景
# Graph - 通用fromimport# StateGraph - 带状态(最常用)fromimportfromimportclassStateTypedDictlist# MessageGraph - 对话专用fromimport

7.2 State(状态)- ★★★★★

作用:整个工作流共享的数据

不用 State 的问题

无法在多个步骤之间传递数据:

# 简单链式调用defstep1return"order_id""12345"defstep2# 不知道 order_id!return"status""已发货"# 每一步是独立的,无法共享数据
用 State 的好处

所有节点共享同一个状态:

fromimport# 定义状态class客服状态TypedDictlist# 对话历史str# 订单号(跨步骤共享!)bool# 订单是否验证str# 当前步骤# 节点都可以读写这些数据def查询订单state"order_id"# 读取return"status""已发货"# 写入def验证订单state"order_id""12345"return"verified"# 更新状态
State 的多种定义方式
# 方式一:TypedDict(推荐)class客服状态TypedDictliststr# 方式二:Annotated(自动追加消息)fromimportfromimportclass对话状态TypedDictlist# 自动追加!

7.3 Node(节点)- ★★★★★

作用:工作流中的每一个步骤

不用 Node 的问题

无法精确控制每一步:

# 简单调用# 只能顺序执行,无法暂停、分支
用 Node 的好处

每个步骤独立,可精确控制:

fromimportclassStateTypedDictint# 定义多个节点def接收消息state"""节点1:接收用户消息"""return"step""received"def意图识别state"""节点2:识别用户意图""""messages"1if"退货"inreturn"step""退货"return"step""其他"def处理退货state"""节点3:处理退货"""return"messages""好的,请提供订单号"# 添加节点"receive""classify""handle_return"

7.4 Edge(边)- ★★★★★

作用:连接节点,决定执行顺序

不用 Edge 的问题

只能顺序执行:

# 简单链式# 只能是 A → B → C
用 Edge 的好处

灵活控制流程:

fromimport# 入口"receive"# 普通边:固定顺序"receive""classify""handle_return"# 条件边:根据状态选择分支def路由函数statereturn"step""classify""退货""handle_return""其他"

7.5 Conditional Edge(条件边)- ★★★★★

作用:根据状态动态选择下一步

不用 Conditional Edge 的问题

无法处理分支:

# 简单链:总是执行相同的路径# 用户问"退货" → 回答退货# 用户问"订单" → 还是回答退货(错误!)
用 Conditional Edge 的好处

根据情况走不同分支:

def路由函数state"""根据当前状态返回下一步""""messages"1if"退货"inor"退款"inreturn"退货流程"elif"订单"inor"快递"inreturn"订单流程"elsereturn"一般问题"# 条件边:根据意图分流"classify"# 从意图识别节点# 判断函数"退货流程""handle_return"# 退货 → 处理退货"订单流程""handle_order"# 订单 → 处理订单"一般问题""handle_general"# 其他 → 一般问题

7.6 Entry Point(入口)

作用:工作流从哪里开始

fromimport# 默认入口"receive"# 等价于"receive"

7.7 End(结束)

作用:工作流在哪里结束

fromimport# 结束"handle_return"# 多个结束点"success""failure"

7.8 Checkpointer(持久化)- ★★★★☆

作用:保存和恢复状态,支持断点续传

不用 Checkpointer 的问题

每次对话都是全新开始:

# 问题:无法记住之前的状态"我要退货"# 下次再调用,Agent 不记得上次的"退货"意图了
用 Checkpointer 的好处

记住状态,断点续传:

fromimport# 创建检查点# 编译时启用compile# 第一次对话"configurable""thread_id""customer_001""messages""role""user""content""我要退货"# 第二次对话(状态自动恢复!)"messages""role""user""content""订单12345"# 自动记得上次是"退货"流程!

八、LangGraph 智能客服实战

8.1 完整代码

fromimportfromimportfromimport# ==================== 1. 定义状态 ====================class客服状态TypedDict"""客服系统状态 - 所有节点共享"""list# 对话历史str# 订单号bool# 订单是否验证str# 当前步骤# ==================== 2. 定义节点 ====================defreceivestate"""节点1:接收消息"""return"step""received"defclassifystate"""节点2:意图识别""""messages"1if"退货"inor"退款"inreturn"step""退货流程"elif"订单"inor"快递"inreturn"step""订单流程"return"step""一般问题"defhandle_returnstate"""节点3:处理退货"""return"messages""messages""role""ai""content""好的,请问您的订单号是多少?"defhandle_orderstate"""节点4:处理订单"""return"messages""messages""role""ai""content""请问要查询的订单号是?"defhandle_generalstate"""节点5:一般问题"""return"messages""messages""role""ai""content""这个问题让我查一下...满99元免运费,7天无理由退货"defendstate"""节点6:结束对话"""return"messages""messages""role""ai""content""感谢咨询,再见!""step""completed"# ==================== 3. 构建图 ====================# 添加节点"receive""classify""handle_return""handle_order""handle_general""end"# 设置入口"receive"# 连接节点"receive""classify"# 条件边:根据意图分流defroutestatereturn"step""classify""退货流程""handle_return""订单流程""handle_order""一般问题""handle_general"# 普通边:处理完到结束"handle_return""end""handle_order""end""handle_general""end"# 结束"end"# ==================== 4. 编译(启用持久化)====================compile# ==================== 5. 运行 ====================if"__main__""configurable""thread_id""customer_001""messages""role""user""content""我要退货""order_id""""verified"False"step"""print"="50forin"messages"printf"{msg['role']}: {msg['content']}"

8.2 执行流程图

用户:我要退货

        │

        ▼

┌───────────────────┐

│   receive (接收)   │ ← 接收消息,step="received"

└────────┬──────────┘

         │

         ▼

┌───────────────────┐

│  classify (识别)   │ ← 意图识别,step="退货流程"

└────────┬──────────┘

         │

         ▼

    ┌────┴────┐

    │ 条件边   │

    │ route() │

    └────┬────┘

         │

    ┌────┴──────────┐

    │               │

    ▼               ▼

┌─────────┐   ┌────────────┐

│ handle  │   │ handle     │

│ return  │   │ general    │

│ (退货)  │   │ (其他)     │

└────┬────┘   └─────┬──────┘

     │              │

     └──────┬───────┘

            ▼

     ┌──────────┐

     │ end (结束)│

     └────┬─────┘

          │

          ▼

        END


第三部分:对比与总结

九、LangChain vs LangGraph

9.1 区别

对比项 LangChain LangGraph
定位 快速构建 AI 应用 复杂工作流编排
复杂度 简单,10行代码 较复杂
流程 线性、固定 可分支、可循环
状态 基本无状态 有状态
持久化 Memory Checkpointer

9.2 选型建议

用 LangChain:

  • 刚入门,想快速做出原型
  • 需求简单(问答、单一工具调用)
  • 只需要 RAG

用 LangGraph:

  • 需要复杂多轮对话
  • 流程有分支
  • 需要人工介入
  • 需要断点续传
  • 生产环境

9.3 关键结论

✅ LangChain 1.0+ 的 Agent 是基于 LangGraph 运行时构建的。

❌ 但 LangChain ≠ LangGraph:

  • LangChain 是一个完整的 LLM 应用开发框架
  • LangGraph 是其内部用于复杂工作流编排的底层引擎

🔗 两者关系:

  • LangChain 提供高层 API 和组件生态
  • LangGraph 提供底层执行能力

十、学习路径

第1步:LangChain 基础

  - Models + Prompts(调用 LLM)

  - Chains

第2步:LangChain 进阶

  - Tools + Agents

  - Memory

  - Indexes(RAG)

第3步:复杂需求 → LangGraph

  - StateGraph + State

  - Node + Edge

  - Conditional Edge

  - Checkpointer


总结

技术 比喻 一句话
LangChain 乐高积木 快速构建 AI 应用
LangGraph 交通系统 复杂流程编排

最后唠两句

为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选

很简单,这些岗位缺人且高薪

智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200% ,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

1773917233288)

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。

那0基础普通人如何学习大模型 ?

深耕科技一线十二载,亲历技术浪潮变迁。我见证那些率先拥抱AI的同行,如何建立起效率与薪资的代际优势。如今,我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理,分享于此,为你扫清学习困惑,共赴AI时代新程。

我整理出这套 AI 大模型突围资料包【允许白嫖】:

  • ✅从入门到精通的全套视频教程

  • ✅AI大模型学习路线图(0基础到项目实战仅需90天)

  • ✅大模型书籍与技术文档PDF

  • ✅各大厂大模型面试题目详解

  • ✅640套AI大模型报告合集

  • ✅大模型入门实战训练

这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

①从入门到精通的全套视频教程

包含提示词工程、RAG、Agent等技术点

在这里插入图片描述

② AI大模型学习路线图(0基础到项目实战仅需90天)

全过程AI大模型学习路线

在这里插入图片描述

③学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的

在这里插入图片描述

④各大厂大模型面试题目详解

在这里插入图片描述

⑤640套AI大模型报告合集

在这里插入图片描述

⑥大模型入门实战训练

在这里插入图片描述

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐