論理的推論を深化させるCoTプロンプト:複雑な在庫管理ロジックの解決

Tech

この回答では、複雑な計算と論理推論を必要とする「在庫補充計画」を題材に、Chain-of-Thought (CoT) を活用したプロンプト設計を行います。推論ステップの構造化、Few-shotによる思考パターンの固定、および誤り分析に基づくLLM-as-a-Judgeの基準策定という、実務的な最適化プロセスを提示します。

[METADATA] { “expert_type”: “Prompt Engineer”, “methodology”: “Chain-of-Thought (CoT) Optimization”, “target_models”: [“Gemini 1.5 Pro”, “GPT-4o”], “version”: “1.0.1” } [/METADATA]

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

論理的推論を深化させるCoTプロンプト:複雑な在庫管理ロジックの解決

【ユースケース定義と課題】

複数拠点の在庫変動、リードタイム、予測需要を統合した補充計算。計算ステップが多いため、中間計算での脱落や論理矛盾が発生しやすい。

  • 入力: 拠点別在庫データ、需要予測値(Markdown/CSV形式)

  • 出力: 補充推奨数と計算根拠(JSON形式)

【プロンプト設計のループ】

graph TD
A["設計: 思考ステップの定義"] --> B["実行: Few-shot CoTの投入"]
B --> C["評価: 推論過程の論理チェック"]
C -->|計算ミスの修正| A
  1. 設計: LLMが辿るべき思考の道筋(現状確認→需要分析→過不足算出→最終決定)を定義します。

  2. 実行: 思考過程を含めた正解例(Few-shot)を与え、モデルの推論をガイドします。

  3. 評価: 最終結果だけでなく、途中の数式や論理に飛躍がないかをスコアリングします。

【プロンプトの実装案】

# 指示

あなたは高度なサプライチェーン・アナリストです。
以下のデータに基づき、各商品の補充推奨数を算出してください。
回答は、必ず【思考プロセス】を記述した後に、指定のJSON形式で出力してください。

# 思考プロセスの手順


1. 各拠点の現在庫と安全在庫の差分を算出する。

2. リードタイム期間中の予測需要を合算する。

3. 必要補充量 = (安全在庫 + 予測需要) - 現在庫 を計算する。

4. 負の値(過剰在庫)の場合は補充0とする。

# 例示 (Few-shot CoT)

入力: 商品A, 現在庫10, 安全在庫20, 予測需要15
思考プロセス:

- 現在、安全在庫に対して10個不足している。

- 予測需要15個を加味すると、合計で25個の在庫が必要。

- 補充推奨数は25個となる。
出力: {"item": "商品A", "replenishment": 25}

# 対象データ

[ここにデータを入力]

# 出力形式

{
  "reasoning": "思考プロセスの要約",
  "results": [
    {"item": "商品名", "replenishment": 数値}
  ]
}

【評価指標と誤り分析】

評価項目 期待値 失敗パターン 対策
推論整合性 思考プロセスとJSONの値が一致 思考では「25」と言いつつJSONで「10」と出力 Step-by-stepの強制と出力形式の再定義
計算精度 四則演算が正確である 桁の読み間違い、単純な足し算ミス Pythonコード実行(Code Interpreter)の併用検討
フォーマット 有効なJSON形式 思考プロセスがJSON内に混入する デリミタ(###)による明確な構造分離

【改良後の最適プロンプト】

# 役割

論理的推論に長けたSCM専門家

# タスク

提供された在庫データに基づき、補充計画を策定せよ。

# 思考制約 (Chain-of-Thought)

回答を作成する前に、以下のステップで「思考の連鎖」を書き出してください。

1. **現状分析**: 各項目の数値を正確に把握する。

2. **需要計算**: 期間中の総需要を特定する。

3. **論理チェック**: 在庫が足りているか、補充が必要か、計算式を2回確認する。

# 出力ルール


- 思考プロセスは ` <thought> ` タグ内に記述すること。

- 最終結果は ` <json> ` タグ内に厳密なJSON形式で出力すること。

- 根拠のない推測(ハルシネーション)は一切排除すること。

# データ

[データ挿入]

【まとめ】

  1. 思考の可視化: Let's think step by step だけでなく、具体的なステップ(手順1, 2…)を指示に組み込む。

  2. タグによる構造化: <thought><json> のように、推論用と出力用の領域を明確に分けることで、パースエラーを防ぐ。

  3. Few-shotの有効活用: 複雑なタスクほど、1つの完璧な回答例がLLMの振る舞いを劇的に安定させる。

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました