DeepSeek API の概要と料金

DeepSeek API は、現在最もコストパフォーマンスの高い大規模モデル API の 1 つです。OpenAI SDK と完全互換であり、開発者は base_url を変更するだけでシームレスに切り替えることができます。API は 2 つの主要モデルを提供しています:deepseek-chat(V3 シリーズ相当)と deepseek-reasoner(R1 シリーズ相当)。2026 年 7 月現在、DeepSeek の API 料金は同種製品の約 10 分の 1 です:入力は約 100 万トークンあたり 1 元、出力は約 100 万トークンあたり 2 元です。中小規模のアプリケーションでは、月額数十元で大量のリクエストをカバーできます。

基本的な呼び出し例

DeepSeek API は OpenAI SDK と互換性があり、インストールと呼び出しは非常に簡単です:

pip install openai
from openai import OpenAI

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

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "あなたは役立つAIアシスタントです。"},
        {"role": "user", "content": "人工知能について一文で紹介してください。"}
    ],
    temperature=0.7,
    max_tokens=200
)

print(response.choices[0].message.content)

DeepSeek API は OpenAI Playground の Custom Endpoint モードでも設定して使用できます。Base URL を https://api.deepseek.com/v1 に設定すると、使い慣れたインターフェースでさまざまなプロンプトをテストできます。

ストリーミング出力の詳細

ストリーミング出力は、タイプライター効果を実現するための重要な技術です。ユーザーは AI の応答をリアルタイムで確認でき、知覚遅延を大幅に削減できます:

stream = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "プログラミングについての五言絶句を書いてください"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

ストリーミング出力は、チャットアプリケーションやコード生成などのシナリオで重要です。ユーザー向けの AI アプリケーションでは、SSE(Server-Sent Events)を使用してフロントエンドにプッシュするストリーミング出力を有効にすることをお勧めします。本番環境では、ネットワーク切断の再試行とストリーミングのタイムアウト処理に注意してください。

Function Calling の実践

Function Calling により、AI は外部ツールや API を呼び出すことができます。これは Agent アプリケーションを構築するための核となる機能です:

tools = [{
    "type": "function",
    "function": {
        "name": "get_stock_price",
        "description": "指定された株式のリアルタイム価格を取得します",
        "parameters": {
            "type": "object",
            "properties": {
                "symbol": {
                    "type": "string",
                    "description": "株式コード、例:AAPL、GOOGL"
                }
            },
            "required": ["symbol"]
        }
    }
}]

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "アップルの株価は今いくらですか?"}],
    tools=tools
)

tool_call = response.choices[0].message.tool_calls[0]
print(f"呼び出し関数: {tool_call.function.name}")
print(f"引数: {tool_call.function.arguments}")

本番環境で Function Calling を使用する際の注意点:ツールの説明は明確かつ正確に、パラメータ検証は省略不可、ツール呼び出しの結果はモデルに適切にフィードバックし、ループ呼び出しによる無限再帰を避けること。

レート制限とエラーハンドリング

DeepSeek API にはレート制限があり、超過すると 429 エラーが返されます。本番環境では、堅牢なエラーハンドリングと再試行メカニズムを実装する必要があります:

import time
from openai import RateLimitError, APIError

def call_with_retry(messages, max_retries=5):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="deepseek-chat",
                messages=messages
            )
        except RateLimitError as e:
            wait = 2 ** attempt  # 指数バックオフ
            print(f"レート制限、{wait} 秒待機して再試行...")
            time.sleep(wait)
        except APIError as e:
            if e.status_code >= 500:
                wait = 2 ** attempt
                print(f"サーバーエラー、{wait} 秒待機して再試行...")
                time.sleep(wait)
            else:
                raise
    raise Exception("最大再試行回数に達しました")

重要な戦略:指数バックオフ、ランダムジッター(群集効果の回避)、最大再試行回数の設定、再試行可能なエラー(429/5xx)と再試行不可能なエラー(4xx)の区別。

マルチモデル選択戦略

DeepSeek は 2 つの主要モデルを提供しています:deepseek-chat(V3)deepseek-reasoner(R1)。V3 モデルは、会話、翻訳、要約、コード生成など、ほとんどの一般的なタスクに適しています。応答速度が速く、コストパフォーマンスに優れています。R1 モデルは深い推論に優れており、数学、プログラミング、論理的推論など厳密な思考が必要なタスクで卓越した性能を発揮しますが、応答時間が長く、コストがやや高くなります。実用的な戦略は、デフォルトで V3 を使用し、深い推論が必要なタスクでは R1 に切り替えることです。簡単なルーターを設定することもできます:

def select_model(user_message):
    reasoning_keywords = ["推論", "証明", "数学", "論理", "分析"]
    if any(kw in user_message for kw in reasoning_keywords):
        return "deepseek-reasoner"
    return "deepseek-chat"

model = select_model("ピタゴラスの定理を証明するのを手伝ってください")
print(f"選択モデル: {model}")

本番環境のベストプラクティス

再試行とフォールバック:指数バックオフ再試行に加えて、フォールバック戦略を実装します。DeepSeek API が利用できない場合、自動的にバックアップモデルに切り替えるか、キャッシュされた結果を返します。リクエストキャッシュ:繰り返しのクエリに対して、Redis やインメモリキャッシュを使用して結果を保存し、API 呼び出し回数とコストを削減します。類似した質問に対してキャッシュにヒットするセマンティックキャッシュは、完全一致キャッシュよりも実用的です。コネクションプール管理:HTTP 接続を再利用し、リクエストごとに新しい接続を確立しないようにします。httpx と OpenAI SDK はデフォルトでコネクションプールをサポートしています。リクエストキュー:高並行性シナリオでは、メッセージキュー(Redis Queue など)を使用してリクエストを非同期に処理し、トラフィックの急増を平滑化します。ログと監視:各 API 呼び出しの遅延、トークン消費、ステータスコードを記録し、アラートルールを設定します。これにより、コストを追跡できるだけでなく、異常を迅速に検出できます。

コスト最適化戦略

トークン消費を制御することは、API コストを削減する鍵です:より短いシステムプロンプトを使用する(システムプロンプトはリクエストごとにトークンとしてカウントされます)、max_tokens の出力長を制限する、履歴会話を要約して圧縮し完全なコンテキストを保持しない、よくある質問への応答をキャッシュする。もう 1 つのコスト削減方法は、DeepSeek のオープンソースモデルをローカルにデプロイすることです。大量のオフラインバッチタスクでは、ローカル推論の方が API 呼び出しよりも経済的です。高頻度で呼び出す小規模アプリケーションでは、予期しない超過を避けるために、毎日の予算アラートを設定することをお勧めします。

Agent ツールチェーンを編成してみませんか?

スキルチェーン編成を探索 →