<p><meta_info>
style_prompt: technical_expert_v2
task_type: prompt_engineering_guide
focus: Chain-of-Thought (CoT)
</meta_info></p>
<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">CoT(思考連鎖)プロンプトによる複雑なビジネスロジック計算の自動化手法</h1>
<h3 class="wp-block-heading">【ユースケース定義と課題】</h3>
<p>複数の割引条件や会員ランク、期間限定キャンペーンが重複する複雑なECサイトの「最終決済金額」を正確に算出する。LLMが計算順序を誤ったり、特定の条件を見落としたりする不正確さを解消し、JSON形式で安定出力させる。</p>
<h3 class="wp-block-heading">【プロンプト設計のループ】</h3>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["設計: 思考ステップの定義"] --> B["実行: Zero-shot/Few-shot CoT"]
B --> C["評価: 計算精度とJSON構造の検証"]
C -->|改善: 制約条件の明文化| A
</pre></div>
<ol class="wp-block-list">
<li><p><strong>設計</strong>: ロジックを分解し、LLMに「解くべき順序」を提示。</p></li>
<li><p><strong>実行</strong>: 計算過程(思考の跡)を明示的に出力させるプロンプトを適用。</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
以下の「注文データ」に基づき、適用される全ての割引を考慮した「最終合計金額」を算出してください。
# Constraints
- 計算を開始する前に、必ず「Step-by-Step(一歩ずつ)」思考プロセスを書き出してください。
- 割引の適用順序は:1.商品単価割引 -> 2.クーポン割引 -> 3.会員ランク特典 の順です。
- 出力は必ず指定されたJSON形式のみとしてください。
# Example
Input: { "order": 10000, "coupon": "10%OFF", "rank": "Gold(5%OFF)" }
Thought:
1. 商品単価合計を確認:10,000円
2. クーポン10%を適用:10,000 * 0.9 = 9,000円
3. 会員特典5%を適用:9,000 * 0.95 = 8,550円
Output: { "final_price": 8550 }
# Input Data
[対象データ入力]
</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>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>論理的整合性</strong></td>
<td style="text-align:left;">割引の適用順序がランダムになる</td>
<td style="text-align:left;">プロンプト内で「計算順序」を番号付で強制する</td>
</tr>
<tr>
<td style="text-align:left;"><strong>計算精度</strong></td>
<td style="text-align:left;">四捨五入や端数処理のミス</td>
<td style="text-align:left;">「端数は切り捨て」等の処理ルールを明文化する</td>
</tr>
<tr>
<td style="text-align:left;"><strong>出力形式</strong></td>
<td style="text-align:left;">思考プロセスがJSON内に混入する</td>
<td style="text-align:left;">思考用タグ(<code><thought></code>)の使用を指定する</td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">【改良後の最適プロンプト】</h3>
<div class="codehilite">
<pre data-enlighter-language="generic"># Instruction
以下の情報を処理し、正確な決済金額を算出してください。
# Step-by-Step Analysis (Required)
計算の各段階を以下の形式で記述してください:
1. 適用可能な割引のリストアップ
2. 順序に基づいた段階的な計算過程
3. 最終金額の確認
# Output Format
```json
{
"analysis": "思考プロセスをここに記述",
"result": {
"subtotal": 数値,
"discount_applied": ["割引名1", "割引名2"],
"total_amount": 数値
}
}
</pre>
</div>
<h1 class="wp-block-heading">Rules</h1>
<ul class="wp-block-list">
<li><p>計算過程を省略しないでください。</p></li>
<li><p>税率は10%固定とし、最後に加算してください。
“`</p></li>
</ul>
<h3 class="wp-block-heading">【まとめ】</h3>
<ol class="wp-block-list">
<li><p><strong>「一歩ずつ考えろ」と命じる</strong>: 複雑なタスクでは、結論の前に思考プロセスを出力させることが精度向上の鍵。</p></li>
<li><p><strong>計算順序を明示する</strong>: LLMはデフォルトでは並列処理に近い推論を行うため、直列のロジック(順序)を指定する。</p></li>
<li><p><strong>構造化データで回収する</strong>: 思考プロセスを許容しつつ、最終結果はJSON等の機械可読な形式でラップする。</p></li>
</ol>
style_prompt: technical_expert_v2
task_type: prompt_engineering_guide
focus: Chain-of-Thought (CoT)
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
CoT(思考連鎖)プロンプトによる複雑なビジネスロジック計算の自動化手法
【ユースケース定義と課題】
複数の割引条件や会員ランク、期間限定キャンペーンが重複する複雑なECサイトの「最終決済金額」を正確に算出する。LLMが計算順序を誤ったり、特定の条件を見落としたりする不正確さを解消し、JSON形式で安定出力させる。
【プロンプト設計のループ】
graph TD
A["設計: 思考ステップの定義"] --> B["実行: Zero-shot/Few-shot CoT"]
B --> C["評価: 計算精度とJSON構造の検証"]
C -->|改善: 制約条件の明文化| A
設計: ロジックを分解し、LLMに「解くべき順序」を提示。
実行: 計算過程(思考の跡)を明示的に出力させるプロンプトを適用。
評価: 期待値との差分を分析し、ハルシネーション(嘘の計算)を特定。
【プロンプトの実装案】
# Role
あなたは正確無比な計算を行うシニア・ビジネスアナリストです。
# Task
以下の「注文データ」に基づき、適用される全ての割引を考慮した「最終合計金額」を算出してください。
# Constraints
- 計算を開始する前に、必ず「Step-by-Step(一歩ずつ)」思考プロセスを書き出してください。
- 割引の適用順序は:1.商品単価割引 -> 2.クーポン割引 -> 3.会員ランク特典 の順です。
- 出力は必ず指定されたJSON形式のみとしてください。
# Example
Input: { "order": 10000, "coupon": "10%OFF", "rank": "Gold(5%OFF)" }
Thought:
1. 商品単価合計を確認:10,000円
2. クーポン10%を適用:10,000 * 0.9 = 9,000円
3. 会員特典5%を適用:9,000 * 0.95 = 8,550円
Output: { "final_price": 8550 }
# Input Data
[対象データ入力]
【評価指標と誤り分析】
| 評価項目 |
失敗パターン |
対策 |
| 論理的整合性 |
割引の適用順序がランダムになる |
プロンプト内で「計算順序」を番号付で強制する |
| 計算精度 |
四捨五入や端数処理のミス |
「端数は切り捨て」等の処理ルールを明文化する |
| 出力形式 |
思考プロセスがJSON内に混入する |
思考用タグ(<thought>)の使用を指定する |
【改良後の最適プロンプト】
# Instruction
以下の情報を処理し、正確な決済金額を算出してください。
# Step-by-Step Analysis (Required)
計算の各段階を以下の形式で記述してください:
1. 適用可能な割引のリストアップ
2. 順序に基づいた段階的な計算過程
3. 最終金額の確認
# Output Format
```json
{
"analysis": "思考プロセスをここに記述",
"result": {
"subtotal": 数値,
"discount_applied": ["割引名1", "割引名2"],
"total_amount": 数値
}
}
Rules
【まとめ】
「一歩ずつ考えろ」と命じる: 複雑なタスクでは、結論の前に思考プロセスを出力させることが精度向上の鍵。
計算順序を明示する: LLMはデフォルトでは並列処理に近い推論を行うため、直列のロジック(順序)を指定する。
構造化データで回収する: 思考プロセスを許容しつつ、最終結果はJSON等の機械可読な形式でラップする。
ライセンス:本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント