Anthropicプロンプトエンジニアリング: Extended thinking tips


## 1. はじめに
近年、**LLM（大規模言語モデル）の進化**により、複雑な問題解決が可能になってきました。
特に**プロンプトエンジニアリング**の手法は日々進化しており、多段階の思考プロセスを通じて高精度な出力を導くアプローチが注目を集めています。

本記事では、Anthropic社のClaudeを例に、**Extended Thinking**（拡張的思考モード）を活用する際の**技術的な考慮点**や**プロンプティング手法のベストプラクティス**を整理します。

https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/extended-thinking-tips

:::note info
上記URLの解説として、自分の解釈を混ぜた記事となっています。
正確な内容については、上記URLをご確認ください。
:::

---

## 2. Prompt Engineering の基本概念
**Prompt Engineering**とは、LLMに対して最適な入力（プロンプト）を設計し、モデルが適切な文脈や思考プロセスを経て、求める出力を返すように導く技術のことです。  
- **一般指示**：モデルに対し、大まかで包括的な指示を与える手法  
- **段階的指示**：手順を細かく指示し、ステップバイステップで解を導かせる手法  

どちらのアプローチを用いるかは、**タスクの種類**や**モデルの特性**に応じて柔軟に使い分ける必要があります。

---

## 3. Extended Thinkingの概要とメリット
**Extended Thinking**は、LLMが問題を**ステップバイステップ**で解く過程を“Thinking”部分で明示しながら、最終的な回答を作成するモードです。  
- **思考プロセスの可視化**：モデルがどのように問題にアプローチしているのかを確認できる  
- **複雑なタスクへの対応力向上**：段階的な検討を通じて、より難度の高い問題にも対応しやすくなる  
- **デバッグや指示修正が容易**：思考途中の段階で、誤ったアプローチに対して追加指示を与えることが可能  

**Extended Thinking**と**標準モード**を使い分ける基準はタスクの複雑さなどによります。

```mermaid
flowchart LR
    A[タスクの複雑性評価] --> B{大規模/複雑?}
    B -- Yes --> C[Extended Thinkingを選択]
    B -- No --> D[標準モードを選択]
    C --> E[問題解決を実行]
    D --> E[問題解決を実行]
```

---

## 4. 技術的考慮事項と設定のポイント
Extended Thinkingを利用する際、以下の**技術的ポイント**を把握しておくことが重要です。

1. **Thinking tokens（思考トークン）の最小バジェット：1024トークン**  
   - **必要最小限の思考容量**として1024トークンを確保することが推奨されています。  
   - タスクの複雑性に応じて段階的に増減させるとよいでしょう。

2. **32Kトークン超の思考負荷への対処：バッチ処理の推奨**  
   - タスクによっては32Kを超える大規模思考が必要になる場合がありますが、**ネットワーク制限やタイムアウト**の問題を避けるために**バッチ処理**を検討しましょう。

3. **言語の選択**  
   - **Extended Thinkingは英語で最高の性能**を発揮します。ただし、最終アウトプットはClaudeがサポートしている任意の言語で問題ありません。

4. **思考バジェットが1024トークン未満の場合**  
   - その場合は標準モード（thinkingオフ）で、**チェーン・オブ・ソート（Chain-of-thought）** に相当するプロンプト手法（例：XMLタグ＜thinking＞の利用）を推奨します。

---

## 5. 効果的なプロンプティング手法
### ・一般指示 vs. 段階的指示
- **一般指示**  
  ClaudeなどのLLMには、はじめは**大まかな指示**を与えるほうが有効なケースがあります。モデルの**創造的な思考**を阻害せずに、複数の解法を考慮させられるメリットがあります。  

- **段階的指示**  
  もしモデルの思考プロセスを読んで**微調整**したい場合や、解き方が限定的なタスクには**段階的指示**が効果的です。はじめは一般指示で試し、うまくいかない場合に段階的指示へ移行する**段階アプローチ**を推奨します。

```mermaid
flowchart TB
    A[一般指示で試す] --> B{結果は期待通り?}
    B -- Yes --> C[完了]
    B -- No --> D[段階的指示へ移行]
    D --> E[思考プロセスを修正]
    E --> B
```

### ・マルチショットプロンプティングの活用
**マルチショット（Few-shot）プロンプティング**を、Extended Thinkingと組み合わせることで、より高度な思考プロセスを実現できます。  
- **XMLタグの活用**  
  `<thinking>`や`<scratchpad>`タグを使用して、サンプルとして提示した思考プロセスを明示的に記述します。  
