LangChain 版本 v0.3
最后更新日期:09.16.24
更改内容
- 所有软件包都已从 Pydantic 1 内部升级到 Pydantic 2。所有包都完全支持在用户代码中使用 Pydantic 2,而无需像
langchain_core.pydantic_v1或pydantic.v1. - Pydantic 1 将不再受支持,因为它已于 2024 年 6 月结束其生命周期。
- Python 3.8 将不再受支持,因为其生命周期将于 2024 年 10 月结束。
这些是唯一的重大更改。
新增功能
在 0.2.x 的开发过程中添加了以下功能:
- 将更多集成从
langchain-community到他们自己的langchain-x包。这是一个非破坏性的更改,因为遗留的实现被保留在langchain-community并标记为已弃用。这使我们能够更好地管理这些集成的依赖关系、测试和版本控制。您可以在 API 参考中查看所有最新的集成包。 - 简化工具定义和使用。在此处阅读更多内容。
- 添加了用于与聊天模型交互的实用程序:通用模型构造函数、速率限制器、消息实用程序、
- 添加了调度自定义事件的功能。
- 修改了集成文档和 API 参考。在此处阅读更多内容。
- 将许多遗留链标记为已弃用,并为所有这些链添加了迁移指南。这些计划在
langchain1.0.0. 在此处查看已弃用的链和相关迁移指南。
如何更新您的代码
如果您使用的是langchain / langchain-community / langchain-core0.0 或 0.1,建议您先升级到 0.2。
如果您使用的是langgraph,升级到langgraph>=0.2.20,<0.3.这将适用于所有基础包的 0.2 或 0.3 版本。
以下是已发布的所有软件包的完整列表,以及我们建议将版本约束升级到的目标。
现在需要的任何软件包langchain-core0.3 有一个小版本更新。
现在与两者兼容的任何软件包langchain-core0.2 和 0.3 有一个补丁版本更新。
您可以使用langchain-cli自动更新已弃用的导入。
CLI 将处理 LangChain 0.0.x 和 LangChain 0.1 中引入的已弃用导入的更新,如
以及更新langchain_core.pydantic_v1和langchain.pydantic_v1进口。
基础包
| 包 | 最近的 | 建议的约束 |
|---|---|---|
| langchain | 0.3.0 | >=0.3,<0.4 |
| langchain-community | 0.3.0 | >=0.3,<0.4 |
| langchain-text-splitters | 0.3.0 | >=0.3,<0.4 |
| langchain-core | 0.3.0 | >=0.3,<0.4 |
| langchain-experimental | 0.3.0 | >=0.3,<0.4 |
下游软件包
| 包 | 最近的 | 建议的约束 |
|---|---|---|
| langgraph | 0.2.20 | >=0.2.20,<0.3 |
| langserve | 0.3.0 | >=0.3,<0.4 |
集成包
| 包 | 最近的 | 建议的约束 |
|---|---|---|
| langchain-ai21 | 0.2.0 | >=0.2,<0.3 |
| langchain-aws | 0.2.0 | >=0.2,<0.3 |
| langchain-anthropic | 0.2.0 | >=0.2,<0.3 |
| langchain-astradb | 0.4.1 | >=0.4.1,<0.5 |
| langchain-azure-dynamic-sessions | 0.2.0 | >=0.2,<0.3 |
| langchain-box | 0.2.0 | >=0.2,<0.3 |
| langchain-chroma | 0.1.4 | >=0.1.4,<0.2 |
| langchain-cohere | 0.3.0 | >=0.3,<0.4 |
| langchain-elasticsearch | 0.3.0 | >=0.3,<0.4 |
| langchain-exa | 0.2.0 | >=0.2,<0.3 |
| langchain-fireworks | 0.2.0 | >=0.2,<0.3 |
| langchain-groq | 0.2.0 | >=0.2,<0.3 |
| langchain-google-community | 2.0.0 | >=2,<3 |
| langchain-google-genai | 2.0.0 | >=2,<3 |
| langchain-google-vertexai | 2.0.0 | >=2,<3 |
| langchain-huggingface | 0.1.0 | >=0.1,<0.2 |
| langchain-ibm | 0.3.0 | >=0.3,<0.4 |
| langchain-milvus | 0.1.6 | >=0.1.6,<0.2 |
| langchain-mistralai | 0.2.0 | >=0.2,<0.3 |
| langchain-mongodb | 0.2.0 | >=0.2,<0.3 |
| langchain-nomic | 0.1.3 | >=0.1.3,<0.2 |
| langchain-nvidia | 0.3.0 | >=0.3,<0.4 |
| langchain-ollama | 0.2.0 | >=0.2,<0.3 |
| langchain-openai | 0.2.0 | >=0.2,<0.3 |
| langchain-pinecone | 0.2.0 | >=0.2,<0.3 |
| langchain-postgres | 0.0.13 | >=0.0.13,<0.1 |
| langchain-prompty | 0.1.0 | >=0.1,<0.2 |
| langchain-qdrant | 0.1.4 | >=0.1.4,<0.2 |
| langchain-redis | 0.1.0 | >=0.1,<0.2 |
| langchain-sema4 | 0.2.0 | >=0.2,<0.3 |
| langchain-together | 0.2.0 | >=0.2,<0.3 |
| langchain-unstructured | 0.1.4 | >=0.1.4,<0.2 |
| langchain-upstage | 0.3.0 | >=0.3,<0.4 |
| langchain-voyageai | 0.2.0 | >=0.2,<0.3 |
| langchain-weaviate | 0.0.3 | >=0.0.3,<0.1 |
更新到最新版本的包后,您可能需要解决因内部从 Pydantic v1 切换到 Pydantic v2 而引起的以下问题:
- 如果您的代码除了 LangChain 之外还依赖于 Pydantic,则需要将 pydantic 版本约束升级为
pydantic>=2,<3.如果您使用 pydantic v1,请参阅 Pydantic 的迁移指南,以帮助将非 LangChain 代码迁移到 Pydantic v2。 - 从 Pydantic v1 到 v2 的内部切换会给 LangChain 组件带来许多副作用。我们在下面列出了一些常见情况以及推荐的解决方案。
过渡到 Pydantic 2 时的常见问题
1. 请勿使用langchain_core.pydantic_v1Namespace
替换langchain_core.pydantic_v1或langchain.pydantic_v1跟
直接导入自pydantic.
例如
from langchain_core.pydantic_v1 import BaseModel
自:
from pydantic import BaseModel
鉴于 Pydantic 2 中存在许多重大更改,这可能需要您对 Pydantic 代码进行额外更新。请参阅 Pydantic 迁移,了解如何将代码从 Pydantic 1 升级到 Pydantic 2。
2. 将 Pydantic 对象传递给 LangChain API
使用以下 API 的用户:
BaseChatModel.bind_toolsBaseChatModel.with_structured_outputTool.from_functionStructuredTool.from_function
应该确保他们将 Pydantic 2 对象传递给这些 API,而不是
Pydantic 1 对象(通过pydantic.v1Pydantic 2 的命名空间)。
而v1对象可能会被其中一些 API 接受,建议用户
使用 Pydantic 2 对象以避免将来出现问题。
3. 对 LangChain 模型进行子类化
来自现有 LangChain 模型的任何子类(例如BaseTool,BaseChatModel,LLM)
应该升级以使用 Pydantic 2 功能。
例如,任何依赖于 Pydantic 1 功能的用户代码(例如validator) 应
更新为 Pydantic 2 等效项(例如field_validator) 以及对pydantic.v1,langchain_core.pydantic_v1,langchain.pydantic_v1应该被替换
导入自pydantic.
from pydantic.v1 import validator, Field # if pydantic 2 is installed
# from pydantic import validator, Field # if pydantic 1 is installed
# from langchain_core.pydantic_v1 import validator, Field
# from langchain.pydantic_v1 import validator, Field
class CustomTool(BaseTool): # BaseTool is v1 code
x: int = Field(default=1)
def _run(*args, **kwargs):
return "hello"
@validator('x') # v1 code
@classmethod
def validate_x(cls, x: int) -> int:
return 1
应更改为:
from pydantic import Field, field_validator # pydantic v2
from langchain_core.pydantic_v1 import BaseTool
class CustomTool(BaseTool): # BaseTool is v1 code
x: int = Field(default=1)
def _run(*args, **kwargs):
return "hello"
@field_validator('x') # v2 code
@classmethod
def validate_x(cls, x: int) -> int:
return 1
CustomTool(
name='custom_tool',
description="hello",
x=1,
)
4. model_rebuild()
当从 LangChain 模型进行子类化时,用户可能需要添加相关的导入 添加到文件中,然后重建模型。
您可以阅读更多关于model_rebuild 这里。
from langchain_core.output_parsers import BaseOutputParser
class FooParser(BaseOutputParser):
...
新代码:
from typing import Optional as Optional
from langchain_core.output_parsers import BaseOutputParser
class FooParser(BaseOutputParser):
...
FooParser.model_rebuild()
使用 langchain-cli 迁移
这langchain-cli可以帮助自动更新代码中已弃用的 LangChain 导入。
请注意,langchain-cli仅处理已弃用的 LangChain 导入,并且不能
帮助您将代码从 Pydantic 1 升级到 Pydantic 2。
有关 Pydantic 1 到 2 迁移本身的帮助,请参阅 Pydantic 迁移指南。
从 0.0.31 开始,langchain-cli依赖 GritQL 来应用代码 Mod。
安装
pip install -U langchain-cli
langchain-cli --version # <-- Make sure the version is at least 0.0.31
用法
鉴于迁移脚本并不完美,您应该确保首先备份您的代码(例如,使用git).
这langchain-cli将处理langchain_core.pydantic_v1在 LangChain 0.3 中也引入了弃用
作为较旧的弃用(例如from langchain.chat_models import ChatOpenAI哪个应该是from langchain_openai import ChatOpenAI),
您需要运行迁移脚本两次,因为它每次运行只应用一次导入替换。
例如,假设您的代码仍在使用旧的 importfrom langchain.chat_models import ChatOpenAI:
首次运行后,您将获得:from langchain_community.chat_models import ChatOpenAI第二次运行后,您将获得:from langchain_openai import ChatOpenAI
# Run a first time
# Will replace from langchain.chat_models import ChatOpenAI
langchain-cli migrate --help [path to code] # Help
langchain-cli migrate [path to code] # Apply
# Run a second time to apply more import replacements
langchain-cli migrate --diff [path to code] # Preview
langchain-cli migrate [path to code] # Apply
其他选项
# See help menu
langchain-cli migrate --help
# Preview Changes without applying
langchain-cli migrate --diff [path to code]
# Approve changes interactively
langchain-cli migrate --interactive [path to code]