LangChain概述与环境准备
目录
3.LangChain 三层生态:LangGraph / LangChain / Deep Agents
前言
随着大模型 API 普及,很多开发者直接调用 OpenAI、DeepSeek 等厂商接口开发 AI 应用,但落地过程中会大量重复编写对话管理、文档检索、工具调用、多步骤逻辑等胶水代码。LangChain 作为当前最主流的 LLM 应用开发开源框架,提供标准化组件、统一模型调用接口、完整 RAG/Agent 能力,大幅降低大模型工程化成本。
本文基于官方最新 v1.x 版本,结合 uv 现代化 Python 工具链,完整讲解 LangChain 核心概念、生态分层、环境搭建流程,并提供可直接运行的入门 Demo,适合零基础开发者快速上手。
一、为什么我们需要LangChain?
1.原生LLM API 开发的现实痛点
仅直接调用厂商API,各类业务需求都需要从零开发,重复造轮子:
| 想要实现功能 | 纯原生API需要手动开发 |
| 多轮对话、长期上下文记忆 | 手动维护消息列表、控制 Token 长度、处理会话状态 |
| 企业私有文档问答(RAG) | 自行实现文档加载、文本分割、向量存储、相似度检索 |
| 模型调用外部工具(计算机/数据库/联网) | 自定义函数 Schema、解析模型工具返回 JSON、异常捕获 |
| 复杂多步骤自主任务 | 手写循环、状态机、重试逻辑,自研 Agent 调度架构 |
| 强制模型输出标准JSON | 编写正则、自定义解析器,兼容模型输出不规范场景 |
| 切换底层大模型(GPT -> DeepSeek -> Claude) | 重构接口地址、参数、消息解析逻辑,几乎重写代码 |
单一功能开发难度不高,但多需求叠加后,80% 开发时间消耗在底层通用逻辑,而非业务本身。
2.原生API与LangChain极简代码对比
方式1:原生OpenAI API(冗余繁琐)
import openai
# 需自行处理消息、流式、工具、记忆等全部逻辑
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "你好"}]
)
print(response.choices[0].message.content)
方式 2:LangChain 统一接口(简洁通用)
from langchain_openai import ChatOpenAI
# 统一接口,支持流式、异步、批量,换模型仅修改一行配置
llm = ChatOpenAI(model="gpt-4")
response = llm.invoke("你好")
print(response.content)
简单问答差距不明显,一旦叠加记忆、RAG、工具调用,原生 API 代码量会指数级膨胀,LangChain 始终保持简洁统一的开发范式。
3.LangChain 核心价值总结
| 核心优势 | 详细说明 |
| 避免重复造轮子 | 对话管理、RAG全链路、工具调用、输出解析均提供开箱即用组件 |
| 模型无感切换 | 一套标准接口兼容 70 + 模型厂商,切换模型仅修改配置 |
| 聚焦业务开发 | 底层消息拼接、参数兼容、异常容错全部由框架封装 |
| 完善生态体系 | 100 + 内置工具、50 + 向量数据库原生集成 |
| 可视化调试排错 | 配套 LangSmith 平台,全链路追踪模型、工具、检索执行流程 |
一句话总结:LangChain 帮开发者从「对接 API 底层细节」转向「实现 AI 业务产品逻辑」。
二、LangChain 完整介绍
1.定义与发展背景
LangChain 是 2022 年 10 月由 Harrison Chase 开源的 LLM 应用开发框架,发布时间早于 ChatGPT(2022 年 11 月),提前布局大模型应用赛道,如今已是行业标准开发工具。
官方定位:构建大语言模型驱动应用最简单的方式,少量代码即可对接全球主流大模型,内置成熟 Agent、RAG 架构,快速落地 AI 程序。
官方资源地址:
2.LangChain 主流落地场景
框架针对前文所有开发痛点提供标准化解决方案,覆盖绝大多数企业 AI 需求:
| 应用场景 | 框架能力支持 | 典型落地产品 |
| Agent 智能代理 | 内置 ReAct、Tool Calling 架构,自主规划任务、调用工具 | 自动化办公助手、多步骤任务机器人 |
| RAG 检索增强生成 | DocumentLoader→文本分割→向量库→检索器完整链路 | 企业知识库问答、合同 / 文档解析工具 |
| 工具调用 | @tool 装饰器快速自定义工具,模型自动识别调用 | 天气查询、计算器、数据库查询、API访问 |
| 智能问答系统 | 检索 + 模型组合,精准回答私有文档内容 | 企业客服、内部知识问答平台 |
| 多智能体协作 | 多Agent分工配合,拆解复杂长周期任务 | 项目流程管理、多维度综合决策系统 |
3.LangChain 三层生态:LangGraph / LangChain / Deep Agents
LangChain并非独立库,整套生态分为三层,逐层依赖,按需选用:
1.LangGraph(运行时):底层,基于图结构精确管控工作流,支持状态持久、人工审核、流程回滚,控制力最强,适合企业级复杂编排;
2.LangChain(框架):中层,本课程核心,标准化组件自由组装,平衡灵活性与上手难度,通用RAG、Agent 开发首选;
3.Deep Agents(套件):上层,开箱即用封装最实践,内置规划、对话压缩能力,上手最简单,适合快速搭建简易自主智能体。
三者核心对比
| 维度 | LangGraph | LangChain | Deep Agents |
| 定位 | Agent底层运行时 | 通过LLM应用开发框架 | 一站式Agent开发套件 |
| 流程控制权 | 完全自定义节点流转 | 组建自由组合 | LLM自主决策流程 |
| 上手难度 | 高,需掌握图、状态管理 | 中等,十行代码即可运行 | 极低,开箱即用 |
| 适用场景 | 强管控业务、人工审批、分支流程 | RAG、自定义工具链、通用Agent | 快速搭建简易自主智能体 |
| Token消耗 | 可控 | 中等 | 偏高(内置规划压缩) |
选型指南
- 快速搭建简易智能体,不想关注底层架构 → Deep Agents
- 自定义 RAG、工具链、灵活组合业务流程(本文学习路线)→ LangChain
- 需要精确管控每一步流程、人工介入、流程回滚 → LangGraph
4.LangChain三层核心架构
整体分为基础层、能力层、应用层,下层为上层提供能力支撑,所有AI应用均由多层模块组合实现。
(1)基础层:模型通信底层地基
负责框架与大模型交互,统一消息、提示词、流式输出标准:
- Messages:标准化消息结构(系统消息、用户消息、AI返回、工具消息)
- Prompts:可复用提示词模版,支持动态变量填充
- Streaming:逐Token流式输出,实现打字机效果
- Middleware:v1.x新增,统一处理重试、缓存、超时拦截
(2)能力层:通用核心功能组件
独立可拆分模块,按需组合使用:
- Models:统一模型调用接口,兼容对话模型、嵌入模型,支持 invoke / batch / stream 三种调用方式
- Tools:自定义外部工具,赋予模型访问外部资源能力
- Memory:会话记忆管理,分为短期会话记忆管理、长期持久记忆、摘要压缩记忆
- Structured Output:基于 Pydantic 约束输出,强制返回标准 JSON 格式
(3)应用层:面向业务场景顶层封装
组合下层能力,直接解决完整业务需求:
- Chains:LCEL 管道语法串联多个组件,构建流水线任务
- Retrieval (RAG):完整检索增强生成链路,私有知识库核心
- Agents:自主推理调度工具,循环执行任务直至完成需求
5.模块协作实例:企业文档问答机器人
完整链路模块协作流程:
- 用户提问传入 Prompt 模板标准化处理
- Retrieval 检索向量数据库中相关文档片段
- 将问题 + 检索文档送入 Model 大模型推理
- Structured Output 约束模型返回规范 JSON 答案
- Memory 保存本轮问答,支持用户后续追问
- 若需要自主判断是否检索 / 调用工具,交由 Agent 动态调度全流程
三、标准化环境准备
1.工具选型说明:venv /conda/uv
Python 开发环境需要解决环境隔离与第三方包安装两大需求,主流工具对比:
- venv+pip:Python 原生工具,无需额外安装,但速度慢、依赖管理简陋;
- conda:全能工具,可管理 Python 版本与 C/C++ 底层库,体积大、依赖解析速度慢;
- uv:Rust 编写新一代工具,速度比 pip 快 10~100 倍,同时管理虚拟环境、Python 版本、依赖锁定,完美适配 LangChain 纯 Python 生态。
本教程统一使用 uv,放弃 conda;仅深度学习需要 CUDA 等底层库时,才推荐 conda。
2 LangChain 分包结构(按需安装,不冗余)
框架拆分多包,按功能分类,仅安装项目所需依赖:
| 分类 | 包名 | 作用 |
|---|---|---|
| 核心基础包 | langchain | 框架顶层核心,必装 |
| langchain-core | 底层抽象类、LCEL 语法,随 langchain 自动安装 | |
| 模型集成包 | langchain-openai | OpenAI/GPT 系列适配 |
| langchain-deepseek | DeepSeek 模型适配 | |
| langchain-ollama | 本地开源模型 Ollama 适配 | |
| langchain-anthropic | Claude 系列适配 | |
| langchain-community | 社区海量模型、工具、数据库集成 | |
| 扩展功能包 | langchain-chroma | Chroma 轻量向量库 |
| python-dotenv | 读取.env 密钥配置文件 |
3.uv完整安装流程
Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Mac / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
验证安装:
uv --version
4.创建项目并安装LangChain依赖
# 1. 创建项目文件夹并进入
mkdir langchain-course && cd langchain-course
# 2. uv初始化项目,自动生成虚拟环境
uv init
# 3. 锁定Python版本(推荐3.12,最低3.10)
uv python pin 3.12
# 4. 安装核心LangChain包
uv add langchain python-dotenv
# 5. 按需安装模型适配包(示例:DeepSeek + OpenAI)
uv add langchain-deepseek langchain-openai
# 6. 如需向量库,额外执行
uv add langchain-chroma
注意:使用uv add会自动写入 pyproject.toml 并生成 uv.lock 锁文件,保证环境可复现;uv pip install仅临时安装,不记录依赖。
5.项目文件说明
执行初始化后目录结构:
langchain-course/
├── pyproject.toml # 项目配置、依赖清单
├── uv.lock # 精确依赖锁文件,团队同步环境使用
├── .venv/ # uv自动生成的虚拟环境
└── main.py # 代码入口
- pyproject.toml:手动管理,记录项目需要哪些依赖,提交 Git;
- uv.lock:uv 自动生成,锁定每个包精确版本,同事执行uv sync一键还原完全一致环境;
- .venv:虚拟环境文件夹,加入.gitignore 禁止提交。
6.主流大模型平台选型指南
LangChain 模型无关特性,切换模型仅修改配置,提前准备对应 API Key:
1、海外官方平台(需科学上网 + 境外支付)
OpenAI、Anthropic、Google Gemini,延迟低、稳定性强;
2、国内中转平台(国内直连,支付宝付费)
CloseAI,兼容 OpenAI 接口,无需改代码,适合国内学习;
3、国产大模型(国内直连,免费额度充足)
DeepSeek、阿里云百炼通义千问、智谱 GLM、硅基流动开源模型推理。
7 .env 环境变量配置(禁止硬编码密钥)
1.项目根目录新建.env文件
# OpenAI代理配置
OPENAI_API_KEY=sk-xxx
OPENAI_BASE_URL=https://api.closeai-asia.com/v1
# DeepSeek国产模型配置
DEEPSEEK_API_KEY=sk-xxx
# LangSmith调试(可选)
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=ls-xxx
2.代码读取环境变量
from dotenv import load_dotenv
import os
# 加载.env配置
load_dotenv()
api_key = os.getenv("DEEPSEEK_API_KEY")
3.安全规范:将.env写入.gitignore,避免密钥泄露。
8 验证 LangChain 安装成功
uv run python -c "import langchain; print(langchain.__version__)"
正常输出版本号即代表环境搭建完成。
四、第一个 LangChain 运行 Demo
新建 main.py,实现基础模型调用,验证整套环境可用性:
import os
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
# 加载本地密钥配置
load_dotenv()
# 初始化大模型
llm = ChatDeepSeek(
api_key=os.getenv("DEEPSEEK_API_KEY"),
model="deepseek-chat",
temperature=0.1
)
# 执行调用
res = llm.invoke("用简单几句话介绍LangChain的作用")
print("模型返回结果:")
print(res.content)
运行代码:
uv run python main.py
成功输出模型回答即代表整套环境、依赖、密钥配置全部正常。
五、总结
- LangChain 解决原生 LLM API 重复开发痛点,提供标准化组件,统一多模型调用接口;
- 生态分为 LangGraph、LangChain、Deep Agents 三层,根据项目复杂度灵活选择;
- 采用 uv 现代化工具链搭建环境,依赖可锁定、安装速度远超传统 pip/conda;
- 项目规范使用.env 管理 API 密钥,搭配 LangSmith 实现全链路可视化调试
更多推荐




所有评论(0)