文章目录
- 前言
- 一、先搞懂:为什么我们需要 LangChain?
- 代码量对比:直接调用 API vs 用 LangChain
- LangChain 的核心价值总结
- 二、LangChain 是什么?到底能做什么?
- 1. 基础定位
- 2. 它能帮你实现哪些核心场景?
- 3. LangChain 全家桶:三个层级怎么选?
- 三、LangChain 核心架构:三层结构一目了然
- 第一层:基础层 —— 和 AI 对话的通用规则
- 第二层:能力层 —— 给 AI 扩展各种技能
- 第三层:应用层 —— 组合技能解决实际业务问题
- 举个完整例子:公司内部问答机器人的工作流程
- 四、手把手搭开发环境:跟着做零出错
- 1. 包管理工具选哪个?
- 2. 第一步:安装 uv
- 3. 第二步:创建项目并安装 LangChain
- 4. 认识项目里的关键文件
- 5. 第三步:准备大模型 API
- 6. 第四步:配置环境变量(保护你的 API 密钥)
- 7. 验证环境是否搭建成功
- 五、写出你的第一个 LangChain 程序
前言
刚接触大模型开发都会有一个疑问:我直接调用 OpenAI、DeepSeek 的 API 就能写对话了,为什么还要多学一个 LangChain 框架?是不是多此一举?
如果你只想实现一句“你好”的简单对话,那确实不用。但只要你想做稍微复杂一点的功能——比如能记住上下文的智能客服、能读取内部文档的问答机器人、能自动调用工具处理数据的办公助手——纯手写 API 的代码量会指数级上涨,你 80% 的时间都在重复写底层拼接、异常处理的“轮子代码”,根本没空打磨真正的业务功能。
这篇指南就用大白话把 LangChain 讲透,从核心概念、架构逻辑到环境搭建,再到写出第一个可运行的完整程序,全程跟着做就能顺利上手。
一、先搞懂:为什么我们需要 LangChain?
我们先看一个真实的开发场景:如果你想做一个「能记住聊天记录、还能查询公司内部文档的 AI 客服」,直接调用大模型 API,你需要自己手动实现所有底层逻辑:
- 自己维护每一轮的对话历史,每次提问都手动把历史拼接到消息里,还要实时控制长度,避免超出模型的 token 上限
- 自己搭建向量数据库,从零写文档拆分、文本向量化、相似度检索的逻辑,还要兼容 Word、PDF、Markdown 等各种文件格式
- 自己实现工具调用的解析规则,手写 JSON 解析逻辑,处理工具调用失败、参数错误等各种异常
- 如果后续想从 GPT 换成 DeepSeek 或者其他国产模型,接口格式、参数定义、解析逻辑几乎要全部重写
这些工作单独拿出来都不难,但凑到一起会消耗你绝大多数的开发精力。而 LangChain 就是把这些通用的底层工作全部封装成了现成的组件,让你像搭积木一样组合功能,把精力集中在业务逻辑本身。
代码量对比:直接调用 API vs 用 LangChain
我们用最简单的“调用 AI 回复一句话”来直观感受一下差异:
直接调用 OpenAI 原生 API:需要自己处理消息格式、接口参数
importopenai response=openai.chat.completions.create(model="gpt-4",messages=[{"role":"user","content":"你好"}])print(response.choices[0].message.content)用 LangChain 调用:统一的标准写法,换模型只需要改一行配置
fromlangchain_openaiimportChatOpenAI llm=ChatOpenAI(model="gpt-4")response=llm.invoke("你好")print(response.content)功能越简单,两者差距越小;但一旦加上对话记忆、工具调用、知识库检索,原生 API 的代码量会快速膨胀,而 LangChain 始终能保持简洁、统一的编码风格。
LangChain 的核心价值总结
- 不用重复造轮子:对话管理、工具调用、知识库检索、输出解析等通用能力全是现成组件
- 模型无缝切换:GPT、Claude、DeepSeek、本地开源模型,改一行配置就能完成切换,不用重写业务代码
- 专注业务逻辑:消息拼接、参数解析、异常重试、长度控制这些底层细节,框架全部自动处理
- 生态极其丰富:官方支持 70+ 大模型、100+ 第三方工具、50+ 向量数据库,绝大多数场景都有现成集成
- 调试运维方便:配套 LangSmith 调试工具,可以可视化追踪每一步 AI 调用、工具执行的细节,快速定位问题
二、LangChain 是什么?到底能做什么?
1. 基础定位
LangChain 是 2022 年 10 月由 Harrison Chase 发起的开源框架,专门用于开发「大模型驱动的应用程序」。
简单来说,它就是一套大模型应用开发的「标准化积木套装」——把开发 AI 应用需要的所有通用零件都做好了,你只需要根据自己的需求选择组件、拼接逻辑,就能快速做出完整的 AI 产品。
冷知识:LangChain 的发布时间比 ChatGPT 还要早一个月,目前是全球最主流的大模型应用开发框架之一。
2. 它能帮你实现哪些核心场景?
| 功能场景 | 大白话解释 | 典型应用 |
|---|---|---|
| Agent 智能代理 | 给 AI 配备各种工具,让它自己规划执行步骤、调用工具完成任务 | 自动办公助手、智能运维客服 |
| RAG 检索增强生成 | 让 AI 读取你的私人文档/企业知识库,基于资料内容回答问题 | 企业内部问答、文档分析机器人 |
| 工具调用 | 给 AI 扩展外部能力,比如计算器、天气查询、数据库读写、代码执行 | 多功能 AI 助手、自动化工作流 |
| 多 Agent 系统 | 多个 AI 角色分工协作,各自负责一部分工作,共同完成复杂任务 | 复杂项目辅助、多角色决策模拟 |
3. LangChain 全家桶:三个层级怎么选?
LangChain 不是一个单一的工具,而是一整套生态产品,从底层到高层分为三个层级,层层递进、互为补充,并不是竞争关系。我们用「开奶茶店」打个比方,帮你快速理解:
| 工具 | 产品定位 | 奶茶店类比 | 适合人群 |
|---|---|---|---|
| LangGraph | Agent 运行时,定制控制力最强 | 从门店装修、操作流程、饮品配方全自己设计,每一步都精准可控 | 需要定制复杂工作流、人工审核节点的企业级项目 |
| LangChain | 核心 Agent 框架,灵活性与易用性均衡 | 有现成的设备、原料、标准操作流程,你自己搭配产品、调整口味 | 绝大多数开发者,做自定义 AI 应用、RAG、工具链 |
| Deep Agents | 高层 Agent 套件,开箱即用 | 现成的加盟连锁店,拿来就能营业,不用操心底层细节 | 想快速做出可用的 AI 产品,不想深入研究架构 |
新手入门建议:优先从 LangChain 核心框架开始学(也是本篇教程的重点),等业务需求变复杂了再深入 LangGraph;如果只是快速做 Demo 验证想法,可以直接尝试 Deep Agents。
三、LangChain 核心架构:三层结构一目了然
LangChain 的所有模块按照「从底层基础到业务应用」分成了三层,理解了这个整体结构,后面学单个组件就不会混乱。
第一层:基础层 —— 和 AI 对话的通用规则
这一层是所有功能的地基,定义了和大模型交互的基础标准。
- Messages:标准化的消息格式,系统提示、用户提问、AI 回复、工具返回结果都有统一的格式规范
- Prompts:提示词模板,支持重复使用,还能动态插入变量,不用每次都写完整的提示词
- Streaming:流式输出能力,像 ChatGPT 官网一样逐字返回结果,提升用户体验
- Middleware:中间件机制,可以在调用 AI 前后自动加重试、缓存、超时控制、日志记录等逻辑
第二层:能力层 —— 给 AI 扩展各种技能
这一层提供了大量独立的功能组件,可以单独使用,也可以自由组合。
- Models:统一的模型调用接口,不管是什么品牌的大模型,都用
invoke(单次调用)、batch(批量调用)、stream(流式调用)这几个标准方法 - Tools:工具调用组件,用一个装饰器就能把你的函数变成 AI 可以调用的工具
- Memory:对话记忆组件,分短期记忆(当前会话)、长期记忆(跨会话)、摘要记忆(压缩历史节省 token)等多种类型
- Structured Output:结构化输出,强制 AI 按照你指定的 JSON 格式返回结果,不会出现格式混乱的情况
第三层:应用层 —— 组合技能解决实际业务问题
这一层面向具体业务场景,把下层的能力组件组合起来,形成完整的解决方案。
- Chains:链式调用,用管道符把「提示词模板→大模型→输出解析」串成一条流水线,是 LangChain 的核心语法(LCEL)
- Retrieval(RAG):完整的知识库检索流程,从加载文档、拆分文本、存入向量库到相似度检索全链路支持
- Agents:智能代理,让 AI 自主规划执行步骤,循环调用工具,直到完成任务目标
举个完整例子:公司内部问答机器人的工作流程
- 用户提问:「公司的年假政策是什么?」
- Prompts 组件把用户问题套进预设的提示词模板
- Retrieval 组件从向量数据库中检索出最相关的文档片段
- Models 组件把「用户问题 + 检索到的文档片段」一起发给大模型生成回答
- Structured Output 组件确保回答按照指定的格式返回
- Memory 组件把本轮问答存入对话记忆,后续追问可以关联上下文
四、手把手搭开发环境:跟着做零出错
1. 包管理工具选哪个?
开发 Python 项目,核心要解决两个问题:环境隔离(不同项目用不同版本的库,互不干扰)和第三方库安装。
常见的工具有三种,我们直接说结论:
venv + pip:Python 自带的基础组合,能用但功能少、安装速度慢conda:全能型工具,可以管理 Python 版本、安装非 Python 库(比如 CUDA),但体积大、速度慢uv:新一代工具,用 Rust 编写,安装速度比 pip 快 10~100 倍,同时支持 Python 版本管理、虚拟环境、依赖安装,LangChain 全生态官方推荐
本篇教程统一使用 uv:LangChain 的所有包都发布在 PyPI 上,uv 速度快、依赖管理精准,可以完全替代 pip + venv 的组合。
2. 第一步:安装 uv
根据你的操作系统选择对应的命令:
Windows(PowerShell 中执行):
powershell-ExecutionPolicy ByPass-c"irm https://astral.sh/uv/install.ps1 | iex"macOS / Linux(终端中执行):
curl-LsSfhttps://astral.sh/uv/install.sh|sh安装完成后,在终端输入以下命令,能输出版本号就说明安装成功:
uv--version3. 第二步:创建项目并安装 LangChain
按顺序执行以下命令,每一步的作用都标注清楚了:
# 1. 创建项目文件夹并进入mkdirlangchain-course&&cdlangchain-course# 2. 初始化项目,自动创建虚拟环境和项目配置文件uv init# 3. 锁定 Python 版本(推荐 3.12,稳定兼容绝大多数包)uv python pin3.12# 4. 安装 LangChain 核心包(必装)uvaddlangchain# 5. 安装你要用的大模型集成包(选一个你有 API 的安装即可)uvaddlangchain-openai# OpenAI/GPT 系列,也兼容所有 OpenAI 格式的中转/国产平台uvaddlangchain-deepseek# DeepSeek 官方集成uvaddlangchain-ollama# 本地运行大模型时使用uvaddlangchain-anthropic# Claude 系列模型# 6. 安装环境变量工具,保护 API 密钥uvaddpython-dotenv小说明:
uv add会自动把依赖记录到项目配置文件里,还会自动生成锁文件,方便团队协作时还原完全一致的开发环境。
4. 认识项目里的关键文件
执行完上面的命令后,你的项目文件夹里会多出这几个核心文件/文件夹:
pyproject.toml:项目的「依赖清单」,记录了项目需要的所有包和版本要求,uv add会自动更新它uv.lock:uv 自动生成的「精确版本记录」,记录了所有包(包括间接依赖)的精确版本,保证换电脑、换环境也能得到完全一致的结果.venv文件夹:虚拟环境目录,所有安装的包都存在这里,不用手动修改里面的内容
5. 第三步:准备大模型 API
LangChain 本身不提供大模型,你需要准备一个可用的大模型 API 密钥。常见的选择有三类:
| 类型 | 代表平台 | 适合人群 |
|---|---|---|
| 海外官方 | OpenAI、Anthropic | 有海外访问条件 + 海外信用卡,追求最稳定的效果 |
| 国内中转 | CloseAI、OpenRouter | 国内网络可用、支持支付宝,接口和官方完全兼容 |
| 国产模型 | DeepSeek、智谱 AI、硅基流动 | 性价比高、国内直连,很多都有免费额度,适合新手学习 |
新手推荐:DeepSeek 价格便宜、中文能力强,非常适合入门学习;如果想用 GPT 系列,可以选择合规的国内中转平台。
6. 第四步:配置环境变量(保护你的 API 密钥)
绝对不要把 API 密钥直接写在代码里!一旦代码上传到公开仓库,密钥很容易泄露,造成财产损失。我们用.env文件来存储敏感信息。
- 在项目根目录新建一个名为
.env的文件 - 填入你的配置(以 OpenAI 兼容格式为例):
# 你的 API 密钥 OPENAI_API_KEY=sk-你的密钥 # 模型接口地址,官方填官方地址,中转/国产填对应平台的地址 OPENAI_BASE_URL=https://api.openai.com/v1- 代码中通过工具读取环境变量:
fromdotenvimportload_dotenvimportos# 加载 .env 文件里的所有变量到系统环境中load_dotenv()# 读取变量api_key=os.getenv("OPENAI_API_KEY")base_url=os.getenv("OPENAI_BASE_URL")重要提醒:一定要把
.env加到.gitignore文件中,绝对不要上传到代码仓库!
7. 验证环境是否搭建成功
在终端执行这条命令,能正常输出版本号就说明环境搭建完成了:
uv run python-c"import langchain; print(langchain.__version__)"五、写出你的第一个 LangChain 程序
环境搭好之后,我们来写第一个可运行的 LangChain 应用。在项目根目录新建一个main.py文件,粘贴下面的代码:
importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI# 1. 加载 .env 中的环境变量load_dotenv()# 2. 创建大模型实例llm=ChatOpenAI(model="gpt-4",# 替换成你实际使用的模型名称,比如 deepseek-chatapi_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_BASE_URL"))# 3. 调用大模型response=llm.invoke("你好,请用一句话介绍一下 Python 语言")# 4. 打印回答结果print("AI 回答:",response.content)在终端执行运行命令:
uv run python main.py运行成功的话,终端就会输出 AI 的回复,恭喜你完成了第一个 LangChain 程序!