決定モデル(System 1)の性能を最大化する評価基準(ルーブリック)の設計・記述ガイドライン。
生成型LLM(GPT-4等)と決定モデル(Jev)では、プロンプトの効き方が根本的に異なります。Jevはテキスト推論を行わず、基準との適合度をダイレクトに判定するため、以下の原則を守ることが精度向上の鍵となります。
Score プリミティブの criteria は、必ず「最悪の状態(インデックス0)」から「最善の状態(最後のインデックス)」へと段階的に単調増加するように並べます。Jevはこの順序を前提として確率加重平均(期待スコア)を計算します。
「良い回答」「素晴らしい回答」のような主観的表現は避け、客観的かつ排他的な条件を明記します。
例:「引用文にない独自事実が1点以上含まれる(Level 0)」「引用文の範囲内だが重要な前提が抜けている(Level 1)」「引用文と完全に整合し、前提も満たしている(Level 2)」
評価対象の state には不要なHTMLタグ、ログ情報、無関係なプロンプト履歴を含めず、判定に必要なキー(例: context, query, answer)だけに絞り込んで構造化して渡します。
| 評価の観点 | 推奨プリミティブ | 設計例 |
|---|---|---|
| 致命的エラー・規約違反・有無の検査 | Noul | ハルシネーション(嘘の混入)が検出されたか否か |
| 欠陥の種別・原因のカテゴリ分類 | Choice | 事実不一致 / 質問誤解 / 敬語不適切 / 情報過多 |
| 度合い・総合品質・適合度の多段階評価 | Score | 回答の忠実度(0: 捏造, 1: 疑義あり, 2: 完璧に忠実) |
from typesafe_sdk import Score, Noul
# 1. 忠実度(Faithfulness: 与えられた文脈以外の捏造がないか)
faithfulness_rubric = Score(
instructions="回答が提供されたコンテキスト情報にのみ基づいているかを評価せよ",
criteria=[
"重大なハルシネーションがあり、コンテキストに存在しない虚偽事実を述べている",
"大筋はコンテキストに基づくが、一部に文脈から支持されない推測や拡大解釈が含まれる",
"回答の全ての記述がコンテキストの情報によって完全に裏付けられている"
]
)
# 2. 回答の有用性(Answer Relevance: 質問に答えているか)
relevance_rubric = Score(
instructions="回答がユーザーの質問に対して的確に答えているかを評価せよ",
criteria=[
"質問の意図を完全に外しており、知りたい情報が一切含まれていない",
"質問の一部に触れているが、核心となる情報が欠落している",
"質問の意図を正確に捉え、過不足なく的確に回答している"
]
)