matobaの備忘録

育児しながら働くあるエンジニアの記録

PydanticOutputParserでPydanticの型エラーが出る場合

PydanticOutputParserでPydanticの型エラーが出る場合のメモ。

状況

  • LangChainのPydanticOutputParserを使っている。
  • Pydanticで定義した型のクラスを渡している。
  • mypyでチェックすると、型エラーが出ている。

発生したメッセージ

Value of type variable "T" of "PydanticOutputParser" cannot be "BaseModel"

原因

LangChainのPydanticOutputParserは、Pydanticのバージョン1を前提としている様子

具体的なコードとしてはこの辺にコメントがある。

github.com

Attention: To avoid potential compatibility issues, it's recommended to use
   pydantic <2 or leverage the v1 namespace in pydantic >= 2.

とりあえず、pydanticの2で型を指定して渡せば型チェックは通る。(それでいいかはおいといて)

pydanticのバージョン2にもv1のネームスペースがありそちらを参照できる。

from pydantic.v1 import BaseModel, ...