LangChain v0.3
最后更新时间:2024年9月16日
更新内容
- 所有包都已从内部的 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-core 0.0 或 0.1,我们建议您先 升级到 0.2。
如果您正在使用 langgraph,请升级到 langgraph>=0.2.20,<0.3。此操作适用于所有基础包的 0.2 或 0.3 版本。
以下是所有已发布的包的完整列表,以及我们建议您升级版本约束的内容。
任何现在需要 langchain-core 0.3 的包都进行了小版本更新。
任何现在同时兼容 langchain-core 0.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。 - LangChain 组件由于内部从 Pydantic v1 切换到 v2 而产生了一些副作用。我们列出了以下一些常见情况及推荐解决方案。
迁移到 Pydantic 2 时的常见问题
1. 不要使用 langchain_core.pydantic_v1 命名空间
将所有对 langchain_core.pydantic_v1 或 langchain.pydantic_v1 的使用替换为直接从 pydantic 导入。
例如,
from langchain_core.pydantic_v1 import BaseModel
to:
from pydantic import BaseModel
这可能需要您对Pydantic代码进行额外更新,因为Pydantic 2中有许多破坏性变更。有关如何将您的代码从Pydantic 1升级到2的说明,请参见Pydantic迁移。
2. 将Pydantic对象传递给LangChain API
使用以下API的用户:
BaseChatModel.bind_toolsBaseChatModel.with_structured_outputTool.from_functionStructuredTool.from_function
应确保向这些API传递的是Pydantic 2对象,而不是Pydantic 1对象(通过pydantic 2的pydantic.v1命名空间创建的对象)。
虽然某些API可能接受 v1 对象,但建议用户使用 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 来应用代码修改。
安装
pip install -U langchain-cli
langchain-cli --version # <-- Make sure the version is at least 0.0.31
使用
由于迁移脚本并不完美,你应该先确保你的代码已有备份(例如,使用版本控制工具,如 git)。
langchain-cli 将处理 LangChain 0.3 中引入的 langchain_core.pydantic_v1 废弃功能,以及更早的废弃功能(例如 from langchain.chat_models import ChatOpenAI 应该替换为 from langchain_openai import ChatOpenAI),
您需要运行迁移脚本 两次,因为它每次只应用一个导入替换。
例如,假设您的代码仍在使用旧的导入 from 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]