Gemma 4には答えを出す前にモデルが「声に出して考える」組み込みthinkingモードがあります。数学の問題で誰かに作業を見せるように頼むようなもの — 追加のステップがしばしばより良い答えにつながります。
しかし常にトレードオフに値するわけではありません。いつ使うか、いつスキップするか分解しましょう。
Thinkingモードとは?
Thinkingモードでは、Gemma 4は最終的な答えを出す前に推論のチェーンを生成します。モデルは本質的に、問題をステップバイステップで処理する内部スクラッチパッドを持っています。
Thinkingなし:
User: What's 17 × 23?
Gemma 4: 391Thinkingあり:
User: What's 17 × 23?
Gemma 4: <think>
17 × 23
= 17 × 20 + 17 × 3
= 340 + 51
= 391
</think>
391Thinkingは<think>タグ内で発生します。アプリケーションはこの推論をユーザーに表示するか、除去して最終的な答えだけを使用できます。
Thinkingモードを有効にする方法
Ollamaで
# モデルのthinkingバリアントを使用
ollama run gemma4:26b-thinkingまたはbudget tokenパラメータでAPI経由:
import requests
response = requests.post("http://localhost:11434/api/chat", json={
"model": "gemma4:26b",
"messages": [
{"role": "user", "content": "Solve: If 3x + 7 = 22, what is x?"}
],
"options": {
"num_predict": 2048, # thinkingに十分なトークンを許可
},
"stream": False,
})
print(response.json()["message"]["content"])システムプロンプトで
システムプロンプト経由でもthinking動作をトリガーできます:
messages = [
{
"role": "system",
"content": "Think step by step before answering. Show your reasoning in <think> tags, then provide the final answer."
},
{
"role": "user",
"content": "A train leaves Chicago at 9 AM traveling 60 mph. Another leaves New York at 10 AM traveling 80 mph toward Chicago. The distance is 800 miles. When do they meet?"
}
]Budgetトークン
一部の実装では、モデルがどれだけthinkingするかをbudgetで制御できます:
# より多いbudget = より多いthinking = 遅いが良い
response = requests.post("http://localhost:11434/api/chat", json={
"model": "gemma4:26b",
"messages": [{"role": "user", "content": "Complex reasoning task here..."}],
"options": {
"num_predict": 4096, # thinkingの余地のための高いbudget
},
})Thinkingモードが役立つ時
Thinkingモードは多段階推論を要するタスクで輝きます:
数学と論理問題:
Thinkingなし:"答えは42"(時々間違っている)
Thinkingあり:ステップバイステップの作業 → 正しい答え複雑なコーディング:
Thinkingなし:正しく見えるが微妙なバグがあるコードを生成
Thinkingあり:エッジケース、データフローについて推論し、よりクリーンなコードを生成分析と比較:
Thinkingなし:表面的な答え
Thinkingあり:複数の角度を考慮し、トレードオフを検討同じ問題での実用的な比較:
| 問題タイプ | Thinkingなし | Thinkingあり | 改善 |
|---|---|---|---|
| 基本数学 (2+2) | 正しい | 正しい | なし |
| 多段階数学 | 約70%正しい | 約90%正しい | 大幅 |
| 論理パズル | 約50%正しい | 約80%正しい | 大きい |
| コードデバッグ | 明らかなバグを発見 | 微妙なバグを発見 | 大幅 |
| シンプルなQ&A | 高速、正確 | 遅い、正確 | なし(悪化:遅い) |
| 翻訳 | 良い | 同じ品質 | なし |
| クリエイティブライティング | 自然な流れ | 考えすぎに感じる可能性 | 悪化 |
Thinkingモードをスキップする時
以下にthinkingモードを使わない:
- シンプルなQ&A:「フランスの首都は?」にはchain of thoughtは不要
- 翻訳:thinkingモードは翻訳品質を改善せずにレイテンシーを追加
- クリエイティブライティング:追加の推論は出力を硬く、計画されすぎに感じさせる可能性
- チャット会話:自然なやり取りは形式的な推論から恩恵を受けない
- データ抽出:テキストから名前、日付、数字を取得するのはパターンマッチングで、推論ではない
- 高スループットアプリケーション:何千ものリクエストを処理する場合、2-3倍の遅延が問題。バッチ処理ガイドを参照。
パフォーマンスへの影響
Thinkingモードには実際のコストがあります:
| 指標 | Thinkingなし | Thinkingあり |
|---|---|---|
| 生成トークン | 100-500 | 300-2000 |
| 回答時間 | 1-5秒 | 3-15秒 |
| VRAM使用量 | ベースライン | 同じ(わずかに多いKVキャッシュ) |
| 回答品質(推論) | 良い | より良い |
| 回答品質(シンプル) | 良い | 同じ |
モデルはthinkingモードで2-5倍のトークンを生成します — 推論を書き出しているからです。Apple Silicon Macでは、これは:
- M2 Pro 16GB:シンプルな答え2秒 → Thinking答え6-8秒
- M4 Max 64GB:シンプルな答え1秒 → Thinking答え3-4秒
インタラクティブチャットでは、遅延が目立ちます。バッチ処理では、処理時間が2倍または3倍になる可能性があります。
実用例:ありとなし
実際の問題を見てみましょう:
プロンプト: "I have 3 red balls, 5 blue balls, and 2 green balls in a bag. If I draw 2 balls without replacement, what's the probability both are blue?"
Thinkingなし:
The probability is 5/10 × 4/9 = 20/90 = 2/9 ≈ 0.222正しいですが、問題がより難しければ、モデルはステップを飛ばして間違える可能性があります。
Thinkingあり:
<think>
Total balls: 3 + 5 + 2 = 10
Blue balls: 5
Probability of first ball being blue: 5/10
After drawing one blue ball:
- Remaining balls: 9
- Remaining blue: 4
Probability of second ball being blue: 4/9
Combined probability: 5/10 × 4/9 = 20/90 = 2/9
</think>
The probability of drawing 2 blue balls is 2/9, or approximately 22.2%.同じ答えですが、thinkingバージョンは各ステップで状態を明示的に追跡するため、より難しい問題のエラーを捉える可能性が高いです。
Thinkingを他の機能と組み合わせる
Thinking + JSON出力: 推論にthinkingモードを使用してから、構造化JSONを出力:
messages = [
{
"role": "system",
"content": """Think through the problem in <think> tags.
Then output your final answer as JSON (no other text after the JSON):
{"answer": number, "confidence": number, "reasoning_summary": string}"""
},
{"role": "user", "content": "Complex problem here..."}
]構造化出力の詳細については、JSON出力ガイドをご覧ください。
Thinking + ファインチューンモデル: 特定のドメイン用にGemma 4をファインチューンした場合、thinkingモードは複雑なドメイン特有の問題で推論品質をさらに改善できます。
次のステップ
- 異なるモデルでthinkingモードを試す:モデル選択ガイド
- 構造化出力と組み合わせる:JSON出力ガイド
- thinkingモードをローカルで実行:Ollamaセットアップガイド
- ハードウェアでのパフォーマンスを確認:Macパフォーマンスガイド
Stop reading. Start building.
~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.
Launch Playground />


