LangChain 安装与部署
安装与部署
LangChain 从 0.1 版本起拆成多个独立包,装什么取什么,避免一次拉进几十个用不到的依赖。最常用的一组是:
pip install langchain langchain-openai langchain-community
三个包的分工:langchain 提供高层链与智能体的组装能力;langchain-core 是被自动带上的基础抽象层,Runnable、Prompt、OutputParser、消息类型都在这里,一般不需要单独安装;langchain-openai 是 OpenAI 及兼容接口的模型实现;langchain-community 收纳第三方集成,各类向量库、文档加载器、社区模型都在里面。做状态图编排还要单独装一个包:
pip install langgraph
向量库与文本切分器通常也是独立包,按需安装,例如 pip install langchain-text-splitters faiss-cpu chromadb。切分器在新版本里已经从 langchain 移到了 langchain-text-splitters,如果导入 RecursiveCharacterTextSplitter 报 ModuleNotFoundError,先确认这个包装了没有。
虚拟环境:uv 与 conda
LangChain 的依赖面很宽,直接装进系统 Python 很容易和别的项目打架,务必用独立环境。用 uv 最快,它同时管理 Python 版本与虚拟环境:
# 用 uv 建环境并安装
uv venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
uv pip install langchain langchain-openai langchain-community langgraph
# 或者在 pyproject.toml 里声明依赖后同步
uv add langchain langchain-openai langchain-community langgraph
习惯 conda 的可以这样建环境:
conda create -n lc python=3.11 -y
conda activate lc
pip install langchain langchain-openai langchain-community langgraph
Python 版本建议 3.10 及以上,具体的支持矩阵以官方文档为准。生产环境请把依赖锁进 requirements.txt 或 uv.lock,不要用浮动版本上线——LangChain 生态迭代很快,小版本之间也可能有接口调整。
环境变量
密钥与追踪配置一律走环境变量,不要写死在代码里。常用的几个:
export OPENAI_API_KEY="sk-..."
export OPENAI_API_BASE="https://api.openai.com/v1" # 走兼容网关时改成网关地址
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="ls__..."
export LANGCHAIN_PROJECT="my-rag-demo"
在代码里配合 python-dotenv 从 .env 文件加载也可以:
import os
from dotenv import load_dotenv
load_dotenv() # 从当前目录的 .env 读取,文件不存在则跳过
os.environ.setdefault("LANGCHAIN_TRACING_V2", "true")
os.environ.setdefault("LANGCHAIN_PROJECT", "my-rag-demo")
| 变量 | 作用 | 说明 |
|---|---|---|
OPENAI_API_KEY | 模型鉴权 | 缺失时报 401,或提示 api_key client option must be set |
OPENAI_API_BASE | 接口地址 | 走第三方兼容网关、自建 vLLM 或 Ollama 兼容层时必填 |
LANGCHAIN_TRACING_V2 | 开启 LangSmith 追踪 | 设为字符串 true 后,链上每一步都会上报 |
LANGCHAIN_API_KEY | LangSmith 鉴权 | 与追踪开关配套使用,新版 SDK 也认 LANGSMITH_API_KEY |
LANGCHAIN_PROJECT | 追踪归组 | 不设置会落到 default 项目,生产建议按服务名区分 |
有一点必须注意:追踪开关打开后,链路的输入输出——包括检索到的文档原文——都会被上传到 LangSmith。涉及用户隐私或商业机密时要谨慎,要么关掉,要么按官方文档配置隐藏输入输出、脱敏处理的选项。
常见报错与排查
| 现象 | 原因 | 处理 |
|---|---|---|
ModuleNotFoundError: No module named 'langchain_openai' | 只装了 langchain,没装分模块包 | 补装 langchain-openai;langchain-community、langchain-text-splitters 同理 |
OpenAIError: The api_key client option must be set | 环境变量没被运行中的进程读到 | 确认变量是在启动进程的环境里设置的;.env 需要显式调用 load_dotenv();可用 ChatOpenAI(api_key=...) 显式传参来定位问题 |
ValidationError / PydanticUserError | pydantic v1 与 v2 混装,或某个集成包仍锁在 v1 | 统一升到 pydantic v2 并升级相关插件;用 pip check 查看冲突链 |
ImportError: cannot import name ... from 'langchain' | 旧教程里的导入路径已经迁移 | 核心抽象大多迁到了 langchain_core,社区集成迁到了 langchain_community |
依赖冲突 ResolutionImpossible | 多个包对同一依赖的版本区间不相交 | 在干净的虚拟环境里最小安装,逐个加包定位;uv 的报错信息比 pip 详细,优先用 uv |
| LangSmith 上看不到追踪记录 | 开关或项目名没生效 | 确认 LANGCHAIN_TRACING_V2 的值严格为 true,且必须在进程启动前设置好 |
