<p>[METADATA: STYLE_PROMPT_ACTIVE]
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">Chain-of-Thoughtを用いた多段階論理演算の最適化プロンプト</h1>
<h3 class="wp-block-heading">【ユースケース定義と課題】</h3>
<p>複雑な条件(重量、距離、動的割引、税率)が絡む物流コストの自動算出。
論理の飛躍による計算ミスを防ぎ、最終結果をパース可能なJSON形式で取得すること。</p>
<h3 class="wp-block-heading">【プロンプト設計のループ】</h3>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["設計: 思考ステップの明示化"] --> B["実行: Gemini 1.5 Pro/GPT-4o"]
B --> C["評価: 出力JSONの妥当性検証"]
C -->|計算ミス・形式不備の修正| A
</pre></div>
<ol class="wp-block-list">
<li><p><strong>設計</strong>: ユーザーの入力を受け取った後、答えを出す前に「思考プロセス」を書き出すよう指示します。</p></li>
<li><p><strong>実行</strong>: ゼロショットではなく、思考プロセスを含むFew-shot例を提示して実行します。</p></li>
<li><p><strong>評価</strong>: 最終的なJSON値が、思考プロセス内の計算結果と一致しているかをLLM-as-a-Judgeで検証します。</p></li>
</ol>
<h3 class="wp-block-heading">【プロンプトの実装案】</h3>
<div class="codehilite">
<pre data-enlighter-language="generic"># Role
あなたは物流コスト計算の専門家です。与えられた条件に基づき、正確なステップを経て運賃を算出してください。
# Constraints
- 回答の前に必ず「## 思考プロセス」セクションを設け、計算の全ステップを記述してください。
- 最終結果は必ず指定のJSONフォーマットで出力してください。
- 割引の適用順序(①基本料金 -> ②重量加算 -> ③割引適用)を遵守してください。
# Example
Input: { "weight": 10, "distance": 100, "rate": 50, "discount": 0.1 }
Output:
## 思考プロセス
1. 基本料金の算出: 100km * 50円 = 5,000円
2. 重量加算: 10kgなので、1kgあたり100円加算 = 1,000円
3. 小計: 6,000円
4. 割引適用: 6,000円 * (1 - 0.1) = 5,400円
5. 最終結果をJSONに変換。
```json
{
"subtotal": 6000,
"final_price": 5400,
"currency": "JPY"
}
</pre>
</div>
<h1 class="wp-block-heading">Task</h1>
<p>Input: {{USER_INPUT}}</p>
<pre data-enlighter-language="generic">
### 【評価指標と誤り分析】
| 評価項目 | 期待される挙動 | 失敗パターン(要改善) |
| :--- | :--- | :--- |
| **計算精度** | 思考プロセスの各ステップが算術的に正しい | 小計は正しいが最終合計で計算ミスが発生 |
| **形式遵守** | JSONが有効で、プログラムでパース可能 | コードブロック外に余計な解説テキストが漏れる |
| **論理一貫性** | 思考プロセスとJSONの値が一致している | 思考プロセスでは割引を適用しているがJSONで未反映 |
### 【改良後の最適プロンプト】
```text
# Mission
複雑な運賃計算タスクを、論理的整合性を保ちながら完遂してください。
# Rules
1. <thinking> タグ内で、計算の根拠となる数式とステップを1つずつ書き出してください。
2. 計算結果の整合性をセルフチェックしてください。
3. 最後に <result> タグ内でJSONのみを出力してください。
# Evaluation Context
- Gemini 1.5 Pro/Flashの場合:コンテキスト長を活かし、過去の複雑な計算パターンをFew-shotとして3件以上追加すると精度が最大化します。
- GPT-4oの場合:計算ミスが懸念される場合、「Pythonツールを使用して計算せよ」という指示を併用するのが最適です。
# Input Data
{{USER_INPUT}}
</pre>
<h3 class="wp-block-heading">【まとめ】</h3>
<ol class="wp-block-list">
<li><p><strong>思考の強制分離</strong>: <code>thinking</code>タグ等を用いて、モデルに「考えるフェーズ」と「答えるフェーズ」を明示的に分けさせること。</p></li>
<li><p><strong>計算順序の明文化</strong>: 割引率や税率の適用タイミングを「計算ルール」として箇条書きで定義すること。</p></li>
<li><p><strong>構造化出力の徹底</strong>: プログラム連携を前提とする場合、Markdownのコードブロック以外を出力させないネガティブプロンプトを併用すること。</p></li>
</ol>
[METADATA: STYLE_PROMPT_ACTIVE]
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
Chain-of-Thoughtを用いた多段階論理演算の最適化プロンプト
【ユースケース定義と課題】
複雑な条件(重量、距離、動的割引、税率)が絡む物流コストの自動算出。
論理の飛躍による計算ミスを防ぎ、最終結果をパース可能なJSON形式で取得すること。
【プロンプト設計のループ】
graph TD
A["設計: 思考ステップの明示化"] --> B["実行: Gemini 1.5 Pro/GPT-4o"]
B --> C["評価: 出力JSONの妥当性検証"]
C -->|計算ミス・形式不備の修正| A
設計: ユーザーの入力を受け取った後、答えを出す前に「思考プロセス」を書き出すよう指示します。
実行: ゼロショットではなく、思考プロセスを含むFew-shot例を提示して実行します。
評価: 最終的なJSON値が、思考プロセス内の計算結果と一致しているかをLLM-as-a-Judgeで検証します。
【プロンプトの実装案】
# Role
あなたは物流コスト計算の専門家です。与えられた条件に基づき、正確なステップを経て運賃を算出してください。
# Constraints
- 回答の前に必ず「## 思考プロセス」セクションを設け、計算の全ステップを記述してください。
- 最終結果は必ず指定のJSONフォーマットで出力してください。
- 割引の適用順序(①基本料金 -> ②重量加算 -> ③割引適用)を遵守してください。
# Example
Input: { "weight": 10, "distance": 100, "rate": 50, "discount": 0.1 }
Output:
## 思考プロセス
1. 基本料金の算出: 100km * 50円 = 5,000円
2. 重量加算: 10kgなので、1kgあたり100円加算 = 1,000円
3. 小計: 6,000円
4. 割引適用: 6,000円 * (1 - 0.1) = 5,400円
5. 最終結果をJSONに変換。
```json
{
"subtotal": 6000,
"final_price": 5400,
"currency": "JPY"
}
Task
Input: {{USER_INPUT}}
### 【評価指標と誤り分析】
| 評価項目 | 期待される挙動 | 失敗パターン(要改善) |
| :--- | :--- | :--- |
| **計算精度** | 思考プロセスの各ステップが算術的に正しい | 小計は正しいが最終合計で計算ミスが発生 |
| **形式遵守** | JSONが有効で、プログラムでパース可能 | コードブロック外に余計な解説テキストが漏れる |
| **論理一貫性** | 思考プロセスとJSONの値が一致している | 思考プロセスでは割引を適用しているがJSONで未反映 |
### 【改良後の最適プロンプト】
```text
# Mission
複雑な運賃計算タスクを、論理的整合性を保ちながら完遂してください。
# Rules
1. <thinking> タグ内で、計算の根拠となる数式とステップを1つずつ書き出してください。
2. 計算結果の整合性をセルフチェックしてください。
3. 最後に <result> タグ内でJSONのみを出力してください。
# Evaluation Context
- Gemini 1.5 Pro/Flashの場合:コンテキスト長を活かし、過去の複雑な計算パターンをFew-shotとして3件以上追加すると精度が最大化します。
- GPT-4oの場合:計算ミスが懸念される場合、「Pythonツールを使用して計算せよ」という指示を併用するのが最適です。
# Input Data
{{USER_INPUT}}
【まとめ】
思考の強制分離: thinkingタグ等を用いて、モデルに「考えるフェーズ」と「答えるフェーズ」を明示的に分けさせること。
計算順序の明文化: 割引率や税率の適用タイミングを「計算ルール」として箇条書きで定義すること。
構造化出力の徹底: プログラム連携を前提とする場合、Markdownのコードブロック以外を出力させないネガティブプロンプトを併用すること。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント