Skip to main content
Open on GitHub

迁移

LangChain v0.2 于 2024 年 5 月发布。此版本包含许多重大更改和弃用项。本文档包含升级到 0.2.x 的指南。

迁移

本文档将帮助您将代码升级到 LangChain 0.2.x。为了准备迁移,我们首先建议您执行以下步骤:

  1. 安装 langchain-core、langchain 的 0.2.x 版本,并升级您可能正在使用的其他包到最新版本(例如 langgraph、langchain-community、langchain-openai 等)。
  2. 验证您的代码在新软件包上是否正常运行(例如,单元测试是否通过)。
  3. 安装最新版本的 langchain-cli,并使用该工具替换代码中使用的旧导入。 (请参阅下面的说明。)
  4. 手动解决任何剩余的弃用警告。
  5. 重新运行单元测试。
  6. 如果您正在使用 astream_events,请查看如何迁移到 astream events v2

升级到新的导入

我们创建了一个工具来帮助迁移您的代码。此工具仍处于测试阶段,可能无法涵盖所有情况,但 我们希望它能帮助您更快地迁移代码。

迁移脚本有以下限制:

  1. 它仅限于帮助用户从旧导入迁移到新导入。它不帮助解决其他弃用项。
  2. 它无法处理涉及 as 的导入。
  3. 新导入始终放置在全局作用域中,即使被替换的旧导入位于某个局部作用域(例如函数体)中。
  4. 它可能会遗漏一些已弃用的导入。

以下是迁移脚本可以自动帮助应用的导入更改示例:

来自的包到的包已弃用的导入新导入
langchainlangchain-communityfrom langchain.vectorstores import InMemoryVectorStorefrom langchain_community.vectorstores import InMemoryVectorStore
langchain-communitylangchain_openaifrom langchain_community.chat_models import ChatOpenAIfrom langchain_openai import ChatOpenAI
langchain-communitylangchain-corefrom langchain_community.document_loaders import Blobfrom langchain_core.document_loaders import Blob
langchainlangchain-corefrom langchain.schema.document import Documentfrom langchain_core.documents import Document
langchainlangchain-text-splittersfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain_text_splitters import RecursiveCharacterTextSplitter

安装

pip install langchain-cli
langchain-cli --version # <-- 确保版本至少为 0.0.22

用法

鉴于迁移脚本并非完美,您应该确保首先备份您的代码(例如,使用 git 等版本控制)。

您需要运行两次迁移脚本,因为它每次只应用一个导入替换。

例如,假设您的代码仍然使用 from langchain.chat_models import ChatOpenAI

第一次运行后,您将得到:from langchain_community.chat_models import ChatOpenAI 第二次运行后,您将得到:from langchain_openai import ChatOpenAI

# 第一次运行
# 将替换 from langchain.chat_models import ChatOpenAI
langchain-cli migrate --diff [path to code] # 预览
langchain-cli migrate [path to code] # 应用

# 第二次运行以应用更多导入替换
langchain-cli migrate --diff [path to code] # 预览
langchain-cli migrate [path to code] # 应用

其他选项

# 查看帮助菜单
langchain-cli migrate --help
# 在不应用的情况下预览更改
langchain-cli migrate --diff [path to code]
# 在包含 ipython notebooks 的代码上运行
# 应用所有导入更新,但不包括从 langchain 到 langchain-core 的更新
langchain-cli migrate --disable langchain_to_core --include-ipynb [path to code]