环境搭建与第一个 Chain:从零开始跑通 LangChain
说实话,每次带新人入门 LangChain,我最怕的就是环境配置这一步。明明代码逻辑都懂,结果卡在 pip 安装或者 API Key 配置上,一折腾就是半天。我自己刚接触那会儿也踩过不少坑,今天咱们就把这些坑提前填上。
安装 LangChain:比你想象的简单
先说说安装。LangChain 的安装其实就一行命令,但我建议你创建一个干净的虚拟环境再装。为什么?因为 LangChain 依赖的包比较多,跟其他项目混在一起容易出冲突。
# 创建虚拟环境(Python 3.8+ 都行)
python -m venv langchain_env
source langchain_env/bin/activate # Mac/Linux
# 或者 langchain_env\Scripts\activate # Windows
# 安装核心包
pip install langchain
# 如果你要用 OpenAI,再装这个
pip install openai
# 国产大模型的话,装对应的 SDK
# 比如百度文心:pip install qianfan
# 阿里通义:pip install dashscope
嗯,这里有个小细节。LangChain 本身只提供框架,真正干活的是底层的模型。所以你得根据自己选的大模型,额外安装对应的 Python 包。我个人习惯是先把 langchain 装上,跑一个最简单的例子,缺什么再补什么。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain 会快很多。
配置 API Key:两种主流方案
装好包之后,下一步就是让 LangChain 能调用大模型。说白了,你需要给框架一把「钥匙」——也就是 API Key。
方案一:OpenAI
如果你用 OpenAI,去 platform.openai.com 创建一个 Key。然后有两种方式配置:
# 方式1:环境变量(推荐)
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
# 方式2:直接在代码里传
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxx")
我个人强烈推荐用环境变量。为什么?因为代码里硬编码 Key 太危险了,万一不小心提交到 Git 仓库,那可就「裸奔」了。我曾经在一个项目里见过同事把 Key 写死在配置文件里,结果被爬虫扫到,一天跑了上千美元的费用……
方案二:国产大模型
国内的朋友可能更关心国产模型。以百度文心一言为例,配置方式类似:
# 设置环境变量
export QIANFAN_ACCESS_KEY="your_access_key"
export QIANFAN_SECRET_KEY="your_secret_key"
# 代码里使用
from langchain.llms import QianfanLLMEndpoint
llm = QianfanLLMEndpoint()
阿里通义千问、智谱 GLM 也都差不多,只是环境变量名和类名不同。你想想看,LangChain 的设计理念就是「统一接口」,不管底层是哪个模型,对开发者来说调用方式几乎一样。
.env 文件里,用 python-dotenv 加载,并且把 .env 加到 .gitignore 里。
运行第一个 LLMChain:见证奇迹的时刻
环境配好了,Key 也设了,咱们来跑第一个 Chain。别紧张,就几行代码的事。
from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 1. 初始化模型
llm = OpenAI(temperature=0.7)
# 2. 定义提示模板
prompt = PromptTemplate(
input_variables=["product"],
template="请用一句话描述{product}的用途,要求简洁有趣。"
)
# 3. 创建 Chain
chain = LLMChain(llm=llm, prompt=prompt)
# 4. 运行
result = chain.run("智能手机")
print(result)
运行之后,你应该会看到类似这样的输出:
「智能手机是一个集通讯、娱乐、办公于一身的口袋电脑,让你随时随地连接世界。」
你看,就这么简单。LLMChain 的核心逻辑就是:模板 + 模型 = 输出。你给模板传入变量,Chain 自动拼接成完整的提示词,然后发给大模型,最后把结果返回给你。
拆解一下 Chain 的内部流程
为什么会这样?咱们把上面那个例子拆开看:
| 步骤 | 发生了什么 |
|---|---|
| 1. 定义模板 | 你写了一个带占位符 {product} 的字符串 |
| 2. 传入变量 | chain.run("智能手机") 把 "智能手机" 填入模板 |
| 3. 生成提示词 | 最终发给模型的文本是:「请用一句话描述智能手机的用途,要求简洁有趣。」 |
| 4. 调用模型 | LLMChain 自动调用 OpenAI 的 API,把提示词发过去 |
| 5. 返回结果 | 模型返回的文本就是你的输出 |
说白了,LLMChain 就是一个「提示词组装器 + 模型调用器」的组合体。你不需要手动拼接字符串,也不需要关心 HTTP 请求的细节。框架帮你把这些脏活累活都干了。
换用国产模型试试
如果你用的是国产大模型,代码几乎一样。以百度文心为例:
from langchain.llms import QianfanLLMEndpoint
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
llm = QianfanLLMEndpoint(temperature=0.8)
prompt = PromptTemplate(
input_variables=["topic"],
template="用50字以内解释什么是{topic}。"
)
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run("区块链"))
你看,除了导入的类名不同,其他完全一样。这就是 LangChain 的「模型抽象层」在起作用。你写一次 Chain,换模型只需要改一行代码。
常见问题与排查
第一次跑 Chain 可能会遇到几个典型问题,我列出来,你对照着看:
- ModuleNotFoundError:缺包了。检查一下
pip list | grep langchain,看看是不是没装全。 - AuthenticationError:API Key 没配好。检查环境变量是否生效,可以在终端里
echo $OPENAI_API_KEY看看。 - RateLimitError:调用太频繁。OpenAI 免费额度有速率限制,等几秒再试。
- TimeoutError:网络问题。国内访问 OpenAI 可能需要代理,或者换国产模型。
嗯,其实大部分问题都是环境配置引起的。只要你能跑通上面那个「智能手机」的例子,后面的学习就会顺畅很多。
好了,第一个 Chain 你已经跑通了。接下来咱们会在这个基础上,一步步搭建更复杂的应用。记住这个感觉——从零到一往往是最难的,但也是最值得的。