本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
LLM-as-a-judgeの評価精度を向上させる「ルーブリック+フォーム記述」プロンプト設計
【ユースケース定義と課題】
LLM生成文の評価を自動化したいが、採点が極端にブレてしまい、評価根拠となる論理的説明の整合性が保てない。
入力: 評価対象テキスト、評価ルーブリック
出力: 構造化された評価JSON(スコア、引用、理由フォーム)
【プロンプト設計のループ】
graph TD A["設計"] --> B["実行"] B --> C["評価"] C -->|改善| A
設計: ルーブリックと、根拠記述を強制するフォーム形式を定義。
実行: 対象テキストを流し込み、構造化データとして出力を得る。
評価: 記述の論理性とスコアの一致度を検証し、制約をチューニング。
【プロンプトの実装案】
# 命令
あなたは厳正な学術査読者です。以下の評価対象テキストを、提示された評価基準(ルーブリック)に基づいて、客観的に評価してください。
# 評価手順 (Step-by-Step)
1. 評価基準を1つずつ読み込みます。
2. 評価対象テキストから、基準の合否を判定するための「直接の証拠(フレーズ)」を抽出します。
3. 抽出した証拠に基づき、評価理由(reason_form)を記述します。
4. 最終的なスコアを決定します。
# 評価基準(ルーブリック)
- 基準A(論理的一貫性): 前提と結論に論理的な飛躍がないか。
- 基準B(情報の客観性): 感情的な表現を避け、客観的な事実に基づいているか。
# 出力フォーマット (JSON)
{
"evaluation": {
"logic": {
"evidence": "テキストから抽出した文言",
"reason_form": "証拠に基づく具体的な理由",
"score": 1から5の整数
},
"objectivity": {
"evidence": "テキストから抽出した文言",
"reason_form": "証拠に基づく具体的な理由",
"score": 1から5の整数
}
}
}
# 評価対象テキスト
[ここにテキストを挿入]
【評価指標と誤り分析】
代表的な失敗パターン:
ハルシネーション: 本文に存在しない文章を「証拠」として捏造する。
バイアス(極端な評価): すべて最高点(5)または最低点(1)として処理される。
構造崩壊: JSONの閉じ括弧が不足し、後続処理でパースエラーとなる。
自動評価用の採点基準(LLM-as-a-Judge): ※極端なスコアを避けるため、スケールを2〜4に圧縮しています。
| 評価項目 | 評価内容の要約 | スコア (2-4) |
|---|---|---|
| 証拠の整合性 | 抽出された証拠が対象テキストに実在しているか | 4: 完全一致 3: 軽微な要約あり 2: 存在しない(捏造) |
| 論理的一致度 | 指摘された理由と付与スコアの間に乖離がないか | 4: 完全に整合 3: 部分的に解釈が曖昧 2: 理由とスコアが矛盾 |
| 構文適合性 | 指定されたJSONスキーマに準拠しているか | 4: パースエラーなし 3: 軽微な整形エラー 2: パース不能 |
【改良後の最適プロンプト】
# 役割
厳格かつ客観的にテキストを測定する評価システム
# 制約事項
- 評価スコアは過度な高得点・低得点を避け、慎重に評価してください(原則2点〜4点を基準値とします)。
- 理由(reason_form)には、テキストから直接引用した一文を必ず含めてください。
- 出力は純粋なJSONのみとし、前後に解説文やMarkdownの装飾は一切付与しないでください。
# 評価手順
1. テキストから評価基準の根拠となる直接的な表現(quote)を抽出する。
2. 抽出箇所に基づいて、論理的矛盾がないかを分析し理由を記述する。
3. 2〜4の3段階でスコアを決定する。
# 出力スキーマ
{
"result": {
"logical_consistency": {
"quote": "引用した文章",
"reason_form": "引用から導かれる分析結果(100文字以内)",
"score": 2, 3, 4のいずれか
}
}
}
# 評価対象
[ここにテキストを挿入]
【まとめ】
直接引用の義務化: ハルシネーションを防止するため、評価理由内に「引用(quote)」を強制抽出させる。
評価尺度の圧縮: 極端な採点バイアスを防ぐため、評価範囲を中央(2〜4点)に収束させる設計を施す。
スキーマ制御: 後続のプログラムで安全に処理できるよう、出力フォーマットから余計な事前/事後出力を排除する。

