思考モードとは

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を設定し、無駄を避けることをお勧めします