AIシリーズ面接12:プロンプトのチューニング方法は?
プロンプトチューニング(Prompt Engineering / Optimization)は、大規模言語モデルを「言うことを聞かせる」ための重要なスキルであり、特にRAGシステムでは、モデルが検索内容に忠実に基づき、幻覚を避け、出力形式を整えるかどうかを直接決定します。
一、プロンプトチューニングの核心原則
- 明確さ > 複雑さ:シンプルで直接的な指示は、凝った思考連鎖よりも効果的な場合が多い。
- 十分な制約を与える:モデルに「何ができて、何ができないか」を明確に伝える。
- 事例を提供する:Few-shotはZero-shotよりも安定している。
- 検証可能にする:モデルに引用や確信度を出力させ、下流で判断しやすくする。
- 反復最適化:ベースラインから始め、一度に一つの変数だけを変更し、効果を比較する。
二、具体的なチューニングテクニック(易しいものから難しいものへ)
1. ロール設定(System Prompt)
あなたはプロのカスタマーサポートアシスタントです。以下の【参考資料】のみに基づいて質問に答えてください。
答えがわからない場合は、「資料に関連情報はありません」と直接言い、自分で作り出さないでください。
- 効果:境界とトーンを設定する。
- チューニングポイント:トーン(プロフェッショナル/親しみやすい)、制約の強さ(厳格/緩やか)。
2. 明確な指示
❌ 悪い例:「ユーザーの質問に答えてください。」
✅ 良い例:「以下の【参考資料】のみに基づいて答えてください。参考資料に答えが含まれていない場合は、「この質問にはお答えできません」と答えてください。」
3. 出力形式の制御
以下のJSON形式で出力してください:
{
"answer": "あなたの答え",
"confidence": "高/中/低",
"sources": [1, 3]
}
- 用途:下流での解析、引用、デバッグを容易にする。
4. Few-shot 例(非常に効果的)
例1:
質問:有給休暇は何日ですか?
参考資料:有給休暇ルール:1年以上で5日、10年以上で10日。
答え:1年以上で5日、10年以上で10日。
例2:
質問:残業代はどう計算しますか?
参考資料:平日残業は1.5倍、週末は2倍。
答え:平日は1.5倍、週末は2倍。
では、以下の質問に答えてください:
質問:{ユーザーの質問}
参考資料:{検索内容}
答え:
- テクニック:例は異なる難易度をカバーし、「答えられない」例を1つ含めると良い。
5. 強制引用
答えの末尾に[citation:X]で出典番号を明記してください。例:「有給休暇は5日です[citation:1]。」
複数の資料を総合した場合は、それぞれに明記してください。
6. 拒否回答の閾値設定
- ハード制約:「参考資料が質問と全く無関係な場合は、「資料は関連しません」と答えてください。」
- ソフト制約:検索の確信度スコアと組み合わせ、閾値を下回ったら自動的に拒否回答ブランチに進む。
7. 思考連鎖(Chain-of-Thought)のマルチホップ推論への利用
質問:張三の上司は誰ですか?
ステップ:1. まず張三の部門を特定する。2. 次にその部門の責任者を特定する。3. 最終的な答えを出す。
ステップごとに考えてから出力してください。
8. 否定指示(Negative Prompting)
答えを作り出さないでください。「可能性がある」「かもしれない」などの曖昧な言葉を使わないでください。参考資料以外の数字を出力しないでください。
三、プロンプトの良し悪しをどう評価するか?
| 指標 | 意味 | 測定方法 |
|---|---|---|
| 忠実度 | 答えが厳密に参考資料に基づいているか | 人手またはRAGASのFaithfulness |
| 拒否回答精度 | 拒否すべき時に拒否しているか | 回答なしのテストセットで計算 |
| 形式遵守率 | JSON / 引用の要求通りに出力しているか | 正規表現マッチング |
| ユーザー満足度 | 答えが役立つか | オンラインフィードバック / A/Bテスト |
提案:小規模なテストセット(20〜50のエッジケース)を準備し、プロンプトを変更するたびに実行して変化を記録する。
四、よくある落とし穴とチューニングの方向性
| 問題の現象 | 考えられる原因 | チューニング方法 |
|---|---|---|
| モデルが参考資料を無視して独自に回答する | 指示が不十分 | 「以下の資料のみに基づいて」に変更し、few-shotで拒否回答を示す |
| モデルが常に「わからない」と言う | 拒否回答の閾値が高すぎる | 閾値を下げるか、検索品質を確認する |
| 出力形式が乱れ、JSONにならない | 指示が不明瞭 | 厳格な形式例を追加するか、function callingを使用する |
| 答えが長すぎる/短すぎる | 長さを指定していない | 「3文以内で答えてください」 |
| マルチホップ推論で間違える | モデルの推論能力不足 | 段階的な推論を要求するか、より強力なモデルに変更する |
| 幻覚の数字/日付が出る | モデルが自身の知識に依存 | 「記憶にある数字は一切使わず、資料だけを見てください」と強調する |
评论
暂无已展示的评论。
发表评论(匿名)