LangChain 学习记录 01:为什么需要 LangChain?从 API 调用到 AI 应用框架
本文适合刚开始学习 LangChain,已经听过大模型 API,但还不清楚"为什么要多学一个框架"的同学。
关键词:LangChain、大模型应用、LLM、RAG、Agent、LangGraph、Deep Agents
摘要
很多同学第一次接触大模型开发时,都会有一个非常自然的问题:
text
我都能直接调 OpenAI、DeepSeek、通义千问的 API 了,为什么还要学 LangChain?
这个问题问得非常好。
因为 LangChain 不是为了替代模型 API,而是为了帮我们把"调用一次模型"升级成"构建一个完整的大模型应用"。
本文主要讲清楚:
- 直接调用模型 API 会遇到哪些现实问题
- LangChain 到底帮我们省了什么
- LangChain、LangGraph、Deep Agents 是什么关系
- LangChain 的核心模块有哪些
- 学习 LangChain 应该按什么路线走
一句话概括:
text
模型 API 解决"让模型回答一次",LangChain 解决"把模型能力组织成一个可维护的应用"。
文章目录
- [LangChain 学习记录 01:为什么需要 LangChain?从 API 调用到 AI 应用框架](#LangChain 学习记录 01:为什么需要 LangChain?从 API 调用到 AI 应用框架)
-
- 摘要
- [一、为什么直接调用 API 还不够](#一、为什么直接调用 API 还不够)
- [二、LangChain 到底是什么](#二、LangChain 到底是什么)
-
- [LangChain 的核心价值](#LangChain 的核心价值)
- [三、直接 API 与 LangChain 的代码对比](#三、直接 API 与 LangChain 的代码对比)
-
- [方式一:直接调用模型 API](#方式一:直接调用模型 API)
- [方式二:使用 LangChain](#方式二:使用 LangChain)
- 两种方式对比
- [四、LangChain 生态全景:LangChain、LangGraph、Deep Agents](#四、LangChain 生态全景:LangChain、LangGraph、Deep Agents)
- [五、LangChain 核心架构总览](#五、LangChain 核心架构总览)
-
- [1. 基础层:用什么说话](#1. 基础层:用什么说话)
- [2. 能力层:怎么做](#2. 能力层:怎么做)
- [3. 应用层:做什么](#3. 应用层:做什么)
- 六、用一个知识库问答机器人理解模块协作
- [七、适合用 LangChain 的项目场景](#七、适合用 LangChain 的项目场景)
- [八、什么时候不一定要用 LangChain](#八、什么时候不一定要用 LangChain)
- 九、学习路线建议
- 十、小结
- 参考资料
一、为什么直接调用 API 还不够
如果只是让模型回答一句话,直接调 API 就够了。
例如:
text
用户:你好,请介绍一下 Python。
模型:Python 是一种简单易学、应用广泛的编程语言。
这种场景不复杂。
但一旦进入真实项目,你很快会遇到一堆问题。
| 你想实现的功能 | 直接用 API 时要自己处理什么 |
|---|---|
| 多轮对话 | 自己保存历史消息、拼接上下文、控制 token 长度 |
| 私有知识库问答 | 自己做文档加载、切分、向量化、检索、拼 Prompt |
| 结构化输出 | 自己要求 JSON、解析 JSON、处理格式错误 |
| 工具调用 | 自己定义函数 schema、解析模型调用结果、处理异常 |
| 模型切换 | 每个厂商接口参数不同,切换时要改很多代码 |
| 流式输出 | 自己处理流式 token、前后端传输 |
| 复杂任务编排 | 自己写状态机、循环、重试、回退 |
| 调试追踪 | 自己记录每一步输入输出,排查成本高 |
这些事情单独看都不难。
真正麻烦的是:
text
它们经常会同时出现。
比如你要做一个"企业知识库问答助手",你就需要:
text
多轮对话 + RAG 检索 + 结构化输出 + 流式响应 + 错误重试 + 日志追踪
如果全部手写,很快就会从"调一个 API"变成"从零造一个 AI 应用框架"。
这就是 LangChain 出现的原因。
二、LangChain 到底是什么
LangChain 是一个用于构建大语言模型应用的开源框架。
它的核心目标不是让模型本身变聪明,而是帮开发者更方便地组织模型、提示词、工具、记忆、检索和工作流。
可以这样理解:
text
大模型 = 发动机
LangChain = 传动系统 + 控制系统 + 工具箱
你的业务应用 = 车
没有 LangChain,发动机也能转。
但如果你要做一辆能上路的车,就不能只有发动机,还需要方向盘、刹车、仪表盘、传动结构和安全系统。
LangChain 提供的就是这些工程化组件。
LangChain 的核心价值
| 核心价值 | 说明 |
|---|---|
| 统一模型接口 | 不同模型厂商可以用相似方式调用 |
| Prompt 工程化 | 用模板管理提示词,避免到处拼字符串 |
| 输出结构化 | 用 Parser 或结构化输出约束模型返回 |
| 链式组合 | 用 LCEL 把 Prompt、模型、解析器串起来 |
| RAG 支持 | 提供文档加载、切分、向量库、检索器等组件 |
| 工具调用 | 让模型调用外部函数或服务 |
| 对话记忆 | 管理多轮对话历史 |
| 调试追踪 | 可结合 LangSmith 观察调用过程 |
最重要的是这句:
text
LangChain 让我们把精力从"怎么调 API"转移到"怎么做产品"。
三、直接 API 与 LangChain 的代码对比
方式一:直接调用模型 API
以 OpenAI 风格 API 为例:
python
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "user", "content": "你好,请用一句话介绍 Python"}
],
)
print(response.choices[0].message.content)
这段代码没有问题。
但如果后续你要加:
- 历史对话
- 流式输出
- 结构化输出
- 模型切换
- RAG
- 工具调用
就要继续往上堆业务胶水代码。
方式二:使用 LangChain
python
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
response = llm.invoke("你好,请用一句话介绍 Python")
print(response.content)
看起来只是换了一种调用方式。
但它的意义在于:
text
这个 llm 对象是 LangChain 生态里的 Runnable。
后续可以直接接入:
python
chain = prompt | llm | parser
也可以使用:
python
llm.invoke(...)
llm.stream(...)
llm.batch(...)
这就不只是一次 API 调用,而是进入了 LangChain 的统一组件体系。
两种方式对比
| 对比项 | 直接 API | LangChain |
|---|---|---|
| 简单调用 | 直接、轻量 | 也很简单 |
| 多模型切换 | 需要适配不同 SDK | 统一接口更方便 |
| Prompt 管理 | 容易散落在代码里 | PromptTemplate 标准化 |
| 输出解析 | 需要自己写解析逻辑 | Output Parser / 结构化输出 |
| RAG | 自己搭全链路 | 有标准组件 |
| Agent | 自己写循环和工具调用 | 有预构建能力 |
| 调试追踪 | 自己打日志 | 可接 LangSmith |
我的理解:
text
小脚本可以直接 API;
一旦要做项目,就值得考虑 LangChain。
四、LangChain 生态全景:LangChain、LangGraph、Deep Agents
LangChain 现在不是一个孤立的小库,而是一个围绕 Agent 和 LLM 应用构建的生态。
可以先看图。

简单理解三者关系:
text
Deep Agents 建立在 LangChain 之上;
LangChain 建立在 LangGraph 能力之上;
LangGraph 提供更底层的图结构运行时。
三者对比
| 维度 | LangGraph | LangChain | Deep Agents |
|---|---|---|---|
| 定位 | Agent 运行时 / 图编排 | LLM 应用框架 | Agent 套件 |
| 核心思想 | 用图精确控制流程 | 用组件灵活搭建应用 | 开箱即用的 Agent 能力 |
| 适合场景 | 企业级复杂流程、状态机、人机协作 | Prompt、Chain、RAG、Tools、Agent | 快速做自主 Agent |
| 控制力 | 最强 | 中等 | 较弱 |
| 上手难度 | 较高 | 中等 | 较低 |
| 本系列重点 | 后续进阶 | 重点学习 | 了解即可 |
如何选择
如果你的需求是:
text
我想快速做一个可以自主完成任务的 Agent
可以关注 Deep Agents。
如果你的需求是:
text
我要自定义 Prompt、模型、RAG、工具链
优先学 LangChain。
如果你的需求是:
text
我要精确控制每一步流程,有审批、回滚、状态保存
再深入 LangGraph。
对初学者来说,建议路线是:
text
先学 LangChain,再根据项目复杂度决定是否深入 LangGraph。
五、LangChain 核心架构总览
LangChain 可以从三层理解。
1. 基础层:用什么说话
这一层负责和模型通信。
| 模块 | 作用 |
|---|---|
| Messages | 标准化消息格式,如 SystemMessage、HumanMessage、AIMessage |
| Models | 统一模型调用接口,包括 Chat Models、LLMs、Embeddings |
| Streaming | 支持实时流式输出 |
| Middleware | 在模型调用前后插入重试、缓存、超时等逻辑 |
这一层解决的是:
text
如何以统一方式和模型交互。
2. 能力层:怎么做
这一层提供模型之上的核心能力。
| 模块 | 作用 |
|---|---|
| Prompts | 提示词模板,支持变量插入和复用 |
| Output Parsers | 解析模型输出,转换为字符串、JSON、对象 |
| Structured Output | 用 schema 或 Pydantic 约束输出格式 |
| Tools | 让模型调用外部函数或 API |
| Memory | 管理对话历史和长期记忆 |
这一层解决的是:
text
如何把一次模型调用变成可控能力。
3. 应用层:做什么
这一层面向具体业务。
| 模块 | 作用 |
|---|---|
| Chains / LCEL | 把多个组件串成一条工作流 |
| Retrieval / RAG | 检索外部知识并增强回答 |
| Agents | 让模型自主规划步骤并调用工具 |
| LangGraph | 管理复杂状态和流程编排 |
这一层解决的是:
text
如何把多个能力组合成应用。
六、用一个知识库问答机器人理解模块协作
假设我们要做一个企业内部知识库问答机器人。
用户问:
text
我们公司的年假政策是什么?
LangChain 中可能涉及这些模块:
text
用户问题
↓
Prompt:组织问题和回答规则
↓
Retrieval:从公司文档中检索相关片段
↓
Model:结合问题和上下文生成回答
↓
Output Parser:把结果转为前端需要的格式
↓
Memory:保存本轮对话,支持继续追问
如果要让它更智能,还可以加入 Agent:
text
模型判断是否需要检索
↓
需要时调用检索工具
↓
必要时调用数据库或其他 API
↓
最后生成回答
这就是 LangChain 的核心思想:
text
把大模型能力拆成标准组件,再按业务流程组合起来。
七、适合用 LangChain 的项目场景
LangChain 特别适合这些项目:
| 场景 | 为什么适合 |
|---|---|
| 知识库问答 | RAG 组件丰富,容易组合检索和生成 |
| 文档分析 | 可结合加载器、切分器、模型和解析器 |
| 智能客服 | 需要多轮对话、记忆、工具调用 |
| AI 学习助手 | 可组合 Prompt、结构化输出、用户记录 |
| 自动化办公 | 可以让模型调用工具处理复杂流程 |
| 数据抽取 | Output Parser 和结构化输出很实用 |
| Agent 项目 | 内置工具调用和 Agent 架构能力 |
如果你准备做实训项目,我会优先推荐:
text
RAG 知识库问答
AI 学习助手
文档智能分析
多工具智能客服
这些方向既能体现 LangChain 能力,也容易写出简历亮点。
八、什么时候不一定要用 LangChain
LangChain 很有用,但不是所有场景都必须用。
如果你的需求只是:
text
写一个脚本,调用模型生成一句话
直接用模型 SDK 可能更简单。
如果你的需求是:
text
只调用一个模型,没有 Prompt 管理,没有多轮对话,没有结构化输出
也可以先不用框架。
我的判断标准:
text
只调用一次模型:直接 API。
需要组织多个组件:LangChain。
需要复杂状态编排:LangGraph。
技术选型不是越复杂越高级,而是要匹配问题。
别为了用框架而用框架。
不然就像为了吃一碗泡面专门修了个厨房,仪式感很足,效率有点感人。
九、学习路线建议
基于这份课程资料,我建议按下面路线学习:
text
入门:
LangChain 概述 → 环境准备 → Model I/O
核心:
Prompts → Output Parsers → Chains / LCEL
进阶:
Memory → Tools → RAG
高级:
Agents → LangGraph → 部署与调试
更具体一点:
| 阶段 | 学习内容 | 目标 |
|---|---|---|
| 第 1 阶段 | 概述、环境、模型调用 | 能跑通第一个程序 |
| 第 2 阶段 | Prompt、Parser、Chain | 能搭建基础 AI 工作流 |
| 第 3 阶段 | RAG、Tools、Memory | 能做真实项目功能 |
| 第 4 阶段 | Agents、LangGraph | 能处理复杂任务编排 |
先不要一上来就冲 Agent。
Agent 很酷,但如果 Prompt、Parser、Chain 都没掌握,直接学 Agent 容易变成:
text
它好像很智能,但我完全不知道哪里出了问题。
所以先打地基。
十、小结
这一篇主要回答了一个问题:
text
为什么需要 LangChain?
可以这样总结:
text
模型 API 让我们能调用大模型;
LangChain 让我们能构建大模型应用。
你需要记住几个关键词:
text
Models:统一模型调用
Prompts:管理提示词
Output Parsers:解析输出
Chains:组合流程
RAG:结合外部知识
Tools:调用外部能力
Memory:管理上下文
Agents:自主规划和执行
最重要的底层逻辑:
text
LangChain 的价值不是封装一个 API,而是把大模型应用开发中的常见模式抽象成可复用组件。
下一篇继续学习:LangChain 环境准备与第一个程序 。
也就是如何把开发环境搭起来,并真正跑通一次模型调用。
参考资料
- LangChain 官方文档:https://docs.langchain.com/oss/python/langchain
- LangChain API Reference:https://reference.langchain.com/python/langchain/
- LangChain GitHub:https://github.com/langchain-ai/langchain