DeepSeek V4 Proは2026年8月12日にプレビューを終了しました。0813の刻印が付いたGAビルドは、現在deepseek-v4-pro APIエンドポイントとして提供されています。コンテキストウィンドウは1Mトークン、最大出力は384Kトークン、キャッシュヒット時の入力価格は100万トークンあたり$0.003625です。Unite.AIの報道によると、4か月間のプレビューを経て、このモデルはDeepSeekの主力製品になりました。
この記事では、deepseek-v4-proを実際に組み込むための手順を扱います。OpenAI SDKでの初回リクエスト、思考モードとreasoning_content、ストリーミング、ツール呼び出し、そして1Mトークンのコンテキストを現実的なコストで使うためのプロンプトキャッシングを解説します。アーキテクチャの背景を先に確認したい場合は、「What is DeepSeek V4」を参照してください。
TL;DR
-
deepseek-v4-proは、2026年8月12日時点でGAスナップショット0813を提供する本番用エンドポイントです。 - APIはOpenAI互換です。
openaiSDKのbase_urlをhttps://api.deepseek.comに変更し、model="deepseek-v4-pro"を指定します。 - コンテキストウィンドウは1Mトークン、最大出力は384Kトークンです。
- 思考モードは
non-think、think high、think maxの3つで、推論内容はreasoning_contentに返されます。 - 入力価格はキャッシュミス時$0.435/M、キャッシュヒット時$0.003625/M、出力は$0.87/Mです。
- 固定のシステムプロンプトやリポジトリコンテキストを先頭に置き、可変データを末尾に置くとキャッシュヒット率を上げられます。
- 本番導入前に、Apidogで通常応答、SSEストリーム、
usage、Pro/Flashの差分を確認してください。
GAビルド0813で変わったこと
プレビューは2026年4月に開始され、V4 Flashは7月に公開されました。2026年8月12日、DeepSeekは通常のタイムスタンプ規則に従い、Proモデルをビルド0813としてGAに移行しました。
開発時に押さえるべき変更点は次の3つです。
評価対象が安定した
プレビューモデルは予告なく変わることがあり、プロンプト調整や評価結果が再現できない場合があります。0813は、次のスナップショットが発表されるまで固定されたターゲットです。本番ではエイリアスを呼び出せる
公式APIではdeepseek-v4-proを指定するとGAビルドを利用できます。特定スナップショットを明示する必要がある場合、OpenRouterではdeepseek/deepseek-v4-pro-0813として公開されています。GAエンドポイントで機能を使える
思考モード、関数呼び出し、構造化出力、プロンプトキャッシング、OpenAI/Anthropic/Responses形式のAPIを利用できます。
内部的には、V4 Proは総パラメータ数1.6T、トークンあたりのアクティブパラメータ数49BのMixture-of-Expertsモデルです。Compressed Sparse AttentionとHeavily Compressed Attentionにより、V3.2と比較してシングルシーケンストークンの推論計算は27%、KVキャッシュは10%に削減されています。このKVキャッシュ削減が、1Mトークンのコンテキストを現実的な価格で扱える背景です。
DeepSeek V4 Pro 0813の仕様
| スペック | DeepSeek V4 Pro 0813 |
|---|---|
| リリース | 2026年8月12日にGA(スナップショット0813) |
| アーキテクチャ | Mixture-of-Experts、総パラメータ数1.6T、アクティブパラメータ数49B/トークン |
| アテンション | Compressed Sparse Attention + Heavily Compressed Attention |
| V3.2比の推論コスト | シングルシーケンストークン計算27%、KVキャッシュ10% |
| コンテキストウィンドウ | 1,000,000トークン |
| 最大出力 | 384Kトークン |
| 思考モード |
non-think、think high、think max
|
| 入力価格 | $0.435/M(キャッシュミス)、$0.003625/M(キャッシュヒット) |
| 出力価格 | $0.87/M |
| API形式 | OpenAI Chat Completions、Anthropic Messages、DeepSeek Responses |
| モデルID | deepseek-v4-pro |
| 小型モデル |
deepseek-v4-flash(総パラメータ数284B、アクティブパラメータ数13B) |
DeepSeekのモデルカードでは、V4-Pro-Maxの最大思考設定でSWE-bench Verified 80.6%、Terminal Bench 2.0 67.9%、GPQA Diamond 90.1%、LiveCodeBench 93.5%が報告されています。これらはベンダーによる自己申告値であるため、移行判断には自分のタスク・データ・失敗条件に基づく評価を使ってください。
APIキーを取得して最初のリクエストを送る
セットアップ手順は次のとおりです。
- platform.deepseek.comでアカウントを作成し、クレジットを追加します。APIは前払い制です。
- APIキーを生成し、表示されたタイミングで安全な場所に保存します。
- キーをソースコードへ直接書かず、環境変数として設定します。
export DEEPSEEK_API_KEY="sk-..."
DeepSeek APIはOpenAI Chat Completionsプロトコルに対応しています。既存のopenaiパッケージを使い、ベースURLとモデル名を差し替えます。
pip install openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["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 concise technical assistant.",
},
{
"role": "user",
"content": "Explain idempotency in REST APIs in two sentences.",
},
],
)
print(response.choices[0].message.content)
print(response.usage)
https://api.deepseek.comとhttps://api.deepseek.com/v1はいずれもベースURLとして使用できます。/v1は互換性のためのパスであり、モデルのバージョンを示すものではありません。
usageを必ず記録する
初回からresponse.usageをログへ出力してください。V4 Proでは、キャッシュヒットとキャッシュミスで入力単価が大きく変わります。リクエスト数だけでなく、入力・出力トークン数とキャッシュ状況を確認しないと、実コストを判断できません。
HTTPレベルで確認する場合は、次のcurlリクエストを使えます。
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-v4-pro",
"messages": [
{
"role": "user",
"content": "List three ways to version a REST API."
}
]
}'
Anthropic互換エンドポイントやDeepSeek独自のResponses APIを含むパラメータ一覧は、公式DeepSeekドキュメントを確認してください。
3つの思考モードを使い分ける
V4 Proでは、推論能力を別モデルとしてではなく、reasoning_effortで切り替えます。
| モード | reasoning_effort |
向いているタスク |
|---|---|---|
| non-think | "none" |
分類、抽出、要約、フォーマット、単純な応答 |
| think high | "high" |
コーディング、デバッグ、多段階分析 |
| think max | "max" |
特に難しい推論、慎重な分析が必要な処理 |
think highとthink maxでは、通常の回答に加えて推論内容がreasoning_contentフィールドに返されます。
response = client.chat.completions.create(
model="deepseek-v4-pro",
reasoning_effort="high", # "none" | "high" | "max"
messages=[
{
"role": "user",
"content": (
"Our API returns 502s under load but only behind the CDN. "
"Walk through likely causes in order of probability."
),
},
],
)
message = response.choices[0].message
print("--- Reasoning ---")
print(message.reasoning_content)
print("--- Answer ---")
print(message.content)
実装上の注意点は2つです。
reasoning_contentを次ターンの会話履歴へ戻さない
継続会話では、以前の応答のcontentを送ります。推論内容まで履歴に含めないでください。思考トークンも出力として課金される
推論トークンは出力トークンとして$0.87/Mで課金されます。think maxを全リクエストのデフォルトにせず、難易度に応じて使い分けてください。
実装では、たとえば次のようなルーティングが実用的です。
def select_reasoning_effort(task_type: str) -> str:
if task_type in {"classification", "extraction", "formatting"}:
return "none"
if task_type in {"debugging", "coding", "analysis"}:
return "high"
if task_type in {"complex_planning", "hard_reasoning"}:
return "max"
return "high"
ストリーミング応答を処理する
最大384Kトークンの出力や思考モードを使う場合、非ストリーミング応答では待ち時間が長くなります。stream=Trueを指定し、reasoning_contentとcontentの両方のデルタを処理してください。
stream = client.chat.completions.create(
model="deepseek-v4-pro",
reasoning_effort="high",
stream=True,
messages=[
{
"role": "user",
"content": (
"Design a rate limiter for a public API. "
"Compare token bucket and sliding window."
),
},
],
)
for chunk in stream:
if not chunk.choices:
# 最終チャンクはusageのみを持つ場合がある
continue
delta = chunk.choices[0].delta
if getattr(delta, "reasoning_content", None):
print(delta.reasoning_content, end="", flush=True)
elif delta.content:
print(delta.content, end="", flush=True)
UIでは、推論フェーズを「思考中」として折りたたみ表示し、contentの受信開始後に通常の回答表示へ切り替える構成が扱いやすくなります。
内部的には標準のServer-Sent Events(SSE)です。SSEのイベント形式やクライアント実装は、SSEを使用したAPI応答のストリーミングガイドも参照してください。
ツール呼び出しと構造化出力
V4 ProはOpenAI形式の関数呼び出しをサポートしています。既存のエージェントループでは、ツール定義、tool_callsの取得、ツール実行、結果のメッセージ追加という流れをそのまま使えます。
tools = [
{
"type": "function",
"function": {
"name": "get_endpoint_status",
"description": "Check the health of an internal API endpoint",
"parameters": {
"type": "object",
"properties": {
"endpoint": {
"type": "string",
"description": "Path, e.g. /v1/orders",
},
},
"required": ["endpoint"],
},
},
},
]
response = client.chat.completions.create(
model="deepseek-v4-pro",
messages=[
{
"role": "user",
"content": "Is /v1/orders healthy right now?",
},
],
tools=tools,
)
tool_calls = response.choices[0].message.tool_calls
print(tool_calls)
ツール呼び出しを受け取ったら、引数を検証してからツールを実行します。モデル出力をそのまま内部APIやシェルへ渡さないことが重要です。
import json
for tool_call in tool_calls or []:
if tool_call.function.name != "get_endpoint_status":
continue
arguments = json.loads(tool_call.function.arguments)
endpoint = arguments["endpoint"]
# 実運用では許可リスト、認可、入力検証を必ず実装する
result = {"endpoint": endpoint, "status": "healthy"}
print(result)
確実に解析可能なJSONが必要な場合は、標準のresponse_formatパラメータを使用します。メッセージ形式や複数ターンのツールループについては、公式ドキュメントで最新仕様を確認してください。
プロンプトキャッシングの経済学
V4 Proで最も重要な実装ポイントの1つは、プロンプトキャッシングです。DeepSeekはプロンプトの繰り返しプレフィックスを自動キャッシュします。キャッシュ制御ヘッダーやTTL設定は不要です。
キャッシュミス時の入力価格は$0.435/Mですが、キャッシュヒット時は$0.003625/Mです。すでに送信した安定プレフィックスに対して、約120倍安い価格になります。
たとえば、200Kトークンのリポジトリコンテキストを維持し、1セッション中に50回呼び出すコーディングエージェントを考えます。
キャッシュなしの場合
50回 × 200Kトークン × $0.435/M ≈ $4.35自動キャッシュを活用した場合
初回ミス $0.087 + 49回のヒット 約$0.0007ずつ ≈ $0.12
同じセッションでも、プロンプトの並び順次第で入力コストが大きく変わります。
キャッシュを効かせるプロンプト構造
安定した内容を先頭へ、頻繁に変わる内容を末尾へ配置します。
[固定]
- システムプロンプト
- プロジェクトの規約
- リポジトリコンテキスト
- APIスキーマ
- 長期セッションの要約
[可変]
- 最新のユーザー入力
- 現在時刻
- リクエストID
- 直近のツール実行結果
悪い例は、毎回変わるタイムスタンプやリクエストIDをシステムプロンプトの先頭へ入れることです。プレフィックスの早い位置が変化すると、その位置以降のキャッシュを活用できません。
# 悪い例: 毎回異なる情報を先頭に置いている
messages = [
{
"role": "system",
"content": f"Current timestamp: {timestamp}\n\n{repository_context}",
},
{"role": "user", "content": user_prompt},
]
# 良い例: 安定コンテキストを先頭に固定する
messages = [
{
"role": "system",
"content": repository_context,
},
{
"role": "user",
"content": f"Timestamp: {timestamp}\n\nRequest: {user_prompt}",
},
]
1Mトークンのコンテキストは、毎回キャッシュミスすれば高価です。一方で、安定したセッションプレフィックスとして再利用できるなら、長大なドキュメントやコードベースを実用的なコストで参照できます。一般的なキャッシュ設計については、プロンプトキャッシングとは何かも参考になります。
Apidogでdeepseek-v4-proをテストする
本番コードへ組み込む前に、APIクライアントでリクエストと応答を確認しましょう。DeepSeek APIはOpenAI互換のため、Apidogでは通常のHTTPリクエストとしてテストできます。
実施する手順は次のとおりです。
curlリクエストをインポートする
先ほどのcurlコマンドをApidogに貼り付けます。ヘッダー、Bearer認証、JSON本文が編集可能なリクエストとして取り込まれます。ProとFlashの環境を分ける
base_url、APIキー、モデル名を環境変数に保存します。deepseek-v4-proとdeepseek-v4-flashを切り替え、同一プロンプトに対する品質・レイテンシー・トークン使用量を比較します。SSEを検査する
リクエスト本文に"stream": trueを設定します。ストリーミング時のreasoning_contentと回答テキストの到着順を確認し、遅延が推論フェーズと生成フェーズのどちらにあるかを切り分けます。評価リクエストをコレクションへ保存する
代表プロンプト、ツール呼び出し、構造化出力、長文コンテキストを含むリクエストを保存します。次のスナップショットや価格変更時に再実行すれば、導入前後の差分を比較できます。
各レスポンスのusageブロックを確認しながら、プロンプト構成を調整してください。キャッシュヒット率を追跡することで、設計変更がコストへ与える影響を早く把握できます。
現在の価格と値上げへの備え
2つのV4エンドポイントの価格は以下のとおりです。
| モデル | 入力(キャッシュミス) | 入力(キャッシュヒット) | 出力 |
|---|---|---|---|
deepseek-v4-pro |
$0.435/M | $0.003625/M | $0.87/M |
deepseek-v4-flash |
$0.14/M | — | $0.28/M |
2026年8月6日、DeepSeekは「大幅な」API料金値上げを予定していると警告しました。具体的な金額や適用日は明らかになっていません。
不確定な価格変更に備えるには、次を実施してください。
- 実際のリクエストから
usageを収集し、タスク単位の現行コストを測定する - 固定プレフィックスを活用し、キャッシュヒット率を最大化する
- 分類、抽出、単純な会話などは
deepseek-v4-flashへルーティングする - Proが必要な高難度タスクだけを
deepseek-v4-proへ送る - 価格改定後に再計算できるよう、入力・出力・失敗率のメトリクスを保持する
料金構造の詳細は、DeepSeek V4 API料金ガイドも参照してください。
よくある質問
既存のOpenAI SDKコードは変更なしで動作しますか?
ほぼそのまま使えます。変更箇所は主に以下です。
client = OpenAI(
api_key=os.environ["DEEPSEEK_API_KEY"],
base_url="https://api.deepseek.com",
)
呼び出し時にmodel="deepseek-v4-pro"を指定します。Chat Completions、ストリーミング、ツール呼び出し、構造化出力はOpenAI形式に従います。Anthropic SDKを使っている場合は、DeepSeekのAnthropic Messagesエンドポイントも利用できます。
V4 ProではなくV4 Flashを使うべきケースは?
deepseek-v4-flashは、分類、抽出、単純なチャット、整形、低レイテンシーが重要な処理に向いています。
deepseek-v4-proは、エージェント型コーディング、長文コンテキスト分析、複数段階の推論、思考モードを活用するワークロード向けです。モデルを固定せず、タスク種別・期待品質・許容コストでルーティングしてください。
CursorでV4 Pro 0813を使えますか?
CursorはカスタムのOpenAI互換エンドポイントをサポートしているため、GAビルドをカスタムモデルとして設定できます。具体的な設定手順は、CursorでDeepSeek V4 Proを使用する方法を参照してください。
まとめ
deepseek-v4-proを導入する際は、まず次の項目を実装・検証してください。
- APIキーを環境変数で管理する
- OpenAI SDKの
base_urlとモデル名を切り替える -
response.usageをログとメトリクスへ保存する - タスクに応じて
reasoning_effortを選ぶ - ストリーミングで
reasoning_contentとcontentを分けて処理する - 固定コンテキストを先頭に置き、プロンプトキャッシュを活用する
- 保存したリクエストコレクションで、次のスナップショットや価格変更時に再評価する
V4 Proでは、プロンプトの構造がコスト設計そのものになります。まずは上記のサンプルでusageを確認し、Apidogに評価用リクエストを保存して、実データでProとFlashの使い分けを決めてください。


Top comments (0)