PydanticOutputParserでPydanticの型エラーが出る場合のメモ。
状況
- LangChainのPydanticOutputParserを使っている。
- Pydanticで定義した型のクラスを渡している。
- mypyでチェックすると、型エラーが出ている。
発生したメッセージ
Value of type variable "T" of "PydanticOutputParser" cannot be "BaseModel"
原因
LangChainのPydanticOutputParserは、Pydanticのバージョン1を前提としている様子
具体的なコードとしてはこの辺にコメントがある。
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, ...