LangChain 新老版本升级踩坑记录(0.1 → 0.2+)

94 阅读4分钟

记录一次真实踩坑:代码没错,环境没炸,但就是 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 转向:

  • Runnable
  • LCEL(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 对照表(速查)

功能老版本新版本
PromptTemplatelangchain.promptslangchain_core.prompts
ChatPromptTemplatelangchain.promptslangchain_core.prompts
OpenAIlangchain.llmslangchain_openai
ChatOpenAIlangchain.chat_modelslangchain_openai
FAISSlangchain.vectorstoreslangchain_community.vectorstores
TextLoaderlangchain.document_loaderslangchain_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 折磨过的人 😄