<p><!-- style_prompt -->本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">LLM-as-a-judgeの評価精度を向上させる「ルーブリック+フォーム記述」プロンプト設計</h1>
<h2 class="wp-block-heading">【ユースケース定義と課題】</h2>
<p>LLM生成文の評価を自動化したいが、採点が極端にブレてしまい、評価根拠となる論理的説明の整合性が保てない。</p>
<ul class="wp-block-list">
<li><p><strong>入力</strong>: 評価対象テキスト、評価ルーブリック</p></li>
<li><p><strong>出力</strong>: 構造化された評価JSON(スコア、引用、理由フォーム)</p></li>
</ul>
<h2 class="wp-block-heading">【プロンプト設計のループ】</h2>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["設計"] --> B["実行"]
B --> C["評価"]
C -->|改善| A
</pre></div>
<ul class="wp-block-list">
<li><p><strong>設計</strong>: ルーブリックと、根拠記述を強制するフォーム形式を定義。</p></li>
<li><p><strong>実行</strong>: 対象テキストを流し込み、構造化データとして出力を得る。</p></li>
<li><p><strong>評価</strong>: 記述の論理性とスコアの一致度を検証し、制約をチューニング。</p></li>
</ul>
<h2 class="wp-block-heading">【プロンプトの実装案】</h2>
<div class="codehilite">
<pre data-enlighter-language="generic"># 命令
あなたは厳正な学術査読者です。以下の評価対象テキストを、提示された評価基準(ルーブリック)に基づいて、客観的に評価してください。
# 評価手順 (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の整数
}
}
}
# 評価対象テキスト
[ここにテキストを挿入]
</pre>
</div>
<h2 class="wp-block-heading">【評価指標と誤り分析】</h2>
<ul class="wp-block-list">
<li><p><strong>代表的な失敗パターン</strong>:</p>
<ul>
<li><p><strong>ハルシネーション</strong>: 本文に存在しない文章を「証拠」として捏造する。</p></li>
<li><p><strong>バイアス(極端な評価)</strong>: すべて最高点(5)または最低点(1)として処理される。</p></li>
<li><p><strong>構造崩壊</strong>: JSONの閉じ括弧が不足し、後続処理でパースエラーとなる。</p></li>
</ul></li>
<li><p><strong>自動評価用の採点基準(LLM-as-a-Judge)</strong>:
※極端なスコアを避けるため、スケールを2〜4に圧縮しています。</p></li>
</ul>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">評価項目</th>
<th style="text-align:left;">評価内容の要約</th>
<th style="text-align:left;">スコア (2-4)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>証拠の整合性</strong></td>
<td style="text-align:left;">抽出された証拠が対象テキストに実在しているか</td>
<td style="text-align:left;">4: 完全一致<br/>3: 軽微な要約あり<br/>2: 存在しない(捏造)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>論理的一致度</strong></td>
<td style="text-align:left;">指摘された理由と付与スコアの間に乖離がないか</td>
<td style="text-align:left;">4: 完全に整合<br/>3: 部分的に解釈が曖昧<br/>2: 理由とスコアが矛盾</td>
</tr>
<tr>
<td style="text-align:left;"><strong>構文適合性</strong></td>
<td style="text-align:left;">指定されたJSONスキーマに準拠しているか</td>
<td style="text-align:left;">4: パースエラーなし<br/>3: 軽微な整形エラー<br/>2: パース不能</td>
</tr>
</tbody>
</table></figure>
<h2 class="wp-block-heading">【改良後の最適プロンプト】</h2>
<div class="codehilite">
<pre data-enlighter-language="generic"># 役割
厳格かつ客観的にテキストを測定する評価システム
# 制約事項
- 評価スコアは過度な高得点・低得点を避け、慎重に評価してください(原則2点〜4点を基準値とします)。
- 理由(reason_form)には、テキストから直接引用した一文を必ず含めてください。
- 出力は純粋なJSONのみとし、前後に解説文やMarkdownの装飾は一切付与しないでください。
# 評価手順
1. テキストから評価基準の根拠となる直接的な表現(quote)を抽出する。
2. 抽出箇所に基づいて、論理的矛盾がないかを分析し理由を記述する。
3. 2〜4の3段階でスコアを決定する。
# 出力スキーマ
{
"result": {
"logical_consistency": {
"quote": "引用した文章",
"reason_form": "引用から導かれる分析結果(100文字以内)",
"score": 2, 3, 4のいずれか
}
}
}
# 評価対象
[ここにテキストを挿入]
</pre>
</div>
<h2 class="wp-block-heading">【まとめ】</h2>
<ol class="wp-block-list">
<li><p><strong>直接引用の義務化</strong>: ハルシネーションを防止するため、評価理由内に「引用(quote)」を強制抽出させる。</p></li>
<li><p><strong>評価尺度の圧縮</strong>: 極端な採点バイアスを防ぐため、評価範囲を中央(2〜4点)に収束させる設計を施す。</p></li>
<li><p><strong>スキーマ制御</strong>: 後続のプログラムで安全に処理できるよう、出力フォーマットから余計な事前/事後出力を排除する。</p></li>
</ol>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
LLM-as-a-judgeの評価精度を向上させる「ルーブリック+フォーム記述」プロンプト設計
【ユースケース定義と課題】
LLM生成文の評価を自動化したいが、採点が極端にブレてしまい、評価根拠となる論理的説明の整合性が保てない。
【プロンプト設計のループ】
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の整数
}
}
}
# 評価対象テキスト
[ここにテキストを挿入]
【評価指標と誤り分析】
| 評価項目 |
評価内容の要約 |
スコア (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点)に収束させる設計を施す。
スキーマ制御: 後続のプログラムで安全に処理できるよう、出力フォーマットから余計な事前/事後出力を排除する。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント