LangChain 实战 | 快速搭建 Python 开发环境

介绍 uv

uv 是一个用 Rust 编写的 极快的 Python 包管理器和项目管理器。

它整合了 Python 开发者常用的多种工具到一个 CLI 中,非常像 Node.js 生态里的 npm/pnpm。

  • Rust 写的,速度比 pip 快 10~80 倍
  • 一个工具替代多个工具(pip、virtualenv、pip-tools、pyenv、poetry...)
  • 和 Ruff 同一个团队,专业度高
  • 配置统一在 pyproject.toml
  • 兼容 pip,不需要迁移成本

uv 命令速查表:

功能 命令
创建虚拟环境 uv venv
使用虚拟环境运行脚本 uv run main.py
安装依赖 uv pip install fastapi
安装到项目(写入 pyproject) uv add fastapi
安装 Python 版本 uv python install 3.12
运行工具 uv run uvicorn app:app
解析依赖锁定 uv pip compile

安装 uv

我们需要依据 uv 官网给我们提供的安装方法将 uv 安装到计算机中。

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

以 Windows 为例,将上述命令输入到终端后等待几秒就会安装完成。

初始化环境

学习 langchain 我们要创建一个 Python 项目环境。

首先,创建 langchain 项目目录 learn-langchain,在目录下的终端命令行输入 uv init

此时,uv 就会帮我们初始化开发环境,会生成如下初始文件:

其中,pyproject.toml 是 Python 项目的"总配置中心 + 依赖声明入口"。

toml 复制代码
[project]
name = "learn-langchain"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = []

可以把它类比成前端项目中的 package.json 文件,下面我们详细解释这个文件中各个字段的含义。

  • [project] :这是一个 Python 项目的元数据声明,uv 会从这里读取项目信息。
  • name:项目的官方名称。
  • version:项目版本号。
  • description:项目的一句话描述。
  • readme:指定项目的 README 文件。
  • requires-python:声明项目能运行的 Python 版本范围。
  • dependencies:项目的运行时依赖,后续安装的依赖都会存到这里。

安装项目依赖

首先,安装 langchain 核心依赖,在项目跟目录终端输入:

uv add langchain langchain-core langchain-classic langchain-community

此时,新的依赖会声明在 pyproject.toml 文件的 dependencies 中。

同时,在项目中会生成 uv.lovk 文件和 .venv 文件:

  • uv.lovk : uv 自动生成的依赖锁文件 , 记录每个依赖的最终版本。
  • .venv: uv 为当前项目创建的 Python 虚拟环境目录,避免全局 Python 环境污染。

激活虚拟环境

如果是 Windows 系统,在项目终端命令行输入:

.venv\Scripts\activate

如果是 macOS / Linux 系统,在项目终端命令行输入:

source .venv/bin/activate

虚拟环境激活后,会在终端命令行前端显示 (learn-langchain) 表示当前激活的 Python 虚拟环境名称。

创建项目示例

安装依赖

首先,安装必要的依赖,在项目跟目录终端输入:

uv add python-dotenv langchain-openai langchain-deepseek

  • python-dotenv是一个用于读取 .env 文件并将环境变量加载到 Python 运行时的工具。
  • langchain-openai 提供对 OpenAI 官方模型 的接口封装。
  • langchain-deepseek 提供对 DeepSeek 平台(OpenAI-compatible)的接口 封装。

配置环境变量

在项目根目录创建 .env 文件,输入如下内容:

ini 复制代码
OPENAI_API_KEY=sk-c97afa925b1745f79225c904dff53cba
OPENAI_API_BASE=https://api.deepseek.com/v1

在学习 LangChain 的前期阶段,我们暂时使用 DeepSeek 作为我们的大语言模型。

因为 DeepSeek 兼容 OpenAI API 协议, 所以我们可以使用其 API key 赋值给 OPENAI_API_KEY

访问 DeepSeek 开放平台,创建 API key 保存起来,然后赋值给 .env 中的 OPENAI_API_KEY

使用官网提供的兼容 OpenAI 的base_url 赋值给 OPENAI_API_BASE

创建示例

创建第一个示例,在项目根目录创建 01-hello-world 文件夹,在其文件夹内创建 01-chat.py 文件。

python 复制代码
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 初始化聊天模型
llm = ChatOpenAI(
    model="deepseek-chat",
    temperature=0,
)

# 调用模型
response = llm.invoke("你是谁")

print(response.content)

上述代码的含义是:

  1. 导入依赖
python 复制代码
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
  • from langchain_openai import ChatOpenAI
    • LangChain 的 OpenAI 适配器包 里导入 ChatOpenAI
    • 这个类封装了对 OpenAI 或兼容 API(DeepSeek)的对话模型调用
    • 本质上是一个 LLM(Large Language Model)客户端
  • from dotenv import load_dotenv
    • python-dotenv 导入 load_dotenv
    • 用来加载 .env 文件中的环境变量到 Python 的 os.environ
  1. 加载环境变量
  • load_dotenv()
    • 读取项目根目录下的 .env 文件
    • 将其中的内容(例如 OPENAI_API_KEYOPENAI_API_BASE)导入环境变量
    • 这样 ChatOpenAI 就可以自动读取 Key 和 API Base,无需在代码中硬编码
  1. 初始化 LLM
python 复制代码
llm = ChatOpenAI(
    model="deepseek-chat",
    temperature=0,
)
  • 创建一个 ChatOpenAI 对象,用于发送消息给 LLM
  • model="deepseek-chat"
    • 因为 DeepSeek 兼容 OpenAI API,这里可以直接指定 DeepSeek 提供的模型
  • temperature=0
    • 控制生成文本的随机性, 0 → 最确定、最稳妥, 越大 → 输出越多样化
  1. 调用 LLM
  • response = llm.invoke("你是谁")
    • invoke() 是 ChatOpenAI 的核心方法
    • 输入参数 "你是谁"prompt,告诉 LLM 你希望它做什么
    • 返回值 response 是一个对象,通常包含:response.content → LLM 的文本输出

结语

最终 ,在终端命令行输入:python .\01-hello-world\01-chat.py 等待几秒就会在控制台打印内容。

这说明,我们第一个 LangChain 示例运行成功,后续,我们将开始系统学习 LangChain 提供的强大的能力。

相关推荐
小北方城市网15 小时前
第1课:架构设计核心认知|从0建立架构思维(架构系列入门课)
大数据·网络·数据结构·python·架构·数据库架构
xinxin本尊15 小时前
通过langchain的LCEL创建带历史感知的检索链
langchain
我的offer在哪里16 小时前
Hugging Face:让大模型触手可及的魔法工厂
人工智能·python·语言模型·开源·ai编程
汤姆yu16 小时前
基于python大数据的协同过滤音乐推荐系统
大数据·开发语言·python
爱学习的小道长16 小时前
Python Emoji库的使用教程
开发语言·python
Data_agent16 小时前
Cssbuy 模式淘宝 / 1688 代购系统南美市场搭建指南
大数据·python
资深web全栈开发16 小时前
深度对比 LangChain 8 种文档分割方式:从逻辑底层到选型实战
深度学习·自然语言处理·langchain
xyt117222817716 小时前
宗地四至提取工具
python·arcgis
程序员三藏16 小时前
接口自动化测试之 pytest 接口关联框架封装
自动化测试·软件测试·python·测试工具·测试用例·pytest·接口测试