LangChain 简介
LangChain 是一个用于构建大语言模型(LLM)应用的 Python 框架。
LangChain 提供统一的接口来连接各种 AI 模型,并支持构建能够自动调用工具、检索知识、记住上下文的智能 Agent。

LangChain 是什么
简单来说,LangChain 解决了一个核心问题:让大语言模型能够与外部世界交互。
原生的 LLM 只能根据训练数据生成文本。但实际应用中,我们需要 AI 能够查询数据库、调用 API、搜索文档、发送邮件。
LangChain 提供了一套标准化的组件来串联这些能力。

| 组件 | 作用 | 核心功能 | 常见用途 |
|---|---|---|---|
| Models(模型) | 连接大语言模型 |
|
|
| Prompts(提示词模板) | 管理 Prompt 模板 |
|
|
| Document Loader(文档加载) | 读取外部文档数据 |
|
|
| Text Splitter(文本切分) | 拆分长文本 |
|
|
| Memory(记忆) | 实现上下文记忆 |
|
|
| Retriever(检索器) | 检索相关知识内容 |
|
|
| Tools(工具) | 调用外部工具与 API |
|
|
| Output Parser(输出解析器) | 解析模型输出结果 |
|
|
| Chains(链) | 组合多个组件形成工作流 |
|
|
从技术角度看,LangChain 是一个模块化的 LLM 应用开发框架,它包含三个层次:
| 层次 | 说明 | 包名 |
|---|---|---|
| 核心抽象层 | 定义模型、工具、消息等基础接口 | langchain-core |
| 用户接口层 | 提供 init_chat_model、create_agent 等高阶 API | langchain |
| 集成层 | 连接 OpenAI、Anthropic、Ollama 等第三方服务 | langchain-openai 等 |
为什么选择 LangChain
如果你只是调用一次模型 API,直接用 HTTP 请求就够了。但当你需要构建一个完整的 AI 应用时,LangChain 提供了以下优势:
| 能力 | 描述 | 适用场景 |
|---|---|---|
| 模型统一接口 | 一套代码切换 OpenAI / Anthropic / DeepSeek 等模型 | 多模型对比测试、成本优化 |
| Agent 架构 | 模型自动决定何时调用工具,形成思考-行动循环 | 自动化任务、智能客服 |
| 中间件系统 | 在模型调用前后插入自定义逻辑(重试、缓存、过滤) | 生产环境的可靠性保障 |
| 结构化输出 | 让模型按指定格式返回 JSON,方便程序解析 | 数据提取、表单填充 |
| 记忆与持久化 | 内置对话记忆和跨会话存储能力 | 多轮对话、用户偏好记忆 |
| 生态丰富 | 数百个第三方集成,覆盖主流模型和工具 | 快速接入各类服务 |
LangChain 能做什么
以下是 LangChain 最典型的应用场景:
智能聊天机器人
具备多轮对话记忆,能调用外部工具(查天气、查订单、发邮件)的聊天助手。
RAG 知识库问答
将私有文档(PDF、网页、数据库)向量化存储,让模型能够基于这些文档回答问题,附带引用来源。
Agent 自动化助手
模型自主规划任务步骤,按需调用不同的工具,完成复杂的多步操作,如"帮我整理上周的销售数据并生成报告"。
数据提取与分析
从非结构化文本中提取结构化信息(如从合同扫描件中提取关键字段),或让模型生成数据分析结论。
LangChain 与 LangGraph 的关系
很多初学者会困惑这两个库的区别。简单来说:
| 对比维度 | LangChain | LangGraph |
|---|---|---|
| 定位 | 高层 Agent 框架,开箱即用 | 底层工作流引擎,精细控制 |
| 上手难度 | 低,10 行代码创建 Agent | 中高,需理解图(Graph)概念 |
| 适用场景 | 标准 Agent 应用、快速原型 | 复杂多步骤工作流、多 Agent 协作 |
| 关系 | LangChain 的 create_agent() 底层构建在 LangGraph 之上 | |
本教程聚焦于 LangChain。如果你刚开始学习,从 LangChain 入手是正确的选择。当你需要更精细的流程控制时,再深入 LangGraph。
准备工作
在开始学习之前,你只需要具备以下基础:
- Python 基础语法(函数、类、类型注解)
- 能够使用 pip 安装 Python 包
- 了解基本的命令行操作
- 有一个大模型 API Key(OpenAI、Anthropic 等均可)
本教程的代码示例在 Python 3.10+ 环境下测试通过。
