思考モードとは
DeepSeek V4シリーズ(FlashおよびPro)は、どちらも思考モード(Thinking Mode)をサポートしています。これはDeepSeekの推論能力における大きな進歩です。思考モードを有効にすると、モデルは最終回答を生成する前に内部の推論チェーン分析を行います。これはOpenAI o1/o3のChain-of-Thoughtメカニズムに似ていますが、DeepSeekはこれをオプション機能として提供しており、単一のモデルが非思考モードと思考モードの両方をサポートし、パラメータで柔軟に切り替えられます。
思考モードの有効化
thinkingパラメータで制御します:
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ.get('DEEPSEEK_API_KEY'),
base_url='https://api.deepseek.com'
)
response = client.chat.completions.create(
model='deepseek-v4-pro',
messages=[
{'role': 'system', 'content': 'You are a helpful assistant'},
{'role': 'user', 'content': 'ルート2が無理数であることを証明してください'}
],
extra_body={'thinking': {'type': 'enabled'}},
reasoning_effort='high'
)
print('思考プロセス:', response.choices[0].message.reasoning_content)
print('最終回答:', response.choices[0].message.content)reasoning_effortの3段階の詳細
| レベル | 効果 | トークン消費 | 適用シナリオ |
|---|---|---|---|
| low | 高速推論、軽量な思考 | 最小 | 簡単な数学問題、常識判断 |
| medium | デフォルト、速度と深さのバランス | 適度 | 中程度の複雑さの推論、コードデバッグ |
| high | 深い推論、最も完全な思考チェーン | 最大 | 数学の証明、複雑なロジック、競技問題 |
思考チェーンの抽出と表示
思考内容はreasoning_contentフィールドにあります。フロントエンド表示では、折りたたみ可能な領域にまとめることをお勧めします:
// Node.jsの例
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'https://api.deepseek.com',
apiKey: process.env.DEEPSEEK_API_KEY,
});
const completion = await openai.chat.completions.create({
messages: [
{ role: 'system', content: 'あなたは数学の専門家です' },
{ role: 'user', content: '方程式 x2 - 5x + 6 = 0 を解いてください' }
],
model: 'deepseek-v4-flash',
thinking: { type: 'enabled' },
reasoning_effort: 'medium',
});
console.log('推論チェーン:', completion.choices[0].message.reasoning_content);
console.log('回答:', completion.choices[0].message.content);デュアルモード切り替え戦略
ベストプラクティスは、タスクの種類に応じてモードを動的に選択することです:
- 非思考モード:日常会話、翻訳、要約、簡単なQ&A—より速く、より安い
- 思考モード:数学、プログラミング、論理的推論、複雑な分析—品質優先
- 戦略:まず非思考モードで迅速に応答し、回答の品質が不十分な場合は、自動的に思考モードにアップグレードして再試行します
料金ルール
思考モードで生成されるトークンは2種類に分けられます:推論トークン(reasoning_content)は入力価格で課金され、出力トークン(content)は出力価格で課金されます。V4 Flash思考モードの推論トークン価格は¥1/百万トークン、V4 Proは¥3/百万トークンです。
注意事項
- FIM補完は非思考モードのみサポート
- 思考モードのreasoning_contentは別途解析する必要があります
- ストリーミング出力では、思考内容もチャンクで返されます
- タスクの複雑さに応じて適切なreasoning_effortを設定し、無駄を避けることをお勧めします