Appearance
环境准备
LangChain V1.x
1、基本要求
本课程需要新建虚拟环境,Python 版本为 3.10+。
2、conda、uv、pip、venv 到底是什么关系?
在正式搭建环境之前,先花一分钟理清这几个工具的关系——很多同学在这里被绕晕。
1、 内建的模块 不需要你手动的安装,只要你有python 的sdk 可以。 time /os...
2、第三方的模块,需要手动的安装(用什么 安装什么...可控) lanchain/langchain-deepseek/langchain-openai/langchain-an...
3、自己的模块,不需要手动安装,只需要引入就可以。 app.a.py from app.a import
开发 Python 项目,你需要解决两个问题:① 环境隔离(不同项目用不同的 Python 版本和依赖,互不干扰)和 ② 包安装(把 numpy、langchain 这些库装进来)。市面上的工具就是围绕这两件事做的,只不过各自覆盖的范围不同:

简单说:venv + pip 是 Python 自带的"原始组合",能用但体验一般;conda 是"什么都管的瑞士军刀",功能全但体积大、速度慢;uv 是"新一代替代品",速度极快、功能覆盖 venv + pip 的全部能力,还能管理 Python 版本。
本课程为什么选 uv 而不是 conda?
| 对比维度 | conda | uv |
|---|---|---|
| 安装包速度 | 较慢(依赖解析复杂) | 极快(Rust 编写,快 10-100 倍) |
| 管理 Python 版本 | ✅ | ✅(uv python install 3.12) |
| 虚拟环境 | ✅ | ✅(uv init 自动创建) |
| 依赖锁定 | environment.yml(不精确) | uv.lock(精确锁定,可复现) |
| 包来源 | conda 仓库 + PyPI | PyPI(LangChain 全生态都在这里) |
| 安装非 Python 库(CUDA等) | ✅ 这是 conda 的独特优势 | ❌ 只管 Python 包 |
| 体积 | 较大(Anaconda ~3GB) | 极小(单个二进制文件) |
结论:LangChain 的所有包都在 PyPI 上,不需要 conda 仓库。uv 在速度、依赖管理、环境复现上全面优于 conda。本课程统一使用 uv,不再需要 conda/pip/venv。
什么时候还需要 conda? 如果你做深度学习项目,需要安装 CUDA、cuDNN 等非 Python 的 C/C++ 库,conda 仍然有价值。但这不在本课程范围内,遇到时再单独处理即可。
3、LangChain 包结构
在安装之前,先了解一下 LangChain 的包是怎么组织的——它不是一个"大而全"的单一包,而是按职责拆分成多个小包,按需安装:
| 分类 | 包名 | 说明 |
|---|---|---|
| 核心包 | langchain | 核心包(必须安装) |
langchain-core | 核心抽象和基础类(随 langchain 自动安装) | |
langchain-cli | 命令行工具(可选) | |
| 模型集成 | langchain-openai | OpenAI 集成(GPT-4 等) |
langchain-anthropic | Anthropic 集成(Claude 系列) | |
langchain-google-genai | Google Gemini 集成 | |
langchain-ollama | Ollama 本地模型集成 | |
langchain-deepseek | DeepSeek 集成 | |
langchain-community | 社区维护的集成包 | |
| 功能扩展 | langchainhub | 提示词和链的共享仓库 |
langchain-chroma | Chroma 向量数据库集成 | |
langchain-elasticsearch | Elasticsearch 集成 | |
langchain-redis | Redis 缓存集成 |
原则:只安装你用到的包。uv 的依赖解析很快,随时
uv add新包即可,不用一次装全。
4、安装 uv
bash
# Windows(PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh安装完成后验证:
bash
uv --version也可以用
pip install uv快速安装,但推荐上面的官方方式(更快、不依赖已有 Python)。
5、创建项目环境并安装 LangChain
bash
# 1. 创建项目目录
mkdir langchain-course && cd langchain-course
# 2. 用 uv 初始化项目(自动创建虚拟环境 + pyproject.toml)
uv init
# 3. 指定 Python 版本(推荐 3.12)
uv python pin 3.12
# 4. 安装 LangChain 核心包
uv add langchain
# 5. 按需安装模型提供商集成(选你要用的)
uv add langchain-openai # OpenAI(GPT-4 等)
uv add langchain-anthropic # Anthropic(Claude 系列)
uv add langchain-google-genai # Google Gemini
uv add langchain-deepseek # DeepSeek
uv add langchain-ollama # Ollama 本地模型
# 6. 按需安装功能扩展包
uv add langchain-chroma # Chroma 向量数据库
uv add python-dotenv # .env 环境变量加载为什么用
uv add而不是uv pip install?uv add会自动将依赖写入pyproject.toml并生成uv.lock锁文件,方便团队协作和环境复现。uv pip install也能用,但不会记录依赖关系。
6、理解项目文件:pyproject.toml 和 uv.lock
执行完上面的命令后,你会发现项目目录里多出了几个文件:
langchain-course/
├── .venv/ # 虚拟环境(uv 自动创建)
├── pyproject.toml # 项目配置 + 依赖清单(你手动管理)
├── uv.lock # 依赖锁文件(uv 自动生成)
└── main.py # 入口文件这三个东西各自的角色,用一个比喻来理解:
pyproject.toml uv.lock .venv/
"购物清单" "收银小票" "冰箱"
你写的:我要牛奶≥3瓶 uv算的:牛奶3.2瓶 实际安装的包
酸奶1.1瓶(牛奶的依赖)
糖0.5袋(酸奶的依赖)
你手动管理 uv 自动生成 uv 自动安装
✅ 提交到 git ✅ 提交到 git ❌ 不提交(加进 .gitignore)pyproject.toml — "我需要什么"
这是项目的配置文件,记录了项目名称、Python 版本要求、以及你手动安装的依赖列表。每次执行 uv add langchain 时,uv 就往这个文件的 dependencies 里加一条记录:
toml
[project]
name = "langchain-demo"
version = "0.1.0"
requires-python = ">=3.10"
dependencies = [
"langchain>=1.2.15",
"langchain-openai>=1.1.15",
"langchain-anthropic>=1.4.1",
"langchain-ollama>=1.1.0",
"openai>=2.32.0",
"python-dotenv>=1.1.0",
"notebook>=7.5.5",
]版本号后面的 >=1.2.15 表示"至少要这个版本",是一个宽松的约束。你不需要手动编辑这个文件,uv add / uv remove 会自动维护它。
uv.lock — "我实际装了什么"
这是 uv 自动生成的锁文件,记录了每个包及其所有间接依赖的精确版本号。你永远不需要手动编辑它。
它解决的核心问题是可复现性——把 pyproject.toml 和 uv.lock 发给同事,同事执行一条命令就能得到和你完全一致的环境:
bash
# 同事拿到你的项目后,一条命令还原环境
uv sync不会再出现"在我电脑上能跑、在你电脑上报错"的问题。
常见小坑:
python-dotenv和dotenv是两个不同的包。代码里from dotenv import load_dotenv实际依赖的是 python-dotenv。如果你不小心装成了dotenv,用以下命令修正:bashuv remove dotenv uv add python-dotenv
7、验证安装
bash
# 在项目目录下运行
uv run python -c "import langchain; print(langchain.__version__)"或进入 Python 交互环境:
python
import langchain
print(langchain.__version__) # 应显示版本号8、常用大模型服务平台
LangChain 的核心优势之一是模型无关性——切换模型只需改一行配置。但前提是你得有一个能用的 API。下面按使用场景整理了主流平台,帮你快速找到适合自己的方案。
海外模型官方平台(需科学上网 + 海外支付)
| 平台 | 地址 | 代表模型 | 说明 |
|---|---|---|---|
| OpenAI | https://platform.openai.com/ | GPT-4o、GPT-4.1、o3 | 最主流的闭源模型,需 Visa/Master 信用卡 |
| Anthropic | https://console.anthropic.com/ | Claude Sonnet 4、Claude Opus 4 | 长上下文、代码能力强,需海外信用卡 |
| Google AI Studio | https://aistudio.google.com/ | Gemini 2.5 Pro/Flash | 免费额度较多,注册门槛低 |
国内代理/中转平台(国内直连、支付宝付费)
如果你没有海外支付手段,或者网络环境不方便直连,可以使用以下代理平台。它们提供与官方完全兼容的 API 接口,只需替换 base_url 即可,代码无需任何修改:
| 平台 | 地址 | 可用模型 | 特点 |
|---|---|---|---|
| CloseAI | https://platform.closeai-asia.com/ | OpenAI、Claude、Gemini 全系列 | 亚洲最大的 API 中转平台,企业级稳定性,支持支付宝,100% 官方转发 |
| OpenRouter | https://openrouter.ai/ | 350+ 模型(闭源+开源) | 统一接口切换任意模型,美元计费,部分免费模型可用 |
本课程推荐:使用 CloseAI 作为代理平台。注册后用支付宝充值即可获取 API Key,
base_url设置为https://api.closeai-asia.com/v1,其余代码与直连 OpenAI 完全一致。
国产模型平台(国内直连、部分有免费额度)
| 平台 | 地址 | 代表模型 | 特点 |
|---|---|---|---|
| DeepSeek | https://platform.deepseek.com/ | DeepSeek-V3、DeepSeek-R1 | 性价比极高,推理能力强,兼容 OpenAI 接口格式 |
| 阿里云百炼 | https://bailian.console.aliyun.com/ | 通义千问 Qwen 系列 | 一站式大模型开发平台,企业级服务 |
| 硅基流动 | https://www.siliconflow.cn/ | DeepSeek、Qwen、GLM 等 50+ 开源模型 | 开源模型推理加速平台,新用户送 2000 万 Token,兼容 OpenAI 接口格式 |
| 智谱 AI | https://open.bigmodel.cn/ | GLM-4、GLM-5 系列 | GLM-4-Flash 永久免费,中文能力强 |
如何选择?
你的情况是?
│
├─ 有科学上网 + 海外信用卡
│ └──▶ 直连 OpenAI / Anthropic 官方(延迟最低、最稳定)
│
├─ 国内网络 + 只有支付宝
│ └──▶ CloseAI 代理(本课程推荐方案,改一行 base_url 搞定)
│
├─ 想省钱 / 学习用途
│ └──▶ DeepSeek(超便宜)或 硅基流动(有免费额度)
│
└─ 想用国产模型
└──▶ 阿里云百炼(Qwen)或 智谱AI(GLM)9、配置环境变量
使用时只需要注册、充值并创建API-Key,之后即可使用API-Key与BASE_URL来调用平台提供的相应的模型的服务。
通过.env文件配置
适用于实际项目当中:
- 在项目根目录中创建
.env文件 - 添加环境变量(以OPENAI_BASE_URL和OPENAI_API_KEY为例):
env
# OpenAI配置(使用CloseAI代理)
OPENAI_API_KEY=sk-your-api-key
OPENAI_BASE_URL=https://api.closeai-asia.com/v1
# Anthropic配置(可选)
ANTHROPIC_API_KEY=sk-ant-your-api-key
# DeepSeek配置(可选)
DEEPSEEK_API_KEY=sk-your-deepseek-key- 在代码中读取环境变量:
python
# pip install python-dotenv
from dotenv import load_dotenv
import os
# 通过load_dotenv()将.env中的变量加载为环境变量
# override=True表示:无论你当前的操作系统、终端或者虚拟环境中是否已经存在同名的环境变量,
# 都会强行用 .env 文件里写的值去覆盖它
load_dotenv(override=True)
# 读取环境变量
api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_BASE_URL")
print(api_key)注意:不要将
.env放在git管理目录当中,避免数据泄露。建议将.env添加到.gitignore文件中。
通过Windows全局环境变量配置
适用于学习环境下,经常需要使用到的某些环境变量。
本课程当中,会将部分环境变量,通过Windows做全局配置,避免重复执行load_dotenv操作。
设置步骤:
- 右键"此电脑" → "属性" → "高级系统设置"
- 点击"环境变量"
- 在"用户变量"中新建:
- 变量名:
OPENAI_API_KEY - 变量值:你的API密钥
- 变量名:
在代码中使用环境变量
python
import os
from langchain_openai import ChatOpenAI
# 从环境变量读取配置
llm = ChatOpenAI(
model="gpt-4",
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL")
)10、快速上手:第一个LangChain程序
在开始深入学习之前,让我们创建一个简单的Agent来感受LangChain的强大!
简单的模型调用
python
# pip install langchain-openai
import os
from langchain_openai import ChatOpenAI
# 创建模型实例(确保已设置环境变量)
llm = ChatOpenAI(
model="gpt-4",
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
)
# 调用模型
response = llm.invoke("你好,请用一句话介绍Python")
print(response.content)实际开发中使用.env方式