<p><prompt_engineering_draft_v1>
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</prompt_engineering_draft_v1></p>
<h1 class="wp-block-heading">複雑な要件を分解し精度を最大化する「コンテキストエンジニアリング」の実装ガイド</h1>
<h3 class="wp-block-heading">【ユースケース定義と課題】</h3>
<p>曖昧な業務記述から例外処理を含む厳密なフロー図とJSON仕様を生成する。情報過多による論理欠落や様式崩れを、段階的な情報提供で解決。</p>
<ul class="wp-block-list">
<li><p><strong>入力形式</strong>: 自然言語による業務説明(Markdown)</p></li>
<li><p><strong>出力形式</strong>: 構造化データ(JSON)および可視化コード(Mermaid)</p></li>
</ul>
<h3 class="wp-block-heading">【プロンプト設計のループ】</h3>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["設計: 段階的タスクの定義"] --> B["実行: 各フェーズの逐次投入"]
B --> C["評価: 論理整合性と形式チェック"]
C -->|改善: コンテキスト変数の再定義| A
</pre></div>
<ol class="wp-block-list">
<li><p><strong>設計</strong>: 一度の指示で全てを求めず、「要件抽出」「論理構築」「フォーマット変換」にタスクを分離。</p></li>
<li><p><strong>実行</strong>: LLMのコンテキストウィンドウ内に、前のステップの出力を「確定事項」として保持。</p></li>
<li><p><strong>評価</strong>: 各ステップの出力が後続のステップで再利用可能な精度かを確認。</p></li>
</ol>
<h3 class="wp-block-heading">【プロンプトの実装案】</h3>
<div class="codehilite">
<pre data-enlighter-language="generic"># Role
あなたはエンタープライズレベルの業務設計者です。
与えられた業務記述を、論理的な欠陥がないフローチャートとシステム仕様に変換してください。
# Task: Phase 1 (Analysis & Step-by-step reasoning)
以下の手順に従って思考してください。
1. 業務の「開始地点」と「終了地点」を明確にする。
2. 正常系(ハッピーパス)のステップを5〜8個でリストアップする。
3. 各ステップで発生しうる「例外」や「分岐条件」を特定する。
# Constraints
- 専門用語はそのまま維持すること。
- 曖昧な箇所は「要確認事項」として別途リストアップすること。
# Input Data
[ここに業務内容を記述]
# Output Format
## 1. ワークフロー分析 (Chain-of-Thought)
[思考プロセスを記述]
## 2. 定義済みステップ
- Step1: ...
## 3. 分岐・例外リスト
- Condition A: ...
</pre>
</div>
<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;">失敗パターン (要改善)</th>
<th style="text-align:center;">採点 (1-5)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>論理一貫性</strong></td>
<td style="text-align:left;">開始から終了まで矛盾なく繋がる</td>
<td style="text-align:left;">ループが閉じない、行き止まりがある</td>
<td style="text-align:center;">1-5</td>
</tr>
<tr>
<td style="text-align:left;"><strong>例外網羅性</strong></td>
<td style="text-align:left;">エラー処理が定義されている</td>
<td style="text-align:left;">正常系のみ記述され、異常系が無視される</td>
<td style="text-align:center;">1-5</td>
</tr>
<tr>
<td style="text-align:left;"><strong>形式遵守</strong></td>
<td style="text-align:left;">指定されたMarkdown/JSON形式</td>
<td style="text-align:left;">テキストが混入し、パースに失敗する</td>
<td style="text-align:center;">1-5</td>
</tr>
</tbody>
</table></figure>
<ul class="wp-block-list">
<li><p><strong>幻覚の特定</strong>: 存在しない外部システムとの連携をAIが勝手に捏造していないか。</p></li>
<li><p><strong>様式崩れ</strong>: JSONコードブロック内にコメントアウトが含まれ、構文エラーになっていないか。</p></li>
</ul>
<h3 class="wp-block-heading">【改良後の最適プロンプト】</h3>
<div class="codehilite">
<pre data-enlighter-language="generic"># Role
業務プロセスモデリングの専門家。
# Instructions
以下の「コンテキスト・スタッキング」手法を用いて回答してください。
Step 1: 【構造化抽出】
提供されたテキストから、Actor(誰が)、Action(何を)、Condition(どんな条件で)を抽出してください。
Step 2: 【グラフ論理の構築】
Step 1を基に、Mermaid.jsのgraph TD形式でフロー図を作成してください。
※分岐(Decision)には必ず2つ以上の遷移先を設けること。
Step 3: 【データ仕様の定義】
最終成果物として、以下のJSON形式で出力してください。
{
"flow_id": "string",
"steps": [{"id": "number", "label": "string", "next": []}],
"exceptions": [{"condition": "string", "action": "string"}]
}
# Input
[業務記述を挿入]
# Final Output Checklist
- Mermaidコードは構文エラーがないか?
- JSONはRFC 8259に準拠しているか?
</pre>
</div>
<h3 class="wp-block-heading">【まとめ】</h3>
<ol class="wp-block-list">
<li><p><strong>1命令1目的</strong>: 複雑な処理は、思考プロセス(CoT)と形式出力(Format)を明確に分ける。</p></li>
<li><p><strong>中間成果物の明示</strong>: LLMに「まず抽出、次に構造化、最後に整形」と段階を指示し、コンテキストを固定する。</p></li>
<li><p><strong>スキーマの厳格化</strong>: JSON等の構造化データを出力させる際は、具体的なプロパティ名をFew-shotで例示する。</p></li>
</ol>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
複雑な要件を分解し精度を最大化する「コンテキストエンジニアリング」の実装ガイド
【ユースケース定義と課題】
曖昧な業務記述から例外処理を含む厳密なフロー図とJSON仕様を生成する。情報過多による論理欠落や様式崩れを、段階的な情報提供で解決。
【プロンプト設計のループ】
graph TD
A["設計: 段階的タスクの定義"] --> B["実行: 各フェーズの逐次投入"]
B --> C["評価: 論理整合性と形式チェック"]
C -->|改善: コンテキスト変数の再定義| A
設計: 一度の指示で全てを求めず、「要件抽出」「論理構築」「フォーマット変換」にタスクを分離。
実行: LLMのコンテキストウィンドウ内に、前のステップの出力を「確定事項」として保持。
評価: 各ステップの出力が後続のステップで再利用可能な精度かを確認。
【プロンプトの実装案】
# Role
あなたはエンタープライズレベルの業務設計者です。
与えられた業務記述を、論理的な欠陥がないフローチャートとシステム仕様に変換してください。
# Task: Phase 1 (Analysis & Step-by-step reasoning)
以下の手順に従って思考してください。
1. 業務の「開始地点」と「終了地点」を明確にする。
2. 正常系(ハッピーパス)のステップを5〜8個でリストアップする。
3. 各ステップで発生しうる「例外」や「分岐条件」を特定する。
# Constraints
- 専門用語はそのまま維持すること。
- 曖昧な箇所は「要確認事項」として別途リストアップすること。
# Input Data
[ここに業務内容を記述]
# Output Format
## 1. ワークフロー分析 (Chain-of-Thought)
[思考プロセスを記述]
## 2. 定義済みステップ
- Step1: ...
## 3. 分岐・例外リスト
- Condition A: ...
【評価指標と誤り分析】
| 評価項目 |
期待される挙動 |
失敗パターン (要改善) |
採点 (1-5) |
| 論理一貫性 |
開始から終了まで矛盾なく繋がる |
ループが閉じない、行き止まりがある |
1-5 |
| 例外網羅性 |
エラー処理が定義されている |
正常系のみ記述され、異常系が無視される |
1-5 |
| 形式遵守 |
指定されたMarkdown/JSON形式 |
テキストが混入し、パースに失敗する |
1-5 |
【改良後の最適プロンプト】
# Role
業務プロセスモデリングの専門家。
# Instructions
以下の「コンテキスト・スタッキング」手法を用いて回答してください。
Step 1: 【構造化抽出】
提供されたテキストから、Actor(誰が)、Action(何を)、Condition(どんな条件で)を抽出してください。
Step 2: 【グラフ論理の構築】
Step 1を基に、Mermaid.jsのgraph TD形式でフロー図を作成してください。
※分岐(Decision)には必ず2つ以上の遷移先を設けること。
Step 3: 【データ仕様の定義】
最終成果物として、以下のJSON形式で出力してください。
{
"flow_id": "string",
"steps": [{"id": "number", "label": "string", "next": []}],
"exceptions": [{"condition": "string", "action": "string"}]
}
# Input
[業務記述を挿入]
# Final Output Checklist
- Mermaidコードは構文エラーがないか?
- JSONはRFC 8259に準拠しているか?
【まとめ】
1命令1目的: 複雑な処理は、思考プロセス(CoT)と形式出力(Format)を明確に分ける。
中間成果物の明示: LLMに「まず抽出、次に構造化、最後に整形」と段階を指示し、コンテキストを固定する。
スキーマの厳格化: JSON等の構造化データを出力させる際は、具体的なプロパティ名をFew-shotで例示する。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント