记录一次真实踩坑:代码没错,环境没炸,但就是 import 不进来。
如果你在升级 LangChain 或跟着教程写代码时,遇到类似下面的错误:
ModuleNotFoundError: No module named 'langchain.prompts'
那恭喜你——你踩中了 LangChain 0.2 版本升级后的“经典坑” 。
一、问题现象
老代码中常见的写法:
from langchain.prompts import PromptTemplate
在新环境中直接报错:
ModuleNotFoundError: No module named 'langchain.prompts'
很多人的第一反应是:
- 没装 langchain?
- 虚拟环境不对?
- Python 路径乱了?
其实都不是。
👉 根本原因是:LangChain 在 0.2 版本进行了大规模包结构拆分,老 import 路径被移除了。
二、为什么 LangChain 要这么改?
1️⃣ 早期问题(0.0 / 0.1 时代)
早期 LangChain 把几乎所有东西都塞进了 langchain 一个包里:
- prompts
- llms
- chat_models
- vectorstores
- document_loaders
结果就是:
- 包体积越来越大
- 依赖冲突频繁
- 第三方 SDK 更新会影响核心稳定性
2️⃣ 新版本的设计思路(0.2+)
LangChain 官方做了一次架构级拆分:
| 模块 | 职责 |
|---|---|
langchain-core | 核心抽象(Prompt / Runnable / Message) |
langchain | 高层应用模式(Chains / Agents,逐步弱化) |
langchain-community | 社区维护的第三方集成 |
langchain-openai | 厂商官方 SDK 封装 |
👉 核心思想:核心稳定 + 集成解耦
三、最容易踩的坑(Top 7)
❌ 坑 1:langchain.prompts 不存在了
老写法(失效):
from langchain.prompts import PromptTemplate
新写法(正确):
from langchain_core.prompts import PromptTemplate
❌ 坑 2:langchain.llms 被移除
报错示例:
ModuleNotFoundError: No module named 'langchain.llms'
老写法(失效):
from langchain.llms import OpenAI
原因说明:
在新版本中,LangChain 彻底移除了统一的 llms 抽象入口,不再通过 langchain.llms 暴露具体模型实现,而是改为:
- 核心只保留抽象(在
langchain-core) - 具体模型实现按厂商拆包(OpenAI / Anthropic / Azure 等)
新写法(正确):
from langchain_openai import OpenAI
或(更推荐的 Chat 接口):
from langchain_openai import ChatOpenAI
❌ 坑 3:langchain.chains 被弱化 / 不再推荐
报错示例:
ModuleNotFoundError: No module named 'langchain.chains'
老写法(逐步失效):
from langchain.chains import LLMChain
背景说明:
LLMChain 是 LangChain 早期的核心抽象,用于把 Prompt + LLM 绑在一起。
但从 0.2 版本开始,LangChain 官方的设计重心已经从 Chain 转向:
RunnableLCEL(LangChain Expression Language)
chains 模块被逐步弱化,在部分精简安装或未来版本中可能直接不可用。
推荐的新写法(LCEL 风格):
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
prompt = PromptTemplate.from_template("解释一下什么是 {concept}")
llm = ChatOpenAI()
chain = prompt | llm
chain.invoke({"concept": "LangChain"})
👉 这本质上就是 LLMChain 的现代等价物。
❌ 坑 4:langchain.chat_models 被移除
老写法:
from langchain.chat_models import ChatOpenAI
新写法:
from langchain_openai import ChatOpenAI
❌ 坑 3:向量库 / Loader 找不到
老写法:
from langchain.vectorstores import FAISS
from langchain.document_loaders import TextLoader
新写法:
from langchain_community.vectorstores import FAISS
from langchain_community.document_loaders import TextLoader
❌ 坑 4:版本装了,但子包没装
新版本是多包组合,光装 langchain 可能不够。
常见缺失:
ModuleNotFoundError: No module named 'langchain_openai'
需要额外安装:
pip install langchain-openai langchain-community
❌ 坑 5:混用 LLM 与 ChatModel 导致理解混乱
在老版本中:
OpenAI(Completion)ChatOpenAI(ChatCompletion)
经常被混着用,差别不明显。
在新版本中:
- Chat 模型是主流和推荐路径
- 很多 Agent / Tool / Runnable 只接受 ChatModel
👉 建议:新项目优先使用 ChatOpenAI,除非你明确需要 Completion API。
❌ 坑 6:教程仍大量使用 LLMChain
大量旧教程仍然以:
LLMChain(prompt=..., llm=...)
作为入门示例。
但在新版本中:
- 这种写法不会消失,但不再是主路径
- 新特性(Agent / Tool / Graph)都基于 Runnable
👉 如果你是 新项目:
- 可以直接忽略
LLMChain - 从
prompt | llm | parser的组合方式入手
❌ 坑 7:教程和环境版本不一致
2023 年的博客 / 视频教程:
- 90% 使用的是
langchain<0.1 - import 全是
from langchain.xxx import ...
2024–2025 年的新环境:
- 默认安装
langchain 0.2+ - 老代码直接全挂
👉 这是目前最常见的踩坑来源
四、新老版本 import 对照表(速查)
| 功能 | 老版本 | 新版本 |
|---|---|---|
| PromptTemplate | langchain.prompts | langchain_core.prompts |
| ChatPromptTemplate | langchain.prompts | langchain_core.prompts |
| OpenAI | langchain.llms | langchain_openai |
| ChatOpenAI | langchain.chat_models | langchain_openai |
| FAISS | langchain.vectorstores | langchain_community.vectorstores |
| TextLoader | langchain.document_loaders | langchain_community.document_loaders |
五、新版本最小可运行示例
from langchain_core.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
prompt = PromptTemplate(
template="解释一下什么是 {concept}",
input_variables=["concept"]
)
llm = ChatOpenAI(model="gpt-4o-mini")
print(prompt.format(concept="LangChain"))
六、两种应对策略
✅ 策略一:拥抱新版本(推荐)
- 全面使用
langchain_core / community / vendor 包 - 更适合 Agent / RAG / LangGraph
- 官方未来重点方向
⚠️ 策略二:回退旧版本(不推荐)
pip install "langchain<0.1.0"
适合:
- 只跑老 demo
- 不打算长期维护的代码
七、一句话经验总结
看到
from langchain.xxx import ...,先别抄
先看教程写的哪一年,再看你装的哪个版本
LangChain 从 0.2 开始:
langchain不再是“万能入口”- import 路径 ≈ 架构设计
理解这一点,后面写 Agent / RAG 会顺很多。
八、附:推荐的安装方式
pip install -U \
langchain-core \
langchain-community \
langchain-openai
(按需增减厂商包)
📌 本文适合:
- LangChain 新手
- 老代码迁移
- 被
ModuleNotFoundError折磨过的人 😄