本記事は Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4 の解説記事です。
論文概要(Abstract)
Bsharat, Myrzakhan, Shen(MBZUAI, 2024)は、LLMへのプロンプト品質を向上させるための26個のガイドライン原則を提案した。これらの原則はDo/Don’tベースの指示、役割設定、質問方法などを体系化したものであり、LLaMA-1/2、GPT-3.5/4の計7モデルと13種類の複合タスクで評価されている。併せて、LLM性能評価用の1000問データセットATLAS(Advanced Tasks for Language model Assessment and Scoring)を初めて公開している。
この記事は Zenn記事: CLAUDE.md最適化の最前線:開発者が実践する5つのプロンプト設計戦略 の深掘りです。
情報源
- arXiv ID: 2402.14658
- URL: https://arxiv.org/abs/2402.14658
- 著者: Sondos Mahmoud Bsharat, Aidar Myrzakhan, Zhiqiang Shen(MBZUAI)
- 発表年: 2024
- 分野: cs.CL, cs.AI
背景と動機(Background & Motivation)
GPT-4やLLaMA-2をはじめとするLLMは、自然言語生成・翻訳・コード生成・質問応答といった多様なNLPタスクで高い能力を示している。しかし、これらのモデルに対する効果的なプロンプトの設計は依然として試行錯誤に頼る部分が大きい。先行研究であるChain-of-Thought(Wei et al., 2022)やFew-shot prompting(Brown et al., 2020)は特定シナリオで有効だが、複数ステップの手順や複雑なタスク構造化が必要であり、すべてのユーザーにとって利用しやすいとは言えなかった。
著者らは「シンプルで直感的な原則セット」を通じて、専門知識がなくてもLLMからの応答品質を改善できるアプローチを目指している。CLAUDE.mdのようなシステムプロンプト設計ファイルに記述する「書くべきこと・書かないこと」の判断にも、これらの原則は直接的な示唆を与えるものである。
主要な貢献(Key Contributions)
- 貢献1: LLMプロンプト設計のための26個のガイドライン原則を、5つのカテゴリに分類して体系化した
- 貢献2: LLaMA-1/2、GPT-3.5/4の7モデルと13タスクで原則適用の効果を実験的に検証し、GPT-4で平均57.7%、GPT-3.5で67.3%の改善を報告した
- 貢献3: 11カテゴリ・1000問のLLM評価データセットATLASを初公開した
技術的詳細(Technical Details)
26原則の分類体系
著者らは26の原則を以下の5カテゴリに整理している。
カテゴリ1: プロンプトの構造と明確さ(Principles 1-5)
| 原則No. | 原則 | 内容 |
|---|---|---|
| 1 | 丁寧語は不要 | “please”、”if you don’t mind”、”thank you”などの表現を省く |
| 2 | 対象読者を明記 | 「専門家向け」等、読者レベルをプロンプトに含める |
| 3 | 複雑タスクの分解 | ステップバイステップの指示を使う |
| 4 | 肯定的指示を使う | 「〜しないこと」より「〜すること」の形式で表現する |
| 5 | 要件を明確化 | 期待する応答形式を明示する |
カテゴリ2: 具体性と情報(Principles 6-10)
| 原則No. | 原則 | 内容 |
|---|---|---|
| 6 | 重要指示の繰り返し | 冒頭と末尾の両方に重要な指示を配置する |
| 7 | 例示駆動 | 必要に応じてプロンプト内に具体例を入れる |
| 8 | 出力形式の指定 | 「markdownで出力」等を明示する |
| 9 | 修正依頼 | モデルに誤りの自己修正を促す |
| 10 | Leading words | 「Think step by step」等の誘導フレーズを使用する |
カテゴリ3: ユーザーインタラクション(Principles 11-15)
| 原則No. | 原則 | 内容 |
|---|---|---|
| 11 | バイアス回避 | 偏向・有害コンテンツをプロンプトに含めない |
| 12 | 場面設定 | モデルに役割/ペルソナを与える |
| 13 | 出力長の指定 | 期待する出力の長さを明示する |
| 14 | セパレーター使用 | 指示とコンテンツを区切り記号で分離する |
| 15 | キーワード反復 | 重要な語句をプロンプト内で繰り返す |
カテゴリ4: コンテンツと言語スタイル(Principles 16-20)
| 原則No. | 原則 | 内容 |
|---|---|---|
| 16 | CoT + Few-shot | Chain-of-ThoughtとFew-shot例を組み合わせる |
| 17 | デリミター使用 | 入力の異なる部分を区切り記号で明示する |
| 18 | タスク分解 | 複雑タスクをシンプルなステップに分割する |
| 19 | 肯定的言語 | モデルを誘導する肯定的言語を使う |
| 20 | 出力プライマー | 求める出力の冒頭を先に与える |
カテゴリ5: 複雑タスクとコーディング(Principles 21-26)
| 原則No. | 原則 | 内容 |
|---|---|---|
| 21 | 詳細なプロンプト | やってほしいことを詳細に記述する |
| 22 | テキスト改善 | 内容変更なしにテキスト品質改善を依頼する |
| 23 | 人間らしい応答 | 自然な応答を要求する |
| 24 | コーディング専用指示 | コーディングタスクに特化した指示を使う |
| 25 | コード開始ラインを指定 | 特定の行からコードを書くよう指定する |
| 26 | LLM自己評価 | モデルに自分の応答を評価させる |
CLAUDE.mdへの適用マッピング
これらの原則をCLAUDE.md設計に適用すると、以下のような対応が成り立つ。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# CLAUDE.md設計への原則マッピング
claude_md_mapping = {
"書くべきこと": {
"Principle 2": "対象読者を明記 → CLAUDE.mdに想定するプロジェクトの文脈・技術スタック",
"Principle 4": "肯定的指示 → '〜しない' ではなく '〜する' で記述",
"Principle 5": "要件明確化 → 期待するコードスタイル・出力形式を明示",
"Principle 6": "重要指示の繰り返し → 最重要ルールを先頭と末尾の両方に配置",
"Principle 8": "出力形式の指定 → コミットメッセージ形式やPR記述形式を明示",
"Principle 14": "セパレーター使用 → Markdown見出しでセクション分離",
},
"書かないこと": {
"Principle 1": "丁寧語不要 → 'please'等の冗長表現を排除",
"Principle 7否定": "不要な例示 → コードから読み取れる情報は書かない",
"Principle 21否定": "過剰な詳細 → 百科事典的な記述は避ける",
}
}
スコアリング方法論
著者らは各原則の効果を以下の手順で評価している。
\[\text{Improvement}(\%) = \frac{S_{\text{with\_principle}} - S_{\text{baseline}}}{S_{\text{baseline}}} \times 100\]ここで、
- $S_{\text{with_principle}}$: 原則適用後のタスクスコア
- $S_{\text{baseline}}$: 原則なしのベースラインスコア
実験結果(Results)
モデル別の改善率
著者らの実験結果(論文Table 3より):
| モデル | 平均改善率 |
|---|---|
| GPT-4 | +57.7% |
| GPT-3.5 | +67.3% |
| LLaMA-2 (70B) | +67.3% |
| LLaMA-1/2 (7B, 13B) | +40〜50% |
タスク別の改善率
著者らの実験結果(論文Table 4より):
| タスク | ベースライン | 原則適用後 | 改善幅 |
|---|---|---|---|
| Open-Domain QA | 65.2% | 82.3% | +17.1pp |
| Math | 45.3% | 68.9% | +23.6pp |
| Coding | 55.7% | 78.4% | +22.7pp |
| Reasoning | 60.1% | 81.2% | +21.1pp |
| Common-Sense | 72.4% | 86.5% | +14.1pp |
原則の効果ヒートマップ分析
著者らの分析(論文Figure 2)によると、原則ごとの有効性はモデルとタスクによって異なる。
- Principle 1(丁寧語不要): 全モデルで一貫して有効。指示の情報密度を高める効果がある
- Principle 2(対象読者明記): GPT-4で特に高い効果を示した
- Principle 6(重要指示の繰り返し): 複雑なタスクで特に有効
- Principle 10(Leading words): 推論タスクで有効
原則の組み合わせ効果
著者らのアブレーション研究(論文Section 6)では、以下の知見が報告されている。
- 複数原則の組み合わせは、単独使用より高い性能を示す
- 原則の提示順序が性能に影響する。最重要原則を先頭と末尾に配置するのが最善
- タスクとモデルの組み合わせにより、最適な原則セットが異なる
この「先頭と末尾に重要情報を配置すべき」という知見は、Liu et al.(2023)の「Lost in the Middle」の発見とも整合する。CLAUDE.mdでも、最重要ルールをファイルの先頭と末尾に配置することが推奨される根拠となっている。
実装のポイント(Implementation)
CLAUDE.md設計への具体的適用
論文の26原則のうち、CLAUDE.md設計に最もインパクトが高い原則は以下の通りである。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# CLAUDE.md 設計テンプレート(26原則ベース)
# [Principle 2] プロジェクト概要(対象読者=Claude Code)
TypeScript + React + Next.js プロジェクト。pnpm使用。
# [Principle 4] コードスタイル(肯定的指示)
- ES Modulesを使用する(CommonJSではなく)
- インポートはdestructureする
# [Principle 5] 期待する形式
- コミット: Conventional Commits形式
- ブランチ: feature/<issue>-<description>
# [Principle 8] テスト実行方法
- `pnpm test` でユニットテスト
- `pnpm test:e2e` でE2Eテスト
# [Principle 14] セパレーター使用(見出しで区切り)
# [Principle 6] 重要指示の繰り返し
# ⚠️ 重要: コード変更後は必ずtypecheckを実行
原則適用のアンチパターン
1
2
3
4
5
6
7
8
9
10
11
# ❌ 悪い例: Principle 1違反(丁寧語の使用)
bad_instruction = "Please, if you don't mind, could you kindly use TypeScript?"
# ✅ 良い例: Principle 1 + 4 適用
good_instruction = "Use TypeScript with strict mode enabled."
# ❌ 悪い例: Principle 4違反(否定的指示)
bad_negative = "Don't use var. Don't use any. Don't skip tests."
# ✅ 良い例: Principle 4適用(肯定的指示)
good_affirmative = "Use const/let. Add explicit types. Run tests after changes."
実運用への応用(Practical Applications)
CLAUDE.md最適化への直接的示唆
この論文の知見は、Zenn記事で紹介されているCLAUDE.md最適化の「書くべきこと・書かないこと」判断基準に対する実証的根拠を提供する。
- 情報密度の最大化: Principle 1(丁寧語排除)とPrinciple 21(詳細記述)のバランスを取ることで、限られたコンテキストウィンドウ内での指示効率を最大化できる
- セクション構造: Principle 14(セパレーター)とPrinciple 17(デリミター)の適用により、CLAUDE.mdのセクション区切りが明確になり、LLMの解釈精度が向上する
- 反復的改善: Principle 26(自己評価)の適用により、CLAUDE.md自体の改善をClaude Codeに依頼する反復ループが構築可能
スケーリング上の課題
著者らが指摘する限界として、全26原則を同時適用するとプロンプト長が増大する問題がある。CLAUDE.mdは全セッションで消費されるため、原則適用は「情報密度を下げずに効果を得られるもの」に絞る必要がある。Arize AIの分析では、300行から60行への圧縮で60%のコンテキスト節約が報告されており、この論文の原則1(丁寧語排除)・原則4(肯定的指示への書き換え)は圧縮に直接寄与する。
関連研究(Related Work)
- Chain-of-Thought Prompting(Wei et al., 2022): LLMに推論ステップを出力させることで精度向上。本論文のPrinciple 10・16と関連する
- InstructGPT / RLHF(Ouyang et al., 2022): 人間のフィードバックによるLLMの指示追従性向上。本論文の原則はRLHF後のモデルに対しても追加の改善効果を示した
- FLAN(Chung et al., 2022): 大規模instruction tuningによるゼロショット能力向上。本論文はinstruction tuning済みモデルにも原則適用が有効であることを示した
まとめと今後の展望
Bsharat et al.(2024)は、LLMプロンプト設計のための26原則を提案し、GPT-4で57.7%、GPT-3.5で67.3%の性能改善を実験的に示した。これらの原則は、CLAUDE.mdのような開発者ツールの設定ファイル設計にも直接適用可能である。
ただし、以下の限界を考慮する必要がある。
- 評価は英語中心であり、日本語プロンプトへの効果は未検証
- モデル・タスク固有の最適な原則組み合わせが存在するため、プロジェクトごとの検証が推奨される
- 2024年2月時点の評価であり、Claude 3.5/4やGPT-4o以降のモデルでは効果が異なる可能性がある
参考文献
- arXiv: https://arxiv.org/abs/2402.14658
- Related Zenn article: https://zenn.dev/0h_n0/articles/c06ff696c6d2b5
- Wei et al., 2022 - Chain-of-Thought Prompting
- Brown et al., 2020 - GPT-3 / Few-shot Learning
- Ouyang et al., 2022 - InstructGPT / RLHF
- Chung et al., 2022 - FLAN / Scaling Instruction-Tuned LMs
:::message この記事はAI(Claude Code)により自動生成されました。本記事は論文の引用・解説であり、筆者自身が実験を行ったものではありません。内容の正確性については原論文をご確認ください。 :::