01 - LangChain 简介:为什么需要它?
约 1420 字大约 5 分钟
LangChain智能体LLM
2026-03-08
第 01 课:LangChain 简介 - 为什么需要它?
课程目标
通过本节课,你将学到:
- ✅ 什么是 LangChain,它解决了什么问题
- ✅ LangChain 的核心概念和架构
- ✅ LangChain 的典型应用场景
- ✅ LangChain 与其他框架的对比
一、什么是 LangChain?
1.1 问题背景
在使用大语言模型(LLM)开发应用时,我们常常面临这些问题:
痛点 1:模型调用繁琐
# 不使用框架:每次都要写一堆重复代码
import requests
def call_openai(prompt):
headers = {"Authorization": f"Bearer {API_KEY}"}
data = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": prompt}]
}
response = requests.post(
"https://api.openai.com/v1/chat/completions",
headers=headers,
json=data
)
return response.json()["choices"][0]["message"]["content"]痛点 2:无法管理上下文
# 每次对话都是独立的,无法记住之前的内容
user: "你好"
AI: "你好!有什么可以帮你的?"
user: "我叫张三" # AI 已经不记得上一句话了
AI: "你好张三!" # 它是怎么知道我叫张三的?痛点 3:无法使用外部工具
user: "今天北京天气怎么样?"
AI: "抱歉,我无法获取实时天气信息..." # ❌ 无能为力痛点 4:复杂流程难以编排
# 需求:先查数据库 → 再调用 LLM → 最后发送邮件
# 手动编排流程非常复杂...1.2 LangChain 的解决方案
LangChain 是一个开源框架,专门用于构建基于 LLM 的应用程序。它通过以下方式解决上述问题:
| 痛点 | LangChain 解决方案 |
|---|---|
| 模型调用繁琐 | 统一的模型接口,一行代码调用 |
| 无法管理上下文 | 内置 Memory 组件,自动管理对话历史 |
| 无法使用外部工具 | Tools 机制,让 LLM 调用外部 API |
| 复杂流程难以编排 | Chains + LCEL,声明式流程编排 |
1.3 LangChain 的核心价值
# 使用 LangChain:简洁优雅
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
# 1. 初始化模型
llm = ChatOpenAI(model="gpt-3.5-turbo")
# 2. 添加记忆
memory = ConversationBufferMemory()
# 3. 创建对话链
conversation = ConversationChain(llm=llm, memory=memory)
# 4. 开始对话
response = conversation.predict(input="你好,我叫张三")
print(response) # 你好张三!很高兴认识你...
response = conversation.predict(input="我叫什么名字?")
print(response) # 你叫张三! # ✅ 记住了!二、LangChain 的核心概念
LangChain 的架构由六大核心组件构成:
2.1 六大核心组件
┌─────────────────────────────────────────┐
│ LangChain 架构 │
├─────────────────────────────────────────┤
│ │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Models│ │Prompts│ │Parsers│ │
│ └──────┘ └──────┘ └──────┘ │
│ │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Chains│ │Memory│ │Agents│ │
│ └──────┘ └──────┘ └──────┘ │
│ │
└─────────────────────────────────────────┘| 组件 | 作用 | 示例 |
|---|---|---|
| Models | 管理 LLM 调用 | OpenAI、Claude、GLM |
| Prompts | 管理提示词模板 | "请用{language}写一首诗" |
| Parsers | 解析 LLM 输出 | 将 JSON 字符串转为字典 |
| Chains | 编排多个步骤 | 先查天气 → 再生成建议 |
| Memory | 管理对话上下文 | 记住用户之前说过的话 |
| Agents | 自主决策和行动 | 根据问题选择合适的工具 |
2.2 数据流
graph LR
A[用户输入] --> B[Prompts<br/>提示词模板]
B --> C[Models<br/>LLM 调用]
C --> D[Parsers<br/>输出解析]
D --> E[结构化输出]
F[Memory<br/>对话历史] -.-> B
G[Agents<br/>自主决策] -.-> C
H[Chains<br/>流程编排] -.-> A三、LangChain 的应用场景
3.1 典型应用
| 应用类型 | 描述 | 难度 |
|---|---|---|
| 聊天机器人 | 智能客服、虚拟助手 | ⭐⭐ |
| 文档问答 | 与 PDF/Word 文档对话 | ⭐⭐⭐ |
| 知识库检索 | RAG(检索增强生成) | ⭐⭐⭐ |
| 自动化工作流 | 邮件处理、报告生成 | ⭐⭐⭐⭐ |
| 智能体应用 | AutoGPT、CrewAI | ⭐⭐⭐⭐⭐ |
3.2 实际案例
案例 1:智能客服机器人
- 输入:用户问题
- 处理:
- 从知识库检索相关文档
- LLM 生成回答
- 记录对话历史
- 输出:精准的客服回复
案例 2:代码助手
- 输入:自然语言需求
- 处理:
- 理解用户意图
- 生成代码
- 执行并测试
- 输出:可运行的代码
案例 3:文档分析
- 输入:PDF 合同
- 处理:
- 提取关键信息
- 生成摘要
- 风险点标注
- 输出:结构化分析报告
四、LangChain vs 其他框架
| 框架 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|
| LangChain | 生态完善、组件丰富、文档详细 | 学习曲线稍陡 | 通用 LLM 应用开发 |
| LlamaIndex | 专注数据索引和检索 | Agent 能力较弱 | RAG、文档问答 |
| AutoGPT | 完全自主的 Agent | 不可控、成本高 | 实验、探索性任务 |
| Haystack | NLP pipeline 强大 | 不够灵活 | 搜索引擎、问答系统 |
选择建议
- 新手入门:推荐 LangChain(本教程)
- RAG 专用:LangChain + LlamaIndex 组合
- 快速原型:LangChain + Streamlit
- 生产环境:LangChain + FastAPI
五、LangChain 生态系统
5.1 官方工具
| 工具 | 用途 |
|---|---|
| LangChain | Python/JS 核心框架 |
| LangSmith | 调试、测试、监控平台 |
| LangServe | 将 Chain 部署为 API |
| LangGraph | 构建 Stateful Agent |
5.2 社区生态
- 模型提供商:OpenAI、Anthropic、Google、百度、阿里等
- 向量数据库:Pinecone、Weaviate、Chroma、Milvus
- 工具集成:Wikipedia、Google Search、Python REPL、SQL Database
六、本课小结
核心要点
LangChain 解决什么问题?
- 简化 LLM 调用
- 管理对话上下文
- 让 LLM 使用工具
- 编排复杂流程
LangChain 的六大组件:
- Models、Prompts、Parsers
- Chains、Memory、Agents
典型应用场景:
- 聊天机器人、文档问答、知识库、自动化、智能体
下节预告
下一课,我们将进行 环境搭建,包括:
- Python 环境配置
- LangChain 安装
- 第一个 Hello World 程序
- 常见问题排查
🎯 课后练习
- 思考题:LangChain 的哪个组件最吸引你?为什么?
- 调研题:去 LangChain 官网 浏览文档,列出 3 个你感兴趣的功能。
- 分享题:你希望用 LangChain 构建什么应用?