LangChain 导入兼容矩阵:0.3.27 与 1.4.7 下 36 个常用符号的可用性
升级到 LangChain v1 时,最常见的问题是:“我用的这个类,在新版本里还能不能 import?不能的话去哪里找?”本页给出一张实际导入过的矩阵:同一批符号,在三种环境里分别尝试导入,结果原样记录。适合在升级前对照自己的代码,也适合报错之后快速定位。
适用版本与验证信息
| 环境 | 已安装的关键包 | 说明 |
|---|---|---|
| 0.3.27 | langchain==0.3.27、langchain-core==0.3.86、langchain-community==0.3.31、langchain-text-splitters==0.3.11、langgraph==0.6.11 | 迁移前的旧环境 |
| 1.4.7(仅 langchain) | langchain==1.4.7、langchain-core==1.7.0、langchain-openai==1.7.2、langgraph==1.2.17 | 只升级 langchain、没有装兼容层的环境 |
| 1.4.7 + 兼容层 | 在上一行基础上增加 langchain-classic==1.0.8、langchain-community==0.4.2、langchain-text-splitters==1.1.3 | 按迁移指南安装了兼容层和社区包 |
- 验证日期:2026-10-25;Python 3.12.12;
- 官方来源:LangChain v1 migration guide (opens in a new tab),对照官方文档仓库 langchain-ai/docs (opens in a new tab) 提交
b8d4ced(2026-10-16); - 实验代码:站点仓库
labs/langchain-v1-migration/import_matrix.py,三个环境的依赖锁定在labs/requirements/。
怎么读这张表
脚本对每个符号执行“导入模块,再取属性”,只会有三种结果:
| 结果 | 含义 | 典型报错 |
|---|---|---|
| 可用 | 模块和名称都存在 | 无 |
| 名称已移除 | 模块还在,但这个名字没了 | ImportError: cannot import name ... |
| 模块不存在 | 整个子模块不在当前安装里 | ModuleNotFoundError: No module named ... |
两点限制需要提前说清楚:
- “可用”不等于“没有弃用警告”。 脚本为了让输出稳定关闭了警告,所以旧路径在 0.3.27 里显示“可用”,并不代表它仍被推荐;
- “模块不存在”取决于安装了什么。 同一个符号在“仅 langchain”和“兼容层”两列里结果不同,通常只是因为少装了一个包,而不是符号真的消失了。
旧路径:langchain.* 下的 18 个符号
这是 0.x 项目里最常见的写法。0.3.27 里 18 个中有 17 个可用(只有 create_agent 还不存在);到 1.4.7,无论是否安装兼容层,都只剩 3 个可用:
| 符号 | 0.3.27 | 1.4.7(仅 langchain) | 1.4.7 + 兼容层 |
|---|---|---|---|
langchain.agents.initialize_agent | 可用 | 名称已移除 | 名称已移除 |
langchain.agents.AgentExecutor | 可用 | 名称已移除 | 名称已移除 |
langchain.agents.create_tool_calling_agent | 可用 | 名称已移除 | 名称已移除 |
langchain.agents.create_react_agent | 可用 | 名称已移除 | 名称已移除 |
langchain.agents.create_agent | 名称已移除 | 可用 | 可用 |
langchain.chains.LLMChain | 可用 | 模块不存在 | 模块不存在 |
langchain.chains.RetrievalQA | 可用 | 模块不存在 | 模块不存在 |
langchain.chains.create_retrieval_chain | 可用 | 模块不存在 | 模块不存在 |
langchain.memory.ConversationBufferMemory | 可用 | 模块不存在 | 模块不存在 |
langchain.prompts.PromptTemplate | 可用 | 模块不存在 | 模块不存在 |
langchain.schema.Document | 可用 | 模块不存在 | 模块不存在 |
langchain.text_splitter.RecursiveCharacterTextSplitter | 可用 | 模块不存在 | 模块不存在 |
langchain.chat_models.init_chat_model | 可用 | 可用 | 可用 |
langchain.chat_models.ChatOpenAI | 可用 | 名称已移除 | 名称已移除 |
langchain.llms.OpenAI | 可用 | 模块不存在 | 模块不存在 |
langchain.vectorstores.FAISS | 可用 | 模块不存在 | 模块不存在 |
langchain.document_loaders.TextLoader | 可用 | 模块不存在 | 模块不存在 |
langchain.tools.tool | 可用 | 可用 | 可用 |
其中 1.4.7 下仍可用的 3 个是 create_agent、init_chat_model、tool——正好对应官方迁移指南里“langchain 包保留 agents、chat_models、tools”的描述。
其他参照:新位置与相邻包
为了帮助判断“应该去哪里找”,同时记录了 7 个参照符号:
| 符号 | 0.3.27 | 1.4.7(仅 langchain) | 1.4.7 + 兼容层 |
|---|---|---|---|
langchain_core.prompts.ChatPromptTemplate | 可用 | 可用 | 可用 |
langchain_core.documents.Document | 可用 | 可用 | 可用 |
langchain_text_splitters.RecursiveCharacterTextSplitter | 可用 | 模块不存在 | 可用 |
langchain_classic.agents.AgentExecutor | 模块不存在 | 模块不存在 | 可用 |
langchain_classic.chains.LLMChain | 模块不存在 | 模块不存在 | 可用 |
langchain_classic.memory.ConversationBufferMemory | 模块不存在 | 模块不存在 | 可用 |
langgraph.prebuilt.create_react_agent | 可用 | 可用 | 可用 |
- 安装兼容层后,
langchain_classic.agents、langchain_classic.chains、langchain_classic.memory下的符号全部可用——但上一张表同时显示,旧路径langchain.agents.AgentExecutor、langchain.chains.LLMChain并不会因此恢复。兼容层提供的是新位置,不是旧路径的别名,必须修改 import; langchain_text_splitters在“仅 langchain”环境里不存在:在 1.4.7 下,文本切分器需要单独安装langchain-text-splitters;langgraph.prebuilt.create_react_agent在 1.4.7 里仍可导入,但官方迁移指南已经推荐改用create_agent。
迁移目标:11 个新位置
下面这些是旧符号迁移后的落脚点,每一项都真实导入过:
| 符号 | 0.3.27 | 1.4.7(仅 langchain) | 1.4.7 + 兼容层 |
|---|---|---|---|
langchain_classic.agents.initialize_agent | 模块不存在 | 模块不存在 | 可用 |
langchain_classic.agents.create_react_agent | 模块不存在 | 模块不存在 | 可用 |
langchain_classic.agents.create_tool_calling_agent | 模块不存在 | 模块不存在 | 可用 |
langchain_classic.chains.RetrievalQA | 模块不存在 | 模块不存在 | 可用 |
langchain_classic.chains.create_retrieval_chain | 模块不存在 | 模块不存在 | 可用 |
langchain_core.prompts.PromptTemplate | 可用 | 可用 | 可用 |
langchain_core.messages.HumanMessage | 可用 | 可用 | 可用 |
langchain_openai.ChatOpenAI | 模块不存在 | 可用 | 可用 |
langchain_openai.OpenAI | 模块不存在 | 可用 | 可用 |
langchain_community.vectorstores.FAISS | 可用 | 模块不存在 | 可用 |
langchain_community.document_loaders.TextLoader | 可用 | 模块不存在 | 可用 |
读法:
- 11 个目标里,只有“1.4.7 + 兼容层”这一列全部可用,所以按这张表迁移时,需要同时安装
langchain-classic、langchain-community、langchain-openai; langchain_openai里的ChatOpenAI、OpenAI在 0.3.27 环境里不存在,是因为那个环境没有安装langchain-openai,不是版本问题;- 如果你的旧代码从
langchain.vectorstores、langchain.document_loaders导入,目标是langchain_community.*,需要安装langchain-community(本实验装的是 0.4.2)。
用脚本检查你自己的符号
把你项目里实际用到的符号追加到 SYMBOLS 或 TARGETS 列表,在每个环境里各运行一次即可得到同样格式的结果:
"""Report which symbols can still be imported from the installed LangChain version."""
import importlib
import importlib.metadata as md
import warnings
warnings.simplefilter("ignore")
SYMBOLS = [
("langchain.agents", "initialize_agent"),
("langchain.agents", "AgentExecutor"),
("langchain.agents", "create_tool_calling_agent"),
("langchain.agents", "create_react_agent"),
("langchain.agents", "create_agent"),
("langchain.chains", "LLMChain"),
("langchain.chains", "RetrievalQA"),
("langchain.chains", "create_retrieval_chain"),
("langchain.memory", "ConversationBufferMemory"),
("langchain.prompts", "PromptTemplate"),
("langchain.schema", "Document"),
("langchain.text_splitter", "RecursiveCharacterTextSplitter"),
("langchain.chat_models", "init_chat_model"),
("langchain.chat_models", "ChatOpenAI"),
("langchain.llms", "OpenAI"),
("langchain.vectorstores", "FAISS"),
("langchain.document_loaders", "TextLoader"),
("langchain.tools", "tool"),
("langchain_core.prompts", "ChatPromptTemplate"),
("langchain_core.documents", "Document"),
("langchain_text_splitters", "RecursiveCharacterTextSplitter"),
("langchain_classic.agents", "AgentExecutor"),
("langchain_classic.chains", "LLMChain"),
("langchain_classic.memory", "ConversationBufferMemory"),
("langgraph.prebuilt", "create_react_agent"),
]
# Where the old names go after the split; each target is imported for real in every environment.
TARGETS = [
("langchain_classic.agents", "initialize_agent"),
("langchain_classic.agents", "create_react_agent"),
("langchain_classic.agents", "create_tool_calling_agent"),
("langchain_classic.chains", "RetrievalQA"),
("langchain_classic.chains", "create_retrieval_chain"),
("langchain_core.prompts", "PromptTemplate"),
("langchain_core.messages", "HumanMessage"),
("langchain_openai", "ChatOpenAI"),
("langchain_openai", "OpenAI"),
("langchain_community.vectorstores", "FAISS"),
("langchain_community.document_loaders", "TextLoader"),
]
def status(module: str, name: str) -> str:
try:
getattr(importlib.import_module(module), name)
return "OK"
except ModuleNotFoundError:
return "NO_MODULE"
except AttributeError:
return "NO_ATTR"
except Exception as exc: # unexpected import-time failure
return f"ERR:{type(exc).__name__}"
def version(dist: str) -> str:
try:
return md.version(dist)
except md.PackageNotFoundError:
return "-"
print(
"installed:",
", ".join(f"{d}={version(d)}" for d in ("langchain", "langchain-core", "langchain-classic", "langchain-community", "langchain-text-splitters")),
)
for module, name in SYMBOLS:
print(f"{status(module, name):10s} {module}.{name}")
print("-- migration targets --")
for module, name in TARGETS:
print(f"{status(module, name):10s} {module}.{name}")三个环境的原始输出如下,上面的表格就是由它们合并而成。
0.3.27:
installed: langchain=0.3.27, langchain-core=0.3.86, langchain-classic=-, langchain-community=0.3.31, langchain-text-splitters=0.3.11
OK langchain.agents.initialize_agent
OK langchain.agents.AgentExecutor
OK langchain.agents.create_tool_calling_agent
OK langchain.agents.create_react_agent
NO_ATTR langchain.agents.create_agent
OK langchain.chains.LLMChain
OK langchain.chains.RetrievalQA
OK langchain.chains.create_retrieval_chain
OK langchain.memory.ConversationBufferMemory
OK langchain.prompts.PromptTemplate
OK langchain.schema.Document
OK langchain.text_splitter.RecursiveCharacterTextSplitter
OK langchain.chat_models.init_chat_model
OK langchain.chat_models.ChatOpenAI
OK langchain.llms.OpenAI
OK langchain.vectorstores.FAISS
OK langchain.document_loaders.TextLoader
OK langchain.tools.tool
OK langchain_core.prompts.ChatPromptTemplate
OK langchain_core.documents.Document
OK langchain_text_splitters.RecursiveCharacterTextSplitter
NO_MODULE langchain_classic.agents.AgentExecutor
NO_MODULE langchain_classic.chains.LLMChain
NO_MODULE langchain_classic.memory.ConversationBufferMemory
OK langgraph.prebuilt.create_react_agent
-- migration targets --
NO_MODULE langchain_classic.agents.initialize_agent
NO_MODULE langchain_classic.agents.create_react_agent
NO_MODULE langchain_classic.agents.create_tool_calling_agent
NO_MODULE langchain_classic.chains.RetrievalQA
NO_MODULE langchain_classic.chains.create_retrieval_chain
OK langchain_core.prompts.PromptTemplate
OK langchain_core.messages.HumanMessage
NO_MODULE langchain_openai.ChatOpenAI
NO_MODULE langchain_openai.OpenAI
OK langchain_community.vectorstores.FAISS
OK langchain_community.document_loaders.TextLoader1.4.7(仅 langchain):
installed: langchain=1.4.7, langchain-core=1.7.0, langchain-classic=-, langchain-community=-, langchain-text-splitters=-
NO_ATTR langchain.agents.initialize_agent
NO_ATTR langchain.agents.AgentExecutor
NO_ATTR langchain.agents.create_tool_calling_agent
NO_ATTR langchain.agents.create_react_agent
OK langchain.agents.create_agent
NO_MODULE langchain.chains.LLMChain
NO_MODULE langchain.chains.RetrievalQA
NO_MODULE langchain.chains.create_retrieval_chain
NO_MODULE langchain.memory.ConversationBufferMemory
NO_MODULE langchain.prompts.PromptTemplate
NO_MODULE langchain.schema.Document
NO_MODULE langchain.text_splitter.RecursiveCharacterTextSplitter
OK langchain.chat_models.init_chat_model
NO_ATTR langchain.chat_models.ChatOpenAI
NO_MODULE langchain.llms.OpenAI
NO_MODULE langchain.vectorstores.FAISS
NO_MODULE langchain.document_loaders.TextLoader
OK langchain.tools.tool
OK langchain_core.prompts.ChatPromptTemplate
OK langchain_core.documents.Document
NO_MODULE langchain_text_splitters.RecursiveCharacterTextSplitter
NO_MODULE langchain_classic.agents.AgentExecutor
NO_MODULE langchain_classic.chains.LLMChain
NO_MODULE langchain_classic.memory.ConversationBufferMemory
OK langgraph.prebuilt.create_react_agent
-- migration targets --
NO_MODULE langchain_classic.agents.initialize_agent
NO_MODULE langchain_classic.agents.create_react_agent
NO_MODULE langchain_classic.agents.create_tool_calling_agent
NO_MODULE langchain_classic.chains.RetrievalQA
NO_MODULE langchain_classic.chains.create_retrieval_chain
OK langchain_core.prompts.PromptTemplate
OK langchain_core.messages.HumanMessage
OK langchain_openai.ChatOpenAI
OK langchain_openai.OpenAI
NO_MODULE langchain_community.vectorstores.FAISS
NO_MODULE langchain_community.document_loaders.TextLoader1.4.7 + 兼容层:
installed: langchain=1.4.7, langchain-core=1.7.0, langchain-classic=1.0.8, langchain-community=0.4.2, langchain-text-splitters=1.1.3
NO_ATTR langchain.agents.initialize_agent
NO_ATTR langchain.agents.AgentExecutor
NO_ATTR langchain.agents.create_tool_calling_agent
NO_ATTR langchain.agents.create_react_agent
OK langchain.agents.create_agent
NO_MODULE langchain.chains.LLMChain
NO_MODULE langchain.chains.RetrievalQA
NO_MODULE langchain.chains.create_retrieval_chain
NO_MODULE langchain.memory.ConversationBufferMemory
NO_MODULE langchain.prompts.PromptTemplate
NO_MODULE langchain.schema.Document
NO_MODULE langchain.text_splitter.RecursiveCharacterTextSplitter
OK langchain.chat_models.init_chat_model
NO_ATTR langchain.chat_models.ChatOpenAI
NO_MODULE langchain.llms.OpenAI
NO_MODULE langchain.vectorstores.FAISS
NO_MODULE langchain.document_loaders.TextLoader
OK langchain.tools.tool
OK langchain_core.prompts.ChatPromptTemplate
OK langchain_core.documents.Document
OK langchain_text_splitters.RecursiveCharacterTextSplitter
OK langchain_classic.agents.AgentExecutor
OK langchain_classic.chains.LLMChain
OK langchain_classic.memory.ConversationBufferMemory
OK langgraph.prebuilt.create_react_agent
-- migration targets --
OK langchain_classic.agents.initialize_agent
OK langchain_classic.agents.create_react_agent
OK langchain_classic.agents.create_tool_calling_agent
OK langchain_classic.chains.RetrievalQA
OK langchain_classic.chains.create_retrieval_chain
OK langchain_core.prompts.PromptTemplate
OK langchain_core.messages.HumanMessage
OK langchain_openai.ChatOpenAI
OK langchain_openai.OpenAI
OK langchain_community.vectorstores.FAISS
OK langchain_community.document_loaders.TextLoader结果与你的环境不一致时的排障
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 同一个符号在你的环境里显示“可用”,表里是“模块不存在” | 你的环境多装了某个包(例如已经装了 langchain-classic) | 先用 pip list 对照上文各环境的包与版本,再判断是否可比 |
| 表里“可用”,你的环境里“名称已移除” | 你的 langchain 版本更新,名称在后续版本被移除 | 用 pip show langchain 查版本,重新运行脚本得到你自己的矩阵 |
| 导入时出现弃用警告 | 本页脚本关闭了警告 | 去掉 warnings.simplefilter("ignore") 重新运行,警告文字会指出推荐的新位置 |
升级任何一个相关包(langchain、langchain-core、langchain-classic、langchain-community)之后,都建议重新运行一次脚本;它只依赖标准库,不需要联网或 API Key,也没有任何会修改环境的操作,所以可以放心加进 CI。
相关阅读
- 要按步骤迁移并保留回滚点,读LangChain v1 迁移 Runbook;
- 要判断迁移后该用
create_agent还是直接写图,读Agent 与 LangGraph 选型。
来源
- LangChain v1 migration guide (opens in a new tab):包精简、
langchain-classic、create_agent的说明; - langchain(PyPI) (opens in a new tab)、langchain-classic(PyPI) (opens in a new tab):包与版本信息。
以上来源均于 2026-10-25 核对。矩阵数据来自站点仓库 labs/langchain-v1-migration/ 的实际运行。