モデル選定を理解する必要がある理由

DeepSeek は現在、2つの主要なモデルラインを提供しています:V3シリーズ(汎用対話/生成)とR1シリーズ(深い推論)です。多くの開発者が実際の使用で困惑に直面しています:いつV3を使い、いつR1を使うべきか?モデルを誤って選ぶと、軽く見積もってもコストの無駄になり、重く見積もるとアプリケーションの効果に影響します。この記事では、複数の観点から選定の考え方を整理し、すべてのお金を有効に使えるようにします。

簡単に言えば、V3は「速射砲」で、反応が速く、カバーするシナリオが広く、コストが低いです。R1は「思考者」で、深い推論、数学、複雑な論理に優れていますが、速度が遅く、コストがやや高めです。この核心的な違いを理解すれば、選定ロジックの80%を把握したことになります。

性能比較の概要

以下は、主要な次元での2つのモデルの比較です(公開ベンチマークデータに基づく):

次元DeepSeek-V3DeepSeek-R1
汎用対話★★★★★★★★★☆
コード生成★★★★★★★★★★
数学的推論★★★★☆★★★★★
論理的推論★★★★☆★★★★★
クリエイティブライティング★★★★★★★★★☆
翻訳品質★★★★★★★★★☆
応答速度★★★★★★★★☆☆
長文処理★★★★★★★★★☆
コスト効率★★★★★★★★★☆

表から明らかなように、V3は大多数の一般的なタスクでより良い選択です。R1の強みは、深い推論を必要とするシナリオに集中しています——これが名前の「R」(Reasoner)の意味です。

適用シナリオ分析

V3を優先するシナリオ:日常会話とカスタマーサポート、コンテンツ作成と翻訳、コード生成と補完(通常)、ドキュメント要約と分析、RAG知識ベースQ&A、Function Callingツール呼び出し。V3の応答速度が速く、遅延が低いため、リアルタイム対話アプリケーションの構築に最適です。実際のビジネスシナリオの95%では、V3の性能で十分か、期待を超えることさえあります。

R1を優先するシナリオ:複雑な数学問題の解決、アルゴリズム設計と最適化、論理的推論と議論、コードレビューとデバッグ(複雑なロジック)、科学研究とデータ分析、推論プロセスを示す必要があるタスク。R1は「深い思考」を行います——回答を生成する前に多段階の推論を行います。この特性により、厳密な議論が必要なシナリオに特に適しています。しかし、これはR1の最初のトークンまでの遅延(TTFT)がV3よりも大幅に高いことを意味します。

ハイブリッド利用戦略:最も効率的な方法は、タスクタイプに基づいて動的にルーティングすることです。例えば、AIプログラミングアシスタントでは、通常のコード補完にはV3を使用し、複雑なアルゴリズム問題に遭遇したときに自動的にR1に切り替えます:

def route_model(user_input):
    complexity_signals = [
        "最適化", "証明", "導出", "複雑度", "再帰",
        "動的計画法", "貪欲法", "バックトラッキング", "デザインパターン",
        "なぜ", "原理の説明", "内部"
    ]
    if any(signal in user_input for signal in complexity_signals):
        return "deepseek-reasoner"
    return "deepseek-chat"

model = route_model("このコードの時間複雑度は?")
print(f"ルーティング先: {model}")  # deepseek-reasoner

コスト計算とトークン消費

2026年7月現在、DeepSeekのAPI価格は、V3が入力約¥1/百万トークン、出力約¥2/百万トークンで、R1は同等かやや高めです。ただし、R1の推論プロセス(thinking tokens)も出力消費にカウントされることに注意が必要です。R1の典型的な深い推論では、5,000〜20,000トークンの思考プロセスが生成される可能性があり、この部分も課金されます。したがって、同じタスクのR1での実際のコストはV3の2〜5倍になる可能性があります。推論プロセスを見る必要がない場合は、API呼び出し時にreasoning_contentを表示しないようにできますが、コストは発生します。

コスト最適化の提案:デフォルトでV3を使用してリクエストの80%を処理する。深い推論が本当に必要な場合にのみR1を使用する。V3の応答をキャッシュして重複呼び出しを避ける。システムプロンプトを短くして毎回の呼び出しのトークン消費を減らす。各R1呼び出しのトークン消費を監視し、異常アラートを設定する。

実際のコード例:2つのモデルの比較テスト

以下のコードで、2つのモデルの違いを直感的に確認できます:

from openai import OpenAI
import time

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com"
)

def test_model(model_name, prompt):
    start = time.time()
    response = client.chat.completions.create(
        model=model_name,
        messages=[{"role": "user", "content": prompt}]
    )
    elapsed = time.time() - start
    content = response.choices[0].message.content
    tokens = response.usage.total_tokens
    print(f"モデル: {model_name}")
    print(f"遅延: {elapsed:.1f}秒")
    print(f"トークン: {tokens}")
    print(f"返答: {content[:200]}...")
    print("-" * 50)

task = "カタツムリが毎日3メートル登り、夜に2メートル滑り落ちます。井戸の深さは10メートルです。何日で這い出せますか?推論プロセスを示してください。"
test_model("deepseek-chat", task)
test_model("deepseek-reasoner", task)

このコードを実行すると、R1の思考連鎖がはっきりと見えます——「初日は3メートル登り2メートル滑り落ちて正味1メートル...」と段階的に推論し、正しい答えに到達します。一方、V3は直接答えを出すかもしれません(推論が不足しているために間違えることもあります)。これが2つのモデルの最も本質的な違いです。

まとめと選定の提案

V3とR1のどちらを選ぶかは、タスクが「深い推論」を必要とするかどうかにかかっています。日常のタスクの95%では、V3がより速く、より安く、より良い選択です。R1の価値は、「慎重に考える必要がある」タスクにあります。

「考える」というタスク——人間の専門家のように問題を分析できる。私の提案は:デフォルトはV3、必要に応じてR1。アプリケーションにシンプルなルーターを実装し、タスクの複雑さに応じてモデルを自動的に切り替える。これにより、V3の効率性と低コストを享受しつつ、重要な場面でR1の深い推論能力を活用できる。

Agentワークフローでモデルを柔軟に切り替えたいですか?

さらにチュートリアルを見る →