如何在不同版本的 Pydantic 中使用 LangChain

Pydantic 是一个用于数据验证和设置管理的广泛使用的 Python 库。随着 Pydantic v2 的发布(2023 年 6 月),出现了一些重大变化,因此开发者在使用 LangChain 时需要格外注意,因为 Pydantic 1 的生命周期在 2024 年 6 月结束。本文将详细讲解如何在不同的 Pydantic 版本中使用 LangChain,并提供一些实用的代码示例。

技术背景介绍

LangChain 是一个用于构建语言模型应用程序的框架。它允许使用 Pydantic 对数据进行验证。然而,随着 Pydantic v2 的发布,其内部结构发生了变化,导致了与 Pydantic v1 的不兼容性。LangChain 将在未来版本中逐渐迁移到 Pydantic 2,目前支持使用 Pydantic v1 和 v2 的对象。

核心原理解析

LangChain 内部目前仍然使用 Pydantic v1,通过 Pydantic 2 的 v1 命名空间实现兼容。这意味着在某些情况下,开发者必须明确指定使用 v1 的类和方法,以避免混合使用 v1 和 v2 对象导致的错误。

代码实现演示

示例 1: 使用 Pydantic v1 对象(适用于 langchain-core<0.2.23

这是在旧版本的 LangChain 中使用 Pydantic v1 对象的示例:

from langchain_openai import ChatOpenAI
from pydantic.v1 import BaseModel  # 指定使用 v1 命名空间

class Person(BaseModel):
    """个人信息"""
    name: str

# 创建并配置 ChatOpenAI 模型
model = ChatOpenAI()
model = model.with_structured_output(Person)

# 调用模型
model.invoke('Bob is a person.')
示例 2: 使用 Pydantic v2 对象(适用于 langchain-core>=0.2.23

在新版的 LangChain 中,可以使用 Pydantic v1 或 v2 对象:

from langchain_openai import ChatOpenAI
from pydantic import BaseModel

class Person(BaseModel):
    """个人信息"""
    name: str

# 创建并配置 ChatOpenAI 模型
model = ChatOpenAI()
model = model.with_structured_output(Person)

# 调用模型
model.invoke('Bob is a person.')

应用场景分析

在使用 LangChain 构建工具时,确保使用正确版本的 Pydantic 对象至关重要。否则,可能会遇到不兼容问题,导致程序运行失败。对于需要生成 OpenAPI 文档的用户,请务必使用 Pydantic 1,因为 Pydantic 2 尚不支持这项功能。

实践建议

  • 如果您正使用较旧版本的 LangChain,建议继续使用 Pydantic v1 对象,直到完全支持 Pydantic v2 为止。
  • 在子类化 LangChain 模型或工具时,应使用 Pydantic v1 的原语,避免与 v2 混用。
  • 如果需要 OpenAPI 文档,建议暂时使用 Pydantic v1 或手动创建 API 路由。

如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值