第一章、LangChain概述与环境准备(上)

1、为什么需要 LangChain

1.1 开发者面临的现实痛点

在大语言模型(LLM)如 ChatGPT、Claude、DeepSeek 等快速发展的今天,开发者不仅希望能"使用"这些模型,还希望能将它们灵活集成到自己的应用中。但真正动手开发时,会发现事情远没有那么简单:

你想实现的功能 直接用API你要做的事
保持上下文、记忆历史对话 自己管理对话状态、拼接消息列表、控制token上限
让模型访问私有数据(RAG) 自己搭建向量数据库、写检索逻辑、处理文档切分
让模型调用计算器、查天气等工具 自己定义函数schema、解析模型返回的JSON、处理异常
复杂任务分步执行、自主规划 自己写循环、状态机、重试逻辑......从零搭建Agent架构
输出符合特定格式的JSON数据 自己写正则或解析器、处理模型输出不规范的情况
从OpenAI换成Claude或DeepSeek 改接口、改参数、改解析逻辑......几乎重写一遍

每一项单独做都不算太难,但当它们组合在一起时,你会发现自己80%的时间都花在了重复造轮子上,而不是业务逻辑本身。

1.2 有了API还不够吗?

不使用LangChain,确实可以直接调用模型API完成开发。下面用一个最简单的例子看看区别:

1.2.1 方式一:直接调用OpenAI API
import openai
# 需要自己管理对话历史、解析输出、处理工具调用......
response = openai.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
1.2.2 方式二:使用LangChain
from langchain_openai import ChatOpenAI
# 统一接口,支持流式、批处理、异步,换模型只改一行
llm = ChatOpenAI(model="gpt-4")
response = llm.invoke("你好")
print(response.content)

这只是最简单的调用,差距还不明显。但一旦你需要加上记忆、工具调用、RAG、结构化输出,直接用API的代码量会呈指数增长,而LangChain始终保持简洁统一的写法。

1.3 LangChain到底帮你省了什么

核心价值 说明
不用重复造轮子 对话管理、工具调用、RAG流程......都是现成的标准化组件
模型随便换 统一接口,OpenAI → Anthropic → DeepSeek → 本地模型,改一行配置搞定
专注业务逻辑 底层的消息拼接、参数解析、异常处理,框架帮你做了
生态极其丰富 70+ 模型提供商、100+ 工具集成、50+ 向量数据库集成
出了Bug好查 LangSmith 提供可视化调试,每一步调用、每一次工具执行都能追踪

一句话总结:LangChain 让你把精力从"怎么调API"转移到"怎么做产品"上。

2、什么是 LangChain

2.1 定义与背景

带着上面的痛点,我们来认识解决方案——

LangChain 是2022年10月由哈佛大学的 Harrison Chase(哈里森·蔡斯)发起研发的开源框架,用于开发由大语言模型(LLMs)驱动的应用程序。

官方定义:LangChain 是构建由大语言模型驱动的应用程序的最简单方式。只需不到10行代码,即可连接OpenAI、Anthropic、Google等多种模型。LangChain提供了预构建的Agent架构和模型集成,帮助快速将LLM无缝集成到Agent和应用中。

历史背景:LangChain 的发布(2022年10月)比ChatGPT问世(2022年11月)还要早一个月,从这个启动日期也可以看出创始人的眼光,占了先机的它迅速获得广泛关注和支持!目前LangChain已成为大模型应用开发领域最流行的框架之一。

2.2 LangChain 能做什么

回顾第1节中的那些痛点,LangChain 对每一项都提供了开箱即用的解决方案:

应用场景 LangChain 怎么帮你 典型应用
Agent(智能代理) 预构建的Agent架构,自主规划步骤并调用工具 虚拟助手、自动化工作流
RAG(检索增强生成) 内置 DocumentLoader → TextSplitter →VectorStore → Retriever 全链路 企业知识库问答、文档分析
工具调用 @tool 装饰器一行定义,模型自动识别和调用 计算器、天气查询、数据库操作
问答系统(QA) 结合检索和模型,构建基于知识库的智能问答 客服机器人、内部知识库
多Agent系统 多个Agent协作,分工完成复杂任务 项目管理、复杂决策支持

2.3 LangChain 生态全景:LangChain vs LangGraph vs DeepAgents

LangChain 并不是一个孤立的库,它背后是一个三层架构的完整生态。这三层并非互相竞争,而是从底层到高层、层层构建的关系。官方分别称之为:Agent 运行时(Runtime)、Agent 框架(Framework)、Agent 套件(Harness)。

一句话理解层级关系

Deep Agents(套件) — 建立在 —► LangChain(框架) — 建立在 —► LangGraph(运行时)
自动驾驶汽车 汽车 发动机
"给目的地就出发" "自己组装零件开车" "自己造引擎、画电路"
2.3.1 三者详细对比
维度 LangGraph(运行时) LangChain(框架) Deep Agents(套件)
官方定位 Agent 运行时 Agent 框架 Agent 套件(Harness)
核心理念 用"图"精确控制每一步流程 提供标准化抽象层,自由组装组件 开箱即用,内置最佳实践
适用场景 需要确定性流程+AI决策的企业级编排 自定义Agent、RAG、工具链等通用开发 复杂、长时间运行的自主Agent任务
控制力 ★★★★★最强,每个节点/边都你说了算 ★★★中等,可自定义但有抽象约束 ★★较弱,信任LLM自主决策
上手难度 ●较高,需理解图结构、状态管理 ●中等,10行代码即可上手 ●最低,几行代码跑起来
内置能力 状态持久化、检查点、人机协作、流式传输 70+模型提供商、标准化接口、提示词模板 规划工具(Todo)、虚拟文件系统、子Agent生成、自动对话压缩
工作流定义 开发者预先定义(确定性) 开发者通过链和工具组合定义 LLM在运行时自主决定(自主性)
Token消耗 最可控 中等 较高(规划、压缩等内置功能会额外消耗)
2.3.2 如何选择?

