Open1
LLM で JSON 作らせたときにバリデーションに引っかかるようなケースで上手いことフォールバックする方法

背景
Pydantic を使って JSON Schema を作成して、それを LLM へ与えるプロンプトに記載することで
class Table(BaseModel):
foo: int
という型にあう出力を LLM から得ようとすることがあるかと思います。このときに LLM が
{
"foo": "123"
}
などと出力してきて、型が異なるためバリデーションエラーが起こってしまう場合の対処法を GitHub Gist に書き留めました。
GitHub Gist
Structured Outputs
これが使えるときはこれを使えばそもそもこのような問題は起こらない。しかし、DeepseekV3 や Gemini だと対応していなかったり、対応状況が実用に耐えるレベルでなかったりするので、そのときはこの方法でフォールバックさせると良いかも。
参考