生成AIに決まった形で返させても、前置きや囲みが付いてくることがあります。そのままでは読み込めません。
崩れ方を混ぜた500件を処理しました。囲みと前置きを外すだけで、読めた件数が387件から487件になります。それでも52件は残ります。
崩れ方を混ぜた500件を処理しました。手前の処理を1つ足すだけで、救える件数が大きく変わります。
スキーマ検証の前に何が起きるのかを、実際に走らせて測りました。用意したのは生成AIが返しがちな崩れ方を混ぜた500件です。
崩れ方は7種類です。囲みが付く52件、前置きが付く48件のほか、型が違う31件、項目が足りない21件、途中で切れた13件を混ぜました。
const strip = (t) => {
let s = t.trim();
const fence = s.match(/```(?:json)?\s*([\s\S]*?)```/);
if (fence) s = fence[1].trim();
const first = s.indexOf('{');
const last = s.lastIndexOf('}');
if (first >= 0 && last > first) s = s.slice(first, last + 1);
return s;
};
受け取り方 そのまま読める 形が合っている そのまま読む 387 / 500 335 / 500 囲みと前置きを外す 487 / 500 435 / 500 外したあとに、まだ形が合わないもの 型が違う 31件 項目が足りない 21件 閉じていない 13件
上の表を見てください。そのまま読み込むと387件だったものが、囲みと前置きを外すと487件になりました。
差の100件は、囲みと前置きが付いていたものです。中身は正しいのに、そのままでは読み込めませんでした。
この100件を失敗として数えていると、指示の書き方を直そうとして時間を使うことになります。手前の処理で片付く部分です。
外しても救えないものが65件あります。型が違う31件、項目が足りない21件、途中で切れた13件です。
この3つは中身そのものの問題です。指示の書き方や、出力の形を強制する仕組みで減らすことになります。
手前で救えるものと、救えないものを分ける。
The JSON validator checks if the JSON documents conform to the schema.原文JSON Schema「What is JSON Schema?」 この内容の有効期限2027-02-18
受け取ったデータが、決めた形になっているかを機械で確かめます。人が目で見る代わりの仕組みです。
スキーマ検証は、受け取ったデータが決めた形になっているかを機械で確かめる仕組みです。
形を書き表す言い方はいくつかありますが、広く使われているものの説明では既存のデータの構造・制約・型を記述できるとされています。
書き表しておけば、あとは機械が突き合わせます。同じ説明でも検証器が、その文書が定義に沿っているかを調べると述べられています。
生成AIの出力は毎回同じ形になるとは限りません。同じ指示でも、囲みが付いたり付かなかったりします。
前の節の計測でも、崩れ方は7種類ありました。どれが来ても同じ判定ができるようにしておく必要があります。
検査の手前に、囲みと前置きを外す処理を置いてください。前の節ではこれだけで100件が救えました。
外す処理は検査ではありません。読み込める形にそろえるだけです。ここを分けておくと、どちらの問題かがはっきりします。
崩れ方の割合はこちらで置いた値です。実際の割合は、使うモデルと指示の書き方で変わります。まず実際に返ってきた出力を50件そのまま保存して、崩れ方を数えてください。手前で救える種類と、そうでない種類が分かれます。
JSON Schema allows developers to describe the structure, constraints, and data types of existing JSON data.原文JSON Schema「What is JSON Schema?」 この内容の有効期限2027-02-18
形が正しいことと、中身が正しいことは別です。検査を通っても、業務として成り立たない値は入ってきます。
スキーマ検証を通ったからといって、中身が正しいとは限りません。落とせないものがはっきりしています。
前の節の計測では、余計な項目が付いた23件が検査に落ちませんでした。必要な項目がそろっているためです。
落としたいなら、決めた項目以外を認めないと明示する必要があります。既定では通ります。
金額が負でも、型としては数値なので通ります。日数が0でも同じです。
この種類を落とすには、業務の決まりを別に書く必要があります。詳しくは出力バリデーションの記事で扱っています。
いちばん落とせないのは書いてある内容が正しいかどうかです。申請番号の形が合っていても、存在しない番号かもしれません。
スキーマ検証はデータの構造と制約を定義するための宣言的な言語です。構造の話であって、事実の話ではありません。
形の検査で落ちるものと、落ちないものを知っておく。
JSON Schema is a declarative language for defining structure and constraints for JSON data.原文JSON Schema「What is JSON Schema?」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る