- Claudeは提示されたパターンを参考に、自らの**Extended Thinkingブロック**でも類似の思考手順を踏んで解答を導きます。

**例**  
```
ユーザー
数学の問題の解き方を教えるから、同じような問題を解いてほしい。

問題1：80の15％は？

<thinking>
80の15%を見つけるには
1. 15%を小数に変換する： 15% = 0.15
2. 掛ける： 0.15 × 80 = 12
</thinking>

答えは12である。

では、これを解いてみよう：
問題2：240の35％は？
```

上記のように**思考プロセスをサンプルとして提示**することで、類似問題の解法手順をトレースしやすくなります。

---

## 6. 長文出力と長期思考の最適化戦略
**Extended Thinking**をオンにすると、Claudeはより多くのトークンを用いて深く考察できるだけでなく、**長文出力**にも対応しやすくなります。  

- **大規模データセットの生成**  
  「Please create an extremely detailed table of…」などのプロンプトにより、**包括的で詳細なデータセット**を生成することが可能です。  
- **長文テキストや複雑な構成**  
  20,000ワードを超えるような**大規模テキスト**を生成する場合は、**思考バジェット**と**出力バジェット**の両方を充分に確保しつつ、**段階的にアウトラインを作成**→**段階ごとに本文を書く**という流れを推奨します。  

しかし、**闇雲に思考トークンを増やす**のではなく、**タスクに応じて最小限から少しずつ増やす**手法が効率的です。

---

## 7. デバッグと検証の方法
### デバッグと思考プロセスの修正
- **Extended Thinkingの思考部分を直接ユーザーから再入力しない**  
  ClaudeのThinkingプロセスをそのまま再度ユーザー入力として返すと、モデルが混乱する可能性があります。**思考の重複**や**誤学習**が起こりやすいため非推奨です。  
- **プリフィルは非推奨**  
  Extended Thinkingがオンの状態で**Thinking出力を手動で調整**することは推奨されていません。

### 設計的な検証フロー
モデルが出力した思考ステップを監視して、必要があれば追加指示を与えます。誤りを発見した場合は、同じ流れの中でモデルに再検証や修正を指示しましょう。

#### コード生成などの例
```
ユーザー
ある数の階乗を計算する関数を書きなさい。
完成する前に、以下のテストケースで解答を検証してください：
- n=0
- n=1
- n=5
- n=10
そして、見つかった問題を修正してください。
```
上記のように**テストケースを事前に指定**し、モデルが**Thinking**内で検証してから最終回答を出すことで**エラーを減らす**ことができます。

---

## 8. まとめと今後の展望
Claudeやその他のLLMを用いた**Extended Thinking**は、**複雑な問題**や**大量の情報**を扱う際に大きな可能性をもたらします。  
- **短期的には**：チェーン・オブ・ソート手法をはじめとした既存のプロンプト技術と組み合わせ、**デバッグ**や**思考の可視化**を柔軟に行うのが最適です。  
- **長期的には**：トークン制限やバッチ処理への対応など、システム基盤の強化が進むにつれて、さらに大規模かつ複雑なタスクでも**安定的かつ高速**に処理できるようになるでしょう。  

**Extended Thinking**を使いこなすことで、LLMのポテンシャルを最大限に引き出し、より高度な問題解決や大規模データ生成が実現可能になります。
今後もプロンプトエンジニアリングの技術的革新とともに、この手法の活用領域は拡大していくと考えられます。

以下の記事も参考にしてみてください。

https://qiita.com/syukan3/items/2d54a60122d232f28bde

https://qiita.com/syukan3/items/cbd6a4fcc02fe662877c

---

## 参考文献
- [Claudeドキュメント - Extended Thinkingについて](https://docs.anthropic.com/claude/docs)  
- [Extended thinking modelsガイドライン（Anthropic公式）](https://docs.anthropic.com/claude/docs/extended-thinking-models)

---
### 会社紹介

**株式会社 Mosaica**  
最先端テクノロジーで社会課題を解決し、持続可能な未来を創造する IT カンパニー。
AI ソリューション、クラウド統合、DX 推進、経営コンサルティングなど包括的なサービスでビジネス変革を支援しています。  

詳しくは [公式サイト](https://mosaica.co.jp/) までお気軽にご相談ください。
公式サイト： https://mosaica.co.jp/