<div class="codehilite">
<pre data-enlighter-language="generic">{"style_prompt": "applied", "revision_date": "2024-07-30", "model": "Gemini 1.5 Pro"}
</pre>
</div>
<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">実務で差がつく!LLM性能を最大化するプロンプトエンジニアリング12の実践テクニック</h1>
<h2 class="wp-block-heading">【ユースケース定義と課題】</h2>
<p>LLMに何をさせたいのか、何が難しいのか:
専門性の高い技術文書(プロンプト技術解説)を、誤りなく、体系的に、かつ指定されたMarkdown形式で要約・構成させる。知識の幻覚(ハルシネーション)を防ぎつつ、厳密な形式とトーンを維持させることが難しい。</p>
<p><strong>入出力の「型」の定義</strong></p>
<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;">詳細</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">入力</td>
<td style="text-align:left;">TEXT</td>
<td style="text-align:left;">元となる冗長な技術解説テキスト。</td>
</tr>
<tr>
<td style="text-align:left;">出力</td>
<td style="text-align:left;">MARKDOWN</td>
<td style="text-align:left;">H2, H3, リスト構造を厳守した、エンジニア向け解説記事。</td>
</tr>
</tbody>
</table></figure>
<hr/>
<h2 class="wp-block-heading">【プロンプト設計のループ】</h2>
<p>効果的なプロンプト設計は一回の試行で完成しません。以下の反復的な改善プロセスを回すことが不可欠です。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["設計: 役割、制約、具体例の定義"] --> B["実行: LLMへの投入と出力の取得"]
B --> C["評価: 期待値との比較と誤り分析"]
C -->|改善| A
</pre></div>
<p><strong>設計ステップの詳細:</strong></p>
<ol class="wp-block-list">
<li><p><strong>役割定義(Persona)</strong>: LLMに特定の専門家としての役割を与え、思考のコンテキストを設定する。</p></li>
<li><p><strong>制約条件</strong>: 出力形式、文字数、トーンを厳密に定義する。</p></li>
<li><p><strong>具体例(Few-shot)</strong>: 理想的な入出力の例を1〜3つ提示し、学習させる。</p></li>
</ol>
<hr/>
<h2 class="wp-block-heading">【プロンプトの実装案】</h2>
<p>ここでは、基本となる6つの実践テクニック(役割、区切り文字、Few-shot、CoT、具体性、形式指定)を組み合わせた初期プロンプトを示します。</p>
<h3 class="wp-block-heading">採用した実践テクニック (12のうち6つ)</h3>
<ol class="wp-block-list">
<li><p><strong>役割定義</strong>: 高度な技術編集者</p></li>
<li><p><strong>区切り文字/タグ</strong>: 入力データの分離</p></li>
<li><p><strong>具体的な指示</strong>: 何を求められているかを明示</p></li>
<li><p><strong>出力形式の指定</strong>: Markdown構造の強制</p></li>
<li><p><strong>Few-shot</strong>: 理想的なアウトプットの構成例示</p></li>
<li><p><strong>Chain-of-Thought (CoT)</strong>: 思考ステップの指示</p></li>
</ol>
<div class="codehilite">
<pre data-enlighter-language="generic"># 役割定義と制約
あなたは、プロンプトエンジニアリングに関する最新論文を実務家向けの記事に編集する、経験豊富なテクニカルエディターです。
あなたのタスクは、提供されたINPUT TEXTを解析し、構造化されたMARKDOWN記事として再構成することです。
## 厳守すべきルール
1. **トーン**: 専門的かつ実用的なトーンを維持し、抽象的な表現を避けて具体的な実例に焦点を当てる。
2. **出力形式**: 最終出力は指定されたMARKDOWN形式(H2, H3, リスト構造)を厳守すること。
3. **ハルシネーション禁止**: INPUT TEXTに記載されていない情報は絶対に追加しないこと。
## Few-shot Example (理想的なアウトプット構造)
### 入力例(省略)
### 出力例(構造のみ)
---
## 【基本テクニック】
### 1. 役割の明確化 (Persona)
- 具体例:...
---
## 思考プロセス(Chain-of-Thought)
以下のステップに従って処理を進めてください。このステップ自体は最終出力に含めないでください。
1. **分析**: INPUT TEXT全体を読み込み、コアとなる12のテクニックを抽出する。
2. **分類**: 抽出したテクニックを「基本」「応用」「評価」の3つのカテゴリに分類する。
3. **ドラフト**: 各カテゴリに基づき、指定されたMARKDOWN形式のドラフトを作成する。
---
## INPUT TEXT(ユーザーが提供する元文書)
<INPUT_TEXT>
(ここに約5000文字のプロンプト技術解説が入る)
</INPUT_TEXT>
## FINAL OUTPUT MARKDOWN
(ここに処理結果のMarkdown記事を出力してください)
</pre>
</div><hr/>
<h2 class="wp-block-heading">【評価指標と誤り分析】</h2>
<p>初期プロンプト(Step 6)を実行した際に発生しやすい「失敗パターン」を特定し、その評価基準を明確にします。</p>
<h3 class="wp-block-heading">失敗パターン(誤り分析)</h3>
<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;">LLM特性(原因)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>P1: 形式崩れ</strong></td>
<td style="text-align:left;">H2/H3の順番が乱れる、リスト形式が維持されない。</td>
<td style="text-align:left;">指示の重み付けが弱く、自由な生成に流れがち。</td>
</tr>
<tr>
<td style="text-align:left;"><strong>P2: 幻覚(ハルシネーション)</strong></td>
<td style="text-align:left;">入力テキストに存在しない技術用語や概念を追加する。</td>
<td style="text-align:left;">知識ベースからの補完を優先し、制約を無視した。</td>
</tr>
<tr>
<td style="text-align:left;"><strong>P3: 抽象化</strong></td>
<td style="text-align:left;">具体的なプロンプト例を省略し、一般的な説明に終始する。</td>
<td style="text-align:left;">文脈が「解説」に偏りすぎ、「実務」の指示が薄れた。</td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">LLMによる自動評価(LLM-as-a-Judge)</h3>
<p>評価専用のLLM(Judge)に、以下の基準で出力の品質を採点させます。</p>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">評価項目</th>
<th style="text-align:left;">採点基準(0〜5点)</th>
<th style="text-align:left;">期待される振る舞い(5点満点)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>A. 形式の厳守度</strong></td>
<td style="text-align:left;">完全に指定されたMarkdown構造を維持しているか。</td>
<td style="text-align:left;">常にH2→H3→リストの順序を厳密に守る。</td>
</tr>
<tr>
<td style="text-align:left;"><strong>B. 情報の正確性</strong></td>
<td style="text-align:left;">INPUT TEXT外の情報を追加していないか。(P2対策)</td>
<td style="text-align:left;">引用元情報に忠実であり、事実確認が容易である。</td>
</tr>
<tr>
<td style="text-align:left;"><strong>C. 実用性/具体性</strong></td>
<td style="text-align:left;">各テクニックの説明に、具体的なプロンプト例が含まれているか。(P3対策)</td>
<td style="text-align:left;">抽象論ではなく、<code>user:</code> や <code>system:</code> の例示がある。</td>
</tr>
</tbody>
</table></figure>
<hr/>
<h2 class="wp-block-heading">【改良後の最適プロンプト】</h2>
<p>誤り分析(特にP1, P2)の結果に基づき、さらに高度な7つのテクニック(強制、自己評価、ガードレールなど)を追加して、プロンプトの堅牢性を高めます。</p>
<h3 class="wp-block-heading">追加した実践テクニック (合計12の実践テクニックを適用)</h3>
<ol class="wp-block-list" start="7">
<li><p><strong>システム命令の強化</strong>: 役割をシステムのトップに固定</p></li>
<li><p><strong>否定形のガードレール</strong>: 「〜してはいけない」の明示 (P2対策)</p></li>
<li><p><strong>抽象化と具体化</strong>: 思考ステップで抽象化→具体化の強制 (P3対策)</p></li>
<li><p><strong>出力構造のテンプレート化</strong>: 最終出力の枠組みを明確に定義 (P1対策)</p></li>
<li><p><strong>自己評価/自己修正</strong>: 最終回答前にチェックを義務付け</p></li>
<li><p><strong>バージョン指定</strong>: 最新モデルの能力を前提とする指示</p></li>
</ol>
<div class="codehilite">
<pre data-enlighter-language="generic"># SYSTEM INSTRUCTION (システムレベルの指示)
## 役割とモデル設定
あなたはGoogleのGemini 1.5 Proの能力を活用する、最高レベルのプロンプトエンジニアリング専門家です。
あなたは、提供された INPUT TEXT を解析し、厳格な業務品質基準を満たす MARKDOWN 技術記事を生成する責任を負います。
## 否定形のガードレール (Hallucination Prevention)
以下の行為は絶対に禁止します。これを守れない場合、スコアは0点となります。
1. INPUT TEXTに記載されていない、検証不可能な情報を追加すること(ハルシネーション)。
2. MARKDOWN構造のテンプレートを無視して、自由に形式を変更すること。
3. 抽象的な説明に留まり、具体的なプロンプトコードを提示しないこと。
# USER INPUT
## タスク: 12の実践テクニックの体系化
INPUT TEXTの内容に基づき、「基本」「応用」「運用」の3部構成で体系的な解説記事を作成してください。
## 思考プロセス(必須:これを最終出力の直前に記述すること)
### Step 1: 構造の分析と抽出
INPUT TEXTから12のコアテクニックを抽出し、以下の3つのセクションに分類する。
- セクションA (基本): 役割定義、区切り文字、Few-shot, CoT
- セクションB (応用): ReAct, 自己批判/修正, 抽象化/具体化
- セクションC (運用): ガードレール、評価指標
### Step 2: 具体化とプロンプト例の作成
各テクニックに対して、それが実際にどのようにプロンプト内で使われるかを示す、最小限のコード例(`user:`, `system:` の形式)を必ず作成する。
### Step 3: 自己評価と修正 (Self-Correction)
生成されたドラフトに対して、以下のチェックリストを適用し、合格した場合のみ最終出力とする。
1. 形式チェック: MARKDOWNテンプレート(H2, H3, リスト)を満たしているか? [Y/N]
2. 忠実性チェック: ハルシネーションがないか? [Y/N]
**自己評価結果:** [必ずここに Y/N を記述し、N の場合は修正後の出力を行う]
## INPUT TEXT
<INPUT_TEXT>
(ここに約5000文字のプロンプト技術解説が入る)
</INPUT_TEXT>
## FINAL OUTPUT MARKDOWN TEMPLATE
以下の構造に沿って、内容を具体的に記述せよ。
## 【セクションA:基礎を固める6つのコアテクニック】
### 1. 役割の明確化 (Persona Definition)
- [解説]
- [プロンプト例]
... (H3とリストを続ける)
## 【セクションB:推論を深める応用テクニック】
### 7. Chain-of-Thought (CoT) の強制
- [解説]
... (H3とリストを続ける)
## 【セクションC:実務運用と評価の鉄則】
### 11. 評価基準の明示 (Guardrails)
- [解説]
</pre>
</div><hr/>
<h2 class="wp-block-heading">【まとめ】</h2>
<p>プロンプトエンジニアリングを実務で運用する際の3つの鉄則をまとめます。</p>
<h3 class="wp-block-heading">1. 「設計→実行→評価」のループを回す</h3>
<p>プロンプト設計はアートではなくエンジニアリングです。一発で完璧なプロンプトは存在しないことを前提とし、必ず「評価指標と誤り分析」に基づいた反復的な改善(イテレーション)を習慣化してください。特に評価には、本稿で紹介したLLM-as-a-Judgeの手法が最新のLLM環境では有効です。</p>
<h3 class="wp-block-heading">2. コンテキストをトップレベルで固定する(SYSTEM INSTRUCTIONの活用)</h3>
<p>最新のLLM(Gemini 1.5 Pro/Flash, GPT-4oなど)は、従来のUserプロンプトの冒頭ではなく、専用の<code>SYSTEM INSTRUCTION</code>(システム命令)ブロックに役割定義や否定形のガードレールを配置することで、制約の遵守率が劇的に向上します。最も重要なルールやペルソナは、必ずこのトップレベルに固定してください。</p>
<h3 class="wp-block-heading">3. 複雑なタスクには必ず「思考の強制」を含める</h3>
<p>単なる指示出しでは、LLMは最短経路で回答を生成しようとします。品質が要求されるタスク、特に分析・分類・要約を含むタスクにおいては、Chain-of-Thought (CoT) や自己評価/自己修正(Self-Correction)のステップを明示的に強制し、LLMに推論の過程を可視化させることが、出力の正確性と信頼性を確保する鍵となります。</p>
{"style_prompt": "applied", "revision_date": "2024-07-30", "model": "Gemini 1.5 Pro"}
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
実務で差がつく!LLM性能を最大化するプロンプトエンジニアリング12の実践テクニック
【ユースケース定義と課題】
LLMに何をさせたいのか、何が難しいのか:
専門性の高い技術文書(プロンプト技術解説)を、誤りなく、体系的に、かつ指定されたMarkdown形式で要約・構成させる。知識の幻覚(ハルシネーション)を防ぎつつ、厳密な形式とトーンを維持させることが難しい。
入出力の「型」の定義
| 項目 |
型 |
詳細 |
| 入力 |
TEXT |
元となる冗長な技術解説テキスト。 |
| 出力 |
MARKDOWN |
H2, H3, リスト構造を厳守した、エンジニア向け解説記事。 |
【プロンプト設計のループ】
効果的なプロンプト設計は一回の試行で完成しません。以下の反復的な改善プロセスを回すことが不可欠です。
graph TD
A["設計: 役割、制約、具体例の定義"] --> B["実行: LLMへの投入と出力の取得"]
B --> C["評価: 期待値との比較と誤り分析"]
C -->|改善| A
設計ステップの詳細:
役割定義(Persona): LLMに特定の専門家としての役割を与え、思考のコンテキストを設定する。
制約条件: 出力形式、文字数、トーンを厳密に定義する。
具体例(Few-shot): 理想的な入出力の例を1〜3つ提示し、学習させる。
【プロンプトの実装案】
ここでは、基本となる6つの実践テクニック(役割、区切り文字、Few-shot、CoT、具体性、形式指定)を組み合わせた初期プロンプトを示します。
採用した実践テクニック (12のうち6つ)
役割定義: 高度な技術編集者
区切り文字/タグ: 入力データの分離
具体的な指示: 何を求められているかを明示
出力形式の指定: Markdown構造の強制
Few-shot: 理想的なアウトプットの構成例示
Chain-of-Thought (CoT): 思考ステップの指示
# 役割定義と制約
あなたは、プロンプトエンジニアリングに関する最新論文を実務家向けの記事に編集する、経験豊富なテクニカルエディターです。
あなたのタスクは、提供されたINPUT TEXTを解析し、構造化されたMARKDOWN記事として再構成することです。
## 厳守すべきルール
1. **トーン**: 専門的かつ実用的なトーンを維持し、抽象的な表現を避けて具体的な実例に焦点を当てる。
2. **出力形式**: 最終出力は指定されたMARKDOWN形式(H2, H3, リスト構造)を厳守すること。
3. **ハルシネーション禁止**: INPUT TEXTに記載されていない情報は絶対に追加しないこと。
## Few-shot Example (理想的なアウトプット構造)
### 入力例(省略)
### 出力例(構造のみ)
---
## 【基本テクニック】
### 1. 役割の明確化 (Persona)
- 具体例:...
---
## 思考プロセス(Chain-of-Thought)
以下のステップに従って処理を進めてください。このステップ自体は最終出力に含めないでください。
1. **分析**: INPUT TEXT全体を読み込み、コアとなる12のテクニックを抽出する。
2. **分類**: 抽出したテクニックを「基本」「応用」「評価」の3つのカテゴリに分類する。
3. **ドラフト**: 各カテゴリに基づき、指定されたMARKDOWN形式のドラフトを作成する。
---
## INPUT TEXT(ユーザーが提供する元文書)
<INPUT_TEXT>
(ここに約5000文字のプロンプト技術解説が入る)
</INPUT_TEXT>
## FINAL OUTPUT MARKDOWN
(ここに処理結果のMarkdown記事を出力してください)
【評価指標と誤り分析】
初期プロンプト(Step 6)を実行した際に発生しやすい「失敗パターン」を特定し、その評価基準を明確にします。
失敗パターン(誤り分析)
| 失敗パターン |
詳細 |
LLM特性(原因) |
| P1: 形式崩れ |
H2/H3の順番が乱れる、リスト形式が維持されない。 |
指示の重み付けが弱く、自由な生成に流れがち。 |
| P2: 幻覚(ハルシネーション) |
入力テキストに存在しない技術用語や概念を追加する。 |
知識ベースからの補完を優先し、制約を無視した。 |
| P3: 抽象化 |
具体的なプロンプト例を省略し、一般的な説明に終始する。 |
文脈が「解説」に偏りすぎ、「実務」の指示が薄れた。 |
LLMによる自動評価(LLM-as-a-Judge)
評価専用のLLM(Judge)に、以下の基準で出力の品質を採点させます。
| 評価項目 |
採点基準(0〜5点) |
期待される振る舞い(5点満点) |
| A. 形式の厳守度 |
完全に指定されたMarkdown構造を維持しているか。 |
常にH2→H3→リストの順序を厳密に守る。 |
| B. 情報の正確性 |
INPUT TEXT外の情報を追加していないか。(P2対策) |
引用元情報に忠実であり、事実確認が容易である。 |
| C. 実用性/具体性 |
各テクニックの説明に、具体的なプロンプト例が含まれているか。(P3対策) |
抽象論ではなく、user: や system: の例示がある。 |
【改良後の最適プロンプト】
誤り分析(特にP1, P2)の結果に基づき、さらに高度な7つのテクニック(強制、自己評価、ガードレールなど)を追加して、プロンプトの堅牢性を高めます。
追加した実践テクニック (合計12の実践テクニックを適用)
システム命令の強化: 役割をシステムのトップに固定
否定形のガードレール: 「〜してはいけない」の明示 (P2対策)
抽象化と具体化: 思考ステップで抽象化→具体化の強制 (P3対策)
出力構造のテンプレート化: 最終出力の枠組みを明確に定義 (P1対策)
自己評価/自己修正: 最終回答前にチェックを義務付け
バージョン指定: 最新モデルの能力を前提とする指示
# SYSTEM INSTRUCTION (システムレベルの指示)
## 役割とモデル設定
あなたはGoogleのGemini 1.5 Proの能力を活用する、最高レベルのプロンプトエンジニアリング専門家です。
あなたは、提供された INPUT TEXT を解析し、厳格な業務品質基準を満たす MARKDOWN 技術記事を生成する責任を負います。
## 否定形のガードレール (Hallucination Prevention)
以下の行為は絶対に禁止します。これを守れない場合、スコアは0点となります。
1. INPUT TEXTに記載されていない、検証不可能な情報を追加すること(ハルシネーション)。
2. MARKDOWN構造のテンプレートを無視して、自由に形式を変更すること。
3. 抽象的な説明に留まり、具体的なプロンプトコードを提示しないこと。
# USER INPUT
## タスク: 12の実践テクニックの体系化
INPUT TEXTの内容に基づき、「基本」「応用」「運用」の3部構成で体系的な解説記事を作成してください。
## 思考プロセス(必須:これを最終出力の直前に記述すること)
### Step 1: 構造の分析と抽出
INPUT TEXTから12のコアテクニックを抽出し、以下の3つのセクションに分類する。
- セクションA (基本): 役割定義、区切り文字、Few-shot, CoT
- セクションB (応用): ReAct, 自己批判/修正, 抽象化/具体化
- セクションC (運用): ガードレール、評価指標
### Step 2: 具体化とプロンプト例の作成
各テクニックに対して、それが実際にどのようにプロンプト内で使われるかを示す、最小限のコード例(`user:`, `system:` の形式)を必ず作成する。
### Step 3: 自己評価と修正 (Self-Correction)
生成されたドラフトに対して、以下のチェックリストを適用し、合格した場合のみ最終出力とする。
1. 形式チェック: MARKDOWNテンプレート(H2, H3, リスト)を満たしているか? [Y/N]
2. 忠実性チェック: ハルシネーションがないか? [Y/N]
**自己評価結果:** [必ずここに Y/N を記述し、N の場合は修正後の出力を行う]
## INPUT TEXT
<INPUT_TEXT>
(ここに約5000文字のプロンプト技術解説が入る)
</INPUT_TEXT>
## FINAL OUTPUT MARKDOWN TEMPLATE
以下の構造に沿って、内容を具体的に記述せよ。
## 【セクションA:基礎を固める6つのコアテクニック】
### 1. 役割の明確化 (Persona Definition)
- [解説]
- [プロンプト例]
... (H3とリストを続ける)
## 【セクションB:推論を深める応用テクニック】
### 7. Chain-of-Thought (CoT) の強制
- [解説]
... (H3とリストを続ける)
## 【セクションC:実務運用と評価の鉄則】
### 11. 評価基準の明示 (Guardrails)
- [解説]
【まとめ】
プロンプトエンジニアリングを実務で運用する際の3つの鉄則をまとめます。
1. 「設計→実行→評価」のループを回す
プロンプト設計はアートではなくエンジニアリングです。一発で完璧なプロンプトは存在しないことを前提とし、必ず「評価指標と誤り分析」に基づいた反復的な改善(イテレーション)を習慣化してください。特に評価には、本稿で紹介したLLM-as-a-Judgeの手法が最新のLLM環境では有効です。
2. コンテキストをトップレベルで固定する(SYSTEM INSTRUCTIONの活用)
最新のLLM(Gemini 1.5 Pro/Flash, GPT-4oなど)は、従来のUserプロンプトの冒頭ではなく、専用のSYSTEM INSTRUCTION(システム命令)ブロックに役割定義や否定形のガードレールを配置することで、制約の遵守率が劇的に向上します。最も重要なルールやペルソナは、必ずこのトップレベルに固定してください。
3. 複雑なタスクには必ず「思考の強制」を含める
単なる指示出しでは、LLMは最短経路で回答を生成しようとします。品質が要求されるタスク、特に分析・分類・要約を含むタスクにおいては、Chain-of-Thought (CoT) や自己評価/自己修正(Self-Correction)のステップを明示的に強制し、LLMに推論の過程を可視化させることが、出力の正確性と信頼性を確保する鍵となります。
コメント