1.3 搭建车间:环境安装与第一条链


1.3 搭建车间:环境安装与第一条链

本节摘要:搭好 LangChain 开发环境只需三步——装框架、配密钥、跑验证。本节覆盖在线模型与本地开源模型两条路线,完整跑通"起名工位"第一条链,并集中处理安装期最常见的四类报错。

车间通电:安装与配置

从 0.1 版本起,LangChain 把框架拆成了一个核心包加一组厂商适配包。装"核心 + OpenAI 适配"这一对就能跑完本教程前两章:

# 建议先建独立虚拟环境,避免和已有项目互相污染 python -m venv venv # Windows 激活 venv\Scripts\activate # macOS 或 Linux 激活 # source venv/bin/activate # 核心包 + OpenAI 适配包(0.1 版本后的标准拆分) pip install langchain langchain-openai # 第4章会用到检索相关零件,可以顺手装上 pip install beautifulsoup4 chromadb tiktoken faiss-cpu

密钥不要写进代码。把它放进环境变量,模型类会自动读取:

# Windows 命令行设置(当前会话有效) set OPENAI_API_KEY=sk-你的密钥 # PowerShell 写法 # $env:OPENAI_API_KEY="sk-你的密钥" # macOS 或 Linux 写法 # export OPENAI_API_KEY=sk-你的密钥

没有在线模型密钥也能开工:装 Ollama 后拉一个开源模型,本地就能跑,只是质量与速度取决于机器。

# 安装 Ollama 后拉取一个轻量开源模型(约 4GB) ollama pull qwen2.5:7b pip install langchain-ollama

跑通第一条链:起名工位开工

车间接到的第一张订单来自经典场景:给一家生产彩色袜子的公司起名,再顺手写句标语。这正是装配线最原始的形态——两道工序,前一道的产品是后一道的原料。

from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser # 动力单元 llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7) # 第一道工序:起名 name_prompt = ChatPromptTemplate.from_template( "给一家生产{product}的公司起一个有创意的中文名,只输出名字本身") name_chain = name_prompt | llm | StrOutputParser() company = name_chain.invoke({"product": "彩色袜子"}) print("公司名:", company) # 输出示例:公司名: 彩织坊 # 第二道工序:用上一道的产出写标语 slogan_prompt = ChatPromptTemplate.from_template( "为名为{company}的公司写一句不超过12字的标语") slogan_chain = slogan_prompt | llm | StrOutputParser() print("标语:", slogan_chain.invoke({"company": company})) # 输出示例:标语: 让每一天从彩色开始

两条链各自能用,但操作员还得手工把第一道的输出搬到第二道——这仍是半自动。把两道工序直接接成一条顺序链,才叫真正的装配线:

from langchain_core.runnables import RunnableLambda # 用 RunnableLambda 把"取名字段"这道搬运动作也编进产线 to_company = RunnableLambda(lambda out: {"company": out}) # 三段管道首尾相接:起名 → 搬运 → 写标语 full_chain = name_chain | to_company | slogan_chain print(full_chain.invoke({"product": "彩色袜子"})) # 输出示例:让每一天从彩色开始

想看工件在带上经过哪些站,把链画出来即可:

# 输出产线结构图(文本形式),用于自检组装是否正确 print(full_chain.get_graph().draw_ascii()) # 输出示例(节选): # +-------------+ # | PromptInput | # +-------------+ # * # ...

本地路线的差别只有动力单元一件零件,其余工序原封不动——这正是装配线的价值:换发动机不动产线。

from langchain_ollama import ChatOllama # 换上本地动力单元,后续所有链的定义一字不改 llm = ChatOllama(model="qwen2.5:7b", temperature=0.7)

启动故障排修手册

安装期九成的报错集中在下面四种,对照处理即可:

报错特征 原因 处理
找不到模块 langchain_openai 只装了老包,或两个包版本不配套 重装配套版本:核心包与适配包都升到 0.1 以上
认证失败或密钥无效 环境变量没设成,或设在了另一个终端会话 在运行脚本的同一会话里重新设置并打印确认
连接超时 网络到模型服务不通 检查代理设置,或改走本地 Ollama 路线
模型不存在 型号名拼写错误或无权限 核对型号字符串,换基础型号重试

⚠️ 最隐蔽的一类坑:虚拟环境混用。IDE 里的解释器和终端里的不是同一个,装了包却报找不到。装完先执行下面这条验证命令,确认当前解释器能找到框架:

import langchain, langchain_openai print("核心包版本:", langchain.__version__) # 输出示例:核心包版本: 0.2.13

版本能打印出来,车间就算通电了。若你用的是旧教程里的写法(从 langchain.llms 导入 OpenAI、用 LLMChain 类),在 0.1 以上版本会看到弃用警告——旧写法本教程会对照讲,但新代码建议统一用本节的管道写法。

交接给第2章

第一条链跑通后,你手里已经有了动力单元、工艺单、传送带三件套的完整使用经验。第2章把这三件逐一拆开看齿轮:2.1 讲动力单元的调参与选型,2.2 讲工艺单的进阶形态(少样本、序列化),2.3 讲传送带的演变史(从 LLMChain 到 LCEL)。带着"我跑过一条链"的经验进去,每个参数都会变得具体。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U