你的需求是什么?
|
|— “我想快速搞一个能干活的智能体,不想操心架构”
| → \rightarrow 用DeepAgents(几行代码,开箱即用)
|
|— “我需要自定义提示词、工具链、RAG流程,灵活组装”
| → \rightarrow 用LangChain(核心框架,灵活 + + + 生态丰富)←本课程重点
|
|— “我要精确控制每一步、需要审批节点/回滚/人工审核” → \rightarrow 用LangGraph(企业级编排,控制力最强)

2.3.3 代码风格对比

LangGraph — 手动定义图结构(控制力最强):

from langgraph.graph import StateGraph
graph = StateGraph(State)
graph.add_node("research", research_node)
graph.add_node("write", write_node)
graph.add_edge("research", "write") # 每一步流转都你说了算
app = graph.compile()

LangChain — 使用框架抽象(灵活 + 标准化):

from langchain_openai import ChatOpenAI
from langchain.agents import create_agent

llm = ChatOpenAI(model="gpt-4")
agent = create_agent(llm, tools=[search, calculator])
agent.invoke({"messages": [{"role": "user", "content": "..."}]}) 

Deep Agents — 开箱即用(最省心):

from deepagents import create_deep_agent
agent = create_deep_agent(
    model="openai:gpt-4",
    tools=[search],
    system_prompt="You are a research assistant"
)
agent.invoke({"messages": [{"role": "user", "content": "..."}]}) 

重要提示:三者层层构建——Deep Agents 建立在 LangChain 之上,LangChain 又建立在LangGraph 之上。无需了解 LangGraph 即可使用 LangChain 的基础功能,随着项目复杂度增长,可以随时向下钻一层获得更多控制权。

2.4 相关资源

GitHub地址:https://github.com/langchain-ai/langchain

官网地址:https://www.langchain.com/

官方文档:https://docs.langchain.com/

API 文档:https://reference.langchain.com/python/langchain/

3、LangChain 核心架构总览

前两节我们知道了"为什么需要 LangChain"以及"它是什么"。在动手写代码之前,先花两分钟建立一个全局视角——LangChain 内部到底有哪些模块、它们之间是什么关系。

3.1 架构分层图

image

3.2 三层模块速览

3.2.1 基础层 — “用什么说话”

这一层定义了 LangChain 与模型之间的通信协议,是所有上层功能的地基。

模块 一句话说明 后续课件
Messages 标准化消息格式(SystemMessage、 HumanMessage、AIMessage、ToolMessage) ModelI/O
Prompts 提示词模板,支持变量插入和复用 Prompts
Streaming 实时流式输出,逐token返回结果 ModelI/O
Middleware v1.x 新增,在模型调用前后插入重试、缓存、超时等逻辑 高级篇
3.2.2 能力层 — “怎么做”

这一层提供了模型之上的核心能力组件,每个组件独立可用,也可自由组合。

模块 一句话说明 后续课件
Models 统一的模型调用接口,支持 Chat Models、LLMs、Embeddings,所有模型都用 invoke/batch/stream Model I/O
Tools 用 @tool 装饰器定义函数,让模型具备调用外部API的能力 Tools
Memory 管理对话历史——短期记忆(当前会话)、长期记忆(跨会话)、摘要记忆(压缩token) Memory
Structured Output 用 Pydantic 模型约束输出格式,确保返回标准JSON Output Parsers
3.2.3 应用层 — “做什么”

这一层是面向业务场景的顶层模块,组合下面两层的能力来解决实际问题。

模块 一句话说明 后续课件
Chains 用管道符 prompt | 11m | parser 把多个组件串成一条流水线 Chains (LCEL)
Retrieval (RAG) DocumentLoader → TextSplitter → VectorStore → Retriever,检索增强生成全链路 RAG
Agents 自主规划执行步骤,循环调用工具直到完成任务 (Tool Calling / ReAct) Agents

3.3 模块间的协作关系

用一个实际场景来理解这些模块如何配合——“基于公司内部文档的智能问答机器人”:

用户提问:“我们公司的年假政策是什么?” ∣ \mid ∇ \nabla Prompts ← \leftarrow 将用户问题嵌入提示词模板 ∣ \mid ∇ \nabla

Retrieval ← 从向量数据库检索相关文档片段
|
▼
Models ← 将问题 + 检索结果发送给LLM
|
▼
Structured ← 要求模型按指定JSON格式返回
Output
|
▼
Memory ← 将本轮问答存入记忆,支持追问

当你需要模型在回答过程中自主决定是否检索、何时调用工具时,就把上面这条链交给 Agent 来编排——Agent 会根据模型的推理结果动态决定下一步。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