品質ゲートを通過した後の問い
Stage 1 / Stage 2 の品質ゲートは「出力が最低条件を満たすか」「以前より悪くなっていないか」を見ます。しかしこの 2 つをクリアしても、「リリースしてよいか」には答えられません。
品質ゲートは欠陥の有無を測るものですが、リリース判断にはさらに 2 つの問いが必要です。ハルシネーションや法的リスクはゼロか? そして有意な改善があるか?
この 3 つの問いにまとめて答えるのが release-gate(リリースゲート)です。
3 シグナルの構造
| シグナル | 成果物 CSV | 合格条件 |
|---|---|---|
| ① ハルシネーション | judge_LLMJudge.csv |
predicted_label に NG が 0 件 |
| ② 法的配慮 | judge_BayesJudge.csv |
predicted_label に NG が 0 件 |
| ③ 品質スコア | quality_eval.csv |
有意な改善軸が 1 つ以上 & 有意な悪化軸が 0 |
①② は3 種の Judge パターンで生成した CSV です。③ はquality-eval が生成した採点結果です。release-gate はこの 3 つの CSV を読み込んで判定します。
設計思想:LLM を呼ばない
リリースゲートの判定フェーズでは LLM を一切呼びません。事前に生成された CSV を読むだけです。
「成果物を作るフェーズ」と「判定するフェーズ」を分離することで、判定が高速・冪等になります。同じ CSV があれば何度実行しても同じ結果が返ります。また判定ロジックが確率的でないため、CI でも安定して使えます。
注意点として、判定前に各 CSV を必ず最新化することが鉄則です。CSV は追記式のため、古い実行の行が残っていると判定が古いデータに汚染されます。
①② は絶対条件、③ は統計的改善
①② の合格条件は「NG が 0 件」という絶対条件です。ハルシネーションや法的リスクが 1 件でも残っていれば即ブロックします。「だいたい良い」では足りません。
③ は「有意な悪化軸が 0」かつ「有意な改善軸が 1 つ以上」という条件です。有意かどうかは quality-eval の信頼区間で判定されます。--repeat 1(既定値)では信頼区間が計算できないため常にブロックされます。--repeat N(N >= 2)を指定することが必須です。
実行フロー
# ① 成果物を最新化する(この順序は問わない)
docker compose run --rm sim --judge llm # → judge_LLMJudge.csv
docker compose run --rm sim --judge bayes # → judge_BayesJudge.csv
docker compose run --rm sim --quality-eval --repeat 5 # → quality_eval.csv
# ② 判定する
docker compose run --rm sim --release-gate
# exit 0: 3 シグナルすべて合格 → RELEASE
# exit 2: いずれか不合格 → BLOCK
CI では exit 0 のみマージを許可し、exit 2 でブロックします。
まとめ
- 品質ゲートの通過だけではリリース判断に足りない。ハルシネーション・法的配慮・品質改善の 3 シグナルが必要
- release-gate は事前生成 CSV を読むだけで LLM を呼ばず、高速・冪等に判定する
- ①② ハルシネーション・法的配慮は「NG 0 件」の絶対条件、③ 品質スコアは信頼区間による統計的改善の確認
--repeat N(N >= 2)なしでは ③ が機能しないため、quality-eval の実行時に必ず指定する- 判定前に CSV を最新化するのが鉄則。古いデータが混入すると判定が汚染される
関連記事