📦
OpenAI JSON modeのprompt/validationはTypeScriptの型定義だけで十分だよという話
TL;DR
- Typia と OpenAI API の組み合わせはとても良い。
はじめに
2ヶ月ほど前にこのような記事を拝読しました。
この記事の内容はざっくり以下のようなものでした。
- OpenAI の API や Claude の API の JSON mode での validation は大変
- Validation のために Zod を用いて型を定義する
- Prompt に Schema を含めるために、Zod Schema からTypeScriptの型を逆算して生成する(黒魔術)
とても面白い記事でした。
特に、Zod Schema から TypeScript の型を逆算する部分はとても興味深かったのです。
しかし同時に、
🤖 ... {Zod での黒魔術、あまりにも大変そうだな}
🤖 ... {TypeScriptで型定義を書いてそのまま使えばいいのに}
という感想を持ちました。
というわけで実践してみました。
実際のコード
シンプルなので、一つずつ解説していきます。
- 欲しい情報の構造を TypeScript の Type または Interface で定義
- 上で定義した Type を TypeScript のコードとして import する。同時に Type を定義したファイルを text として読み込む。
- OpenAI API を JSON mode で叩く。その際に、TypeScript の Type で定義した構造を prompt に含める。
- 上で定義した Type を
typia.json.assertParse
[1] に generics として渡し、openai からの response を parse & validate する。
これで、TypeScript の型定義を書いておけば、prompt 作成から response の validation までを一撃で行うことができます。
入力したテキスト、出力結果はレポジトリに含まれているので、ぜひご覧ください。
まとめ
TypeScript の型定義を書いておけば、prompt 作成から response の validation までを一撃で行うことができるよ
参考資料
Discussion