学习 LangChain 之前,我们首先需要搭建好 Python 开发环境。Python 开发中,conda、uv、pip、venv 分别是什么?应该选择哪个?如何使用 uv 创建一个独立的 LangChain 项目?大模型 API 服务有哪些?如何获取 API Key?如何配置环境变量,让 Python 程序调用大模型?本文以 Windows + Python 3.12 + uv 为例,从零开始搭建一个 LangChain 开发环境。
一、Python 环境管理:conda、uv、pip、venv 是什么?
在开发 Python 项目时,我们经常会遇到一个问题:不同项目依赖的 Python 版本和第三方库可能不同,如何避免它们互相干扰?项目 A 使用 Python 3.10,需要 numpy 1.x。项目 B 使用 Python 3.12,需要 numpy 2.x。项目 C 使用 LangChain,需要安装 langchain、langchain-openai 等依赖。如果所有项目都使用同一个 Python 环境,依赖版本很容易发生冲突。环境隔离:不同项目使用独立的 Python 运行环境和依赖。围绕这两个问题,Python 生态中出现了几个常见工具。1.1 四种工具分别是什么?
venv + pip:Python 传统组合。venv 负责创建虚拟环境,pip 负责安装依赖。conda:不仅能管理 Python 环境和第三方包,还能管理部分非 Python 依赖,例如 C/C++ 库。适合数据科学、科学计算和部分深度学习场景。uv:新一代 Python 项目管理工具,使用 Rust 编写,集成了 Python 版本管理、虚拟环境、依赖安装和锁文件管理等功能。1.2 conda 和 uv 应该怎么选?
对于刚接触 Python 的开发者,最容易纠结的就是 conda 和 uv。uv 的一个明显优势是速度快。官方介绍中,其 pip 兼容接口在部分场景下可以达到 10~100 倍的速度提升,但具体速度取决于项目和网络环境。LangChain 本身是 Python 生态中的第三方库,主要通过 PyPI 安装。uv 可以完成我们学习 LangChain 所需要的环境管理和依赖安装。uv.lock 可以记录精确的依赖版本,方便后续复现开发环境。不需要为了学习 LangChain 专门安装一套较重的 Anaconda。如果后续学习深度学习、科学计算,需要管理复杂的 CUDA、C/C++ 依赖,或者使用某些 Conda 仓库提供的软件包,conda 仍然很有价值。本系列教程统一使用 uv 管理 Python 环境。
二、认识 LangChain 的依赖包
在安装之前,先了解一下 LangChain 的包结构。LangChain 并不是一个包含所有功能的单体软件,而是采用模块化设计,将核心功能、模型集成、向量数据库等拆分成不同的包。2.1 核心包
| |
|---|
| |
| 核心抽象、消息、提示词、Runnable 等基础组件 |
| |
| |
其中,langchain-core 通常会作为 langchain 的依赖自动安装,不需要单独安装。2.2 大模型集成包
LangChain 将不同模型厂商的集成拆分成独立的包。 | |
|---|
| |
| |
| |
| |
| 需要根据具体集成方式选择对应 SDK 或 OpenAI 兼容接口 |
例如,我们想使用 OpenAI 的模型,需要安装:如果想使用 Anthropic 的 Claude,则需要安装:uv add langchain-anthropic
2.3 功能扩展包
除了模型集成,LangChain 还支持很多第三方工具和基础设施。不需要一开始就把所有 LangChain 相关的包全部安装。这样既可以减少不必要的依赖,也能让项目保持简洁。
三、安装 uv 并创建项目
3.1 安装 uv
uv 支持 Windows、macOS 和 Linux。Windows 环境下,打开 PowerShell,执行:# Windows(PowerShell)powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"# macOS / Linuxcurl -LsSf https://astral.sh/uv/install.sh | sh
不过,推荐使用官方安装脚本,这样不需要依赖已有的 Python 环境。3.2 创建 LangChain 项目
下面开始创建我们的第一个 LangChain 项目。# 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 Geminiuv add langchain-deepseek # DeepSeekuv add langchain-ollama # Ollama 本地模型# 6. 按需安装功能扩展包uv add langchain-chroma # Chroma 向量数据库uv add python-dotenv # .env 环境变量加载
3.3 为什么推荐使用 uv add,而不是 uv pip install?
两者都可以安装 Python 包,但是用途有所不同。uv pip install langchain-openai
它更接近传统 pip 的使用方式,适合直接向指定虚拟环境安装包,但不会自动把依赖写入项目的 pyproject.toml。所以,如果使用 uv 管理一个正式项目,推荐使用 uv add。
四、理解项目文件:pyproject.toml、uv.lock 和 .venv
langchain-course/├── .venv/ # 虚拟环境(uv 自动创建)├── pyproject.toml # 项目配置 + 依赖清单(你手动管理)├── uv.lock # 依赖锁文件(uv 自动生成)└── main.py # 入口文件
4.1 pyproject.toml:我需要什么?
这是项目的配置文件,记录项目名称、Python 版本要求和依赖列表。[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",]
requires-python = ">=3.12" 表示项目要求 Python 3.12 或更高版本,并不代表只能使用 3.12。4.2 uv.lock:我实际安装了什么?
pyproject.toml 记录的是我们需要哪些依赖,而 uv.lock 记录的是依赖解析之后的精确版本信息。我们只要求安装 langchain,但是 LangChain 自己还依赖其他 Python 包。uv 会自动分析依赖关系,并确定各个包应该安装哪个版本。有了 uv.lock,就可以让团队成员尽可能使用相同的依赖版本。uv 就会根据 pyproject.toml 和 uv.lock 同步项目环境。注意:Python 版本本身也需要满足项目要求,不能只依赖锁文件。4.3 .venv:实际运行环境
我们通过 uv add 安装的第三方依赖,都会进入这个项目对应的环境,而不是直接安装到系统全局 Python 中。项目A/└── .venv/└── numpy 1.x项目B/└── .venv/└── numpy 2.x
两个项目可以使用不同版本的 numpy,互不影响。4.4 哪些文件需要提交到 Git?
其中,.venv 是本地虚拟环境,体积可能比较大;.env 通常包含 API Key 等敏感信息。
五、如何验证 LangChain 安装成功?
uv run python -c "import langchain; print('LangChain 安装成功')"
uv run python -c "from importlib.metadata import version; print(version('langchain'))"
这里使用 uv run,可以确保 Python 命令运行在当前项目对应的虚拟环境中。后续运行项目中的 Python 程序,也可以使用:
六、常用大模型 API 平台介绍
LangChain 本身并不提供大模型的计算能力,它更像是一个连接不同大模型和应用功能的开发框架。真正负责模型推理的是 OpenAI、DeepSeek、Anthropic 等模型服务平台,LangChain 通过 API 与它们通信。因此,我们需要先注册模型服务平台,获取 API Key。6.1 海外模型官方平台
| | | |
|---|
| https://platform.openai.com/ | | |
| https://console.anthropic.com/ | | |
| https://aistudio.google.com/ | | |
使用这些平台时,需要注意所在地区的服务可用性、账号注册要求、付款方式以及 API 使用政策。另外,ChatGPT、Claude 等网页订阅服务与对应的 API 服务通常是独立计费的,购买网页会员并不意味着自动获得 API 额度。6.2 国内模型服务平台
如果主要在国内学习和开发,可以优先考虑国产模型平台。 | | | |
|---|
| https://platform.deepseek.com/ | | |
| https://bailian.console.aliyun.com/ | | |
| https://www.siliconflow.cn/ | | |
| https://open.bigmodel.cn/ | | |
这些平台的具体模型、免费额度、计费方式和 API 接口可能发生变化,注册前建议查看各自的官方文档。6.3 初学者应该如何选择?
如果只是为了学习 LangChain,不需要一开始就注册很多平台。 | |
|---|
| |
| 可以选择 DeepSeek、阿里云百炼、硅基流动等 |
| |
| |
这样可以先掌握 LangChain 的调用方式,后续更换模型时,只需要根据平台要求修改模型名称、API Key 和 Base URL 等配置。
七、配置 API Key 和环境变量
3. 查看平台提供的模型名称和 API 接口地址。4. 在 Python 项目中配置 API Key 和 Base URL。7.1 使用 .env 文件配置
在实际项目开发中,我更推荐使用 .env 文件管理 API 配置。langchain-course/├── .venv/├── .env├── pyproject.toml├── uv.lock└── main.py
# OpenAI配置(使用CloseAI代理)OPENAI_API_KEY=sk-your-api-keyOPENAI_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
这里的 API Key、Base URL 和模型名称都需要替换成你所使用的平台提供的实际信息。from dotenv import load_dotenvimport os# 加载.env文件load_dotenv()# 读取环境变量api_key = os.getenv("OPENAI_API_KEY")base_url = os.getenv("OPENAI_BASE_URL")print(api_key)
这样就可以在 Python 程序中使用环境变量了。python-dotenv 和 dotenv 是两个不同的 Python 包。from dotenv import load_dotenv
7.2 Windows 全局环境变量配置
除了 .env 文件,我们还可以通过 Windows 设置全局环境变量。如果需要使用自定义 API 地址,也可以继续添加:OPENAI_BASE_URL配置完成后,重新打开终端或 IDE,让新环境变量生效。在 Python 中,直接通过 os.getenv() 就可以读取:import osapi_key = os.getenv("OPENAI_API_KEY")print("API Key 是否配置成功:", bool(api_key))
注意:不要直接打印完整 API Key,以免密钥泄露。7.3 .env 和 Windows 全局环境变量应该怎么选?
项目开发优先使用 .env,个人电脑可以根据需要设置全局环境变量。特别注意,.env 文件不要提交到 Git 仓库。如果需要让其他开发者知道项目需要配置哪些环境变量,可以额外提供一个 .env.example 文件,但里面只能填写变量名称和示例值,不能放真实密钥。
八、使用 LangChain 调用大模型
现在就可以尝试使用 LangChain 调用大模型了。import osfrom dotenv import load_dotenvfrom langchain_openai import ChatOpenAIload_dotenv()# 实例化大模型llm = ChatOpenAI(openai_api_key=os.getenv("OPENAI_API_KEY"),openai_api_base=os.getenv("OPENAI_API_BASE"), model_name="glm-5")# 调用模型的invoke 得到模型的响应res = llm.invoke("你好,我想了解下你这个模型的情况")# 输出print(res)
如果 API Key、Base URL 和模型名称配置正确,并且当前平台支持相应接口,就可以看到大模型返回的内容。ChatOpenAI 主要用于 OpenAI 及其兼容接口。并不是所有模型平台都完全兼容 OpenAI 接口,也不是所有模型都支持相同的参数和功能。如果后续使用 Anthropic、Google Gemini 等平台的原生集成,可以使用对应的集成包和模型类。至此,我们就完成了 LangChain 的基础开发环境搭建。