内容提要
本文介绍LangChain入门第一步:用uv创建Python 3.12虚拟环境,安装LangChain相关依赖,通过.env配置OpenAI兼容接口,并编写最小ChatOpenAI调用demo。代码包含配置读取和消息调用,运行`uv run python -m chapter01.chat_basic`即可测试模型响应,为后续Prompt、Agent和RAG学习打基础。
延伸解读
为什么选择 uv 和 Python 3.12
文章选择 uv 管理虚拟环境和依赖,并固定 Python 3.12,主要是为了避开太新的 Python 版本可能带来的兼容性问题。LangChain 要求 Python 3.10+,但作者选择 3.12 作为稳定版本。这种环境管理方式适合后续多章节项目,避免依赖冲突,也便于复现。
OpenAI 兼容接口的灵活性
通过配置 OPENAI_BASE_URL 指向本地代理服务,LangChain 的 ChatOpenAI 可以直接调用任何兼容 OpenAI API 的服务。这意味着不一定要使用 OpenAI 官方 API,也可以接入本地模型或其他兼容服务。但需要注意,API Key 和模型名必须与所连服务匹配,否则调用会失败。
配置读取的工程化处理
文章将配置读取单独拆分为 config.py,并定义了 ConfigError 异常,用于在缺少必要环境变量时快速报错。这种设计便于后续复用,也避免了在多个 demo 中重复读取配置。同时,.env 文件被加入 .gitignore,防止敏感信息泄露,这是本地开发中常见的做法。
消息角色的重要性
LangChain 中区分 SystemMessage 和 HumanMessage,这与直接拼接字符串不同。SystemMessage 用于设定模型的行为,HumanMessage 是用户输入。这种结构为后续多轮对话、Agent 和工具调用打下基础,因为角色信息能帮助模型更准确地理解上下文。
Q&A
如何用 uv 创建 LangChain 项目的 Python 3.12 虚拟环境?
在项目目录下运行 `uv venv --python /opt/homebrew/bin/python3.12 .venv` 创建虚拟环境,然后运行 `uv python pin 3.12` 固定 Python 版本。
LangChain 项目需要安装哪些核心依赖?
核心依赖包括 langchain、langchain-community、langchain-openai、langchain-text-splitters、pydantic 和 python-dotenv,开发依赖有 ruff。
如何配置 OpenAI 兼容接口的 API Key、模型和 Base URL?
在项目根目录的 .env 文件中设置 OPENAI_API_KEY、OPENAI_MODEL 和 OPENAI_BASE_URL,例如 OPENAI_BASE_URL="http://127.0.0.1:8787/v1"。
LangChain 中 SystemMessage 和 HumanMessage 有什么区别?
SystemMessage 用于设定模型的角色或行为方式,HumanMessage 用于传递用户的实际问题。区分消息角色有助于后续扩展多轮对话和 Agent。
如何运行 LangChain 的最小 ChatOpenAI 调用 demo?
在项目目录下运行 `uv run python -m chapter01.chat_basic`,默认问题为“请用一句话介绍 LangChain 是什么”,也可以传入自定义问题,如 `uv run python -m chapter01.chat_basic "LangChain 是用来做什么的?"`。
如果缺少 OPENAI_API_KEY 或 OPENAI_MODEL 配置会怎样?
程序会抛出 ConfigError 异常,提示缺少哪些必需的环境变量。
为什么选择 Python 3.12 而不是更新的版本?
选择 Python 3.12 是为了避免太新的 Python 版本可能带来的兼容性问题,LangChain 要求 Python 3.10+,3.12 比较稳定。