DeepSeek V4.1 / V4
OpenAI Chat Completions、OpenAI Responses、Anthropic Messages のいずれかで DeepSeek V4.1 と V4 を呼び出します。
| 項目 | 値 |
|---|---|
| Base URL | https://api.hop-base.com/v1 |
| チャット | POST /v1/chat/completions |
| Responses | POST /v1/responses |
| Anthropic Messages | POST /v1/messages |
Bearer キーで認証し、正確なモデル ID は GET /v1/models から取得します。/v1/messages では x-api-key ヘッダーも使えます。
curl https://api.hop-base.com/v1/chat/completions \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-pro-202606",
"messages": [{
"role": "user",
"content": "Summarize this quarter'\''s risks in five bullets."
}]
}'モデル
| モデル ID | コンテキスト | 1 回あたりの最大出力トークン |
|---|---|---|
deepseek-v4.1-flash | 1M | 393,216 |
deepseek-v4.1-flash-1017 | 1M | 393,216 |
deepseek-v4-pro-202606 | 1,048,576 | 393,216 |
deepseek-v4-flash-202605 | 1M | 384,000 |
V4.1 Flash の思考内容は reasoning_content で返されます。DeepSeek の公式価格を基準に、公式のピーク/オフピーク制に従って課金されます。詳しくはピーク/オフピーク課金を参照してください。
V4.1 Flash は 2 つのバージョンを並行して提供しています。deepseek-v4.1-flash-1017 は 2026-10-17 版、deepseek-v4.1-flash は引き続き 0910 版で、そのまま使えます。料金もピーク/オフピークの時間帯も同じなので、用途に応じて選んでください。deepseek-v4.1-flash-1017 も画像を読み取れます。詳しくは画像入力を参照してください。
4 つのモデルはすべて「DeepSeek」プランに属しているため、1 つのキーですべて呼び出せます。
シンガポールのデータセンターで提供する deepseek-v4.1-flash-1017-sg は別のプランです。詳しくはシンガポールデータセンターを参照してください。
正式なモデルは上表の ID のみです。省略せず GET /v1/models から正確な ID を取得してください。
次の短縮名はいずれも同じ 404 model_not_found を返し、代替 ID は示されません:deepseek-v4-flash、deepseek-v4-pro、deepseek-chat、deepseek-reasoner、そして DeepSeek 自身の V4.1 Flash の短縮名 deepseek-flash。メッセージはリクエストの Accept-Language に従い、既定は英語です。
現在のグループは要求されたモデルをサポートしていません:<model>
The current group does not support the requested model: <model>ピーク/オフピーク課金
deepseek-v4.1-flash、deepseek-v4.1-flash-1017、deepseek-v4.1-flash-1017-sg は DeepSeek 公式のピーク/オフピーク制に従います。時刻はすべて北京時間(UTC+8)です。
- ピーク:月曜から金曜の 09:00–12:00 と 14:00–18:00。
- オフピーク:それ以外の時間。夜間、2 つの枠に挟まれた昼の時間帯、週末の終日を含みます。
- オフピークでは入力・キャッシュ入力・出力の単価がいずれも半額になります。
- 各枠は開始時刻を含み終了時刻を含みません。09:00:00 はすでにピーク、12:00:00 はすでにオフピークです。
課金はリクエストを開始した時刻ではなく、完了した時刻で判定されます。17:59 に開始して 18:01 に終わったリクエストは全体がオフピーク単価、08:59 に開始して 09:01 に終わったリクエストは全体がピーク単価です。
1 回のリクエストは常に 1 つの単価しか持たず、境界で分割されることはありません。そのため、同じモデルでも 1 分違いの 2 件の利用量レコードで単価が異なることがあります。お使いのキーに適用されるレートは、ログイン後のモデルカタログをご確認ください。
シンガポールデータセンター
deepseek-v4.1-flash-1017-sg は同じ V4.1 Flash 2026-10-17 版を、シンガポールのデータセンターから提供するモデルです。上表のモデルとは独立した供給です。「DeepSeek シンガポールデータセンター」プランに属し、すべてのユーザーがコンソールの「API キー」でこのプランをキーに追加できます。「DeepSeek」プランだけのキーで呼び出すと 404 になります。
| モデル ID | コンテキスト | 1 回あたりの最大出力トークン |
|---|---|---|
deepseek-v4.1-flash-1017-sg | 1M | 393,216 |
- 公式価格とピーク/オフピークの時間帯は
deepseek-v4.1-flash-1017と同じです。北京時間の平日 09:00–12:00 と 14:00–18:00 がピーク、それ以外は半額です。詳しくはピーク/オフピーク課金を参照してください。プラン独自の割引はコンソールでプランとともに表示されます。 POST /v1/chat/completions、POST /v1/responses、POST /v1/messagesのいずれも使えます。ストリーミング、ツール呼び出し、思考(reasoning_content)に対応しています。- プレフィックスキャッシュは自動で有効になり、キャッシュヒットはキャッシュ入力の単価で課金されます。
- 末尾の
-sgはモデル ID の一部です。付け外ししないでください。このページ後半のパラメータ表、画像入力、プレフィックス継続の説明は「DeepSeek」プランの 4 モデルが対象です。
エンドポイントとリクエストパラメータ
POST /v1/chat/completions、POST /v1/responses、POST /v1/messages は 4 モデルすべてで使え、どれもストリーミングが正常に動作します。Codex CLI は Responses、Claude Code は Anthropic Messages を使います。詳しくは Claude Code と Anthropic Messages を参照してください。
- Fill-in-the-Middle 補完は利用できません。この機能が使用するパスを HopBase がルーティングしていないためです。
- プレフィックス継続は利用できます。プレフィックス継続を参照してください。
下表は POST /v1/chat/completions の場合です。ゲートウェイが拒否するのは空の messages だけで、ほかの制限はモデル側のものです。
| パラメータ | 必須 | 型と制限 | デフォルト | 説明 |
|---|---|---|---|---|
model | 必須 | 上表の 4 つの ID のいずれか | — | 完全一致。短縮名は 404 |
messages | 必須 | 空でない配列 | — | role の値は下記 |
max_tokens | 任意 | 0 以上の整数。上限はモデル参照 | サービス既定 | 思考と回答で共有 |
temperature | 任意 | 数値 0–2 | サービス既定 | — |
thinking | 任意 | {"type": …} | V4.1 Flash はオン | 値は下記 |
reasoning_effort | 任意 | low / medium / high は実測で動作 | サービス既定 | 思考が有効なときのみ適用 |
tools、tool_choice | 任意 | OpenAI と同じ | auto | ツール呼び出し参照 |
stream | 任意 | 真偽値 | false | true で SSE ストリーミングを返します |
stream_options.include_usage | 任意 | 真偽値 | false | ストリーミングで usage を受け取るには true |
prefix | 任意 | 真偽値 | false | プレフィックス継続 |
image_url.url | 任意 | data: URI または https:// URL | — | deepseek-v4.1-flash と deepseek-v4.1-flash-1017 のみ |
messages[].roleはsystem/user/assistant/tool/developer。thinking.typeはenabled/disabled/adaptive。ほかの値(autoなど)は 400 です。- 負の
max_tokensは 400。上限超えは拒否されず、出力が黙って打ち切られます(推論の出力参照)。 stream_options.include_usageは課金に影響しません。prefixは最後のassistantメッセージにのみ指定します。image_url.urlを使う場合、リクエスト全体で 60 MB 以下です。
エラー文言は 2026-09 の本番記録から引用しています。
400 missing messages field messages の欠落(ゲートウェイ)
400 messages must not be an empty array messages が空配列(ゲートウェイ)
400 expected a value <= 2 temperature が 2 超/v1/responses では出力を max_output_tokens で制限し、値は 1–393,216 です。temperature も 0–2 で、caching を指定するリクエストは store: true も必要です。範囲外の場合:
400 max_output_tokens must be less than or equal to 393216全パラメータは API リファレンス:Chat Completions で DeepSeek モデルファミリーを選んで確認してください。
画像入力
deepseek-v4.1-flash と deepseek-v4.1-flash-1017 はネイティブに画像を読み取れます。エンドポイントは同じで、形式は標準的な OpenAI のコンテンツパートです。image_url.url には data: URI と公開 https:// URL のどちらも指定でき、1 つのメッセージに複数枚の画像を入れられます。
リクエストボディ全体の上限は 60 MB です。base64 で約 1/3 膨らむため、画像の合計は約 45 MB 以内に収め、大きな画像は https:// URL で渡してください。超えると次のエラーになります。
413 Request body exceeds the size limit (60 MB)画像は通常の入力として扱われ、prompt_tokens に計上されます。
deepseek-v4-pro-202606 と deepseek-v4-flash-202605 は画像を認識できません。画像を含むリクエストはモデルに届く前に 400 で拒否され、課金されません。Chat Completions、Responses、Anthropic Messages のどれでも同じです。Claude Code に貼り付けたスクリーンショットや、Claude Code が読み込む画像ファイルも対象です。画像を扱う作業には deepseek-v4.1-flash または deepseek-v4.1-flash-1017 を使ってください。
400 Model deepseek-v4-pro-202606 does not accept image input. Remove the image from the request, including earlier turns of the conversation, or use a model that supports images.{
"model": "deepseek-v4.1-flash",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "この 2 枚の画像には何が写っていますか。" },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } },
{ "type": "image_url", "image_url": { "url": "https://example.com/chart.png" } }
]
}
]
}推論の出力
DeepSeek は思考の過程を content の中にではなく、独立した reasoning_content フィールドで返します。必要であれば明示的に読み取ってください。
completion_tokens にはすでに推論トークンが含まれているため、実際の出力長としてそのまま扱い、reasoning_tokens を重ねて加算しないでください。これは Grok とは異なる点で、Grok のチャットエンドポイントでは両者が別々に報告され、加算が必要です。
思考は回答と同じ max_tokens の予算から消費され、しかも先に生成されます。予算が小さすぎるとすべてが思考で使い切られ、呼び出しは 200 を返したまま次の状態になります。
finish_reasonがlength。contentが空文字列。completion_tokens_details.reasoning_tokensが指定した予算と同じ値。
この組み合わせはリクエストの失敗ではなく、「max_tokens を増やしてください」という意味です。実測では max_tokens: 16 のとき、途中で切れた思考だけが返り、本文は 1 文字も返りませんでした。
この枠のルールは deepseek-v4.1-flash に当てはまります。deepseek-v4-pro-202606 と deepseek-v4-flash-202605 では、思考がオンの間は max_tokens が思考を制限しません。実測では max_tokens: 64 で、Chat Completions は 144〜161、Anthropic Messages は最大 1,299 の出力トークンを返し、すべて課金されました。思考をオフにすると上限は正確です。
2 つの上限の挙動は対称ではありません。コンテキストウィンドウ(実測 1,048,576 トークン)を超える入力は、生成が始まる前に 400 で拒否され、課金も発生しません。一方、Chat Completions で出力上限を超える max_tokens は拒否されず、200 を返して実際の上限で黙って打ち切られます。成功のレスポンスは、指定した予算が受け入れられた証拠にはなりません。
ツール呼び出しとプレフィックス継続
ツール呼び出し
標準的な OpenAI の Function Calling が一通り動作します。単一の呼び出し、1 ターンでの並列呼び出し、tool_choice の auto / none / required および関数名の指定、role: "tool" の結果を次のターンに戻す使い方のいずれも利用できます。
本モデルは推論モデルですが required をそのまま受け付けます。思考を切る必要はなく、レスポンスの finish_reason は tool_calls になります。
プレフィックス継続
応答の書き出しをこちらから渡し、その続きを書かせることができます。messages の最後の要素を assistant ロールにし、その要素に prefix: true を指定してください。返ってくる content には続きの部分だけが入り、渡したプレフィックスは繰り返されません。
このモードではモデルは思考を生成しません。reasoning_content は返らず、reasoning_tokens は 0 となり、予算はすべて続きの生成に使われます。
{
"model": "deepseek-v4.1-flash",
"messages": [
{ "role": "user", "content": "List three primary colors, comma separated, nothing else." },
{ "role": "assistant", "content": "red, green,", "prefix": true }
]
}この例で返る content は blue で、出力トークンは 1 つだけです。
プロンプトキャッシュと突き合わせ
プレフィックスキャッシュは暗黙的に行われ、スイッチもキャッシュ制御パラメータもありません。ヒットは標準的な OpenAI のフィールドである usage.prompt_tokens_details.cached_tokens で報告されます。ヒットには 256 トークン以上の共通プレフィックスが必要で、これより短い場合 cached_tokens は 0 のままです。
HopBase の利用量レコードとレスポンスボディでは、入力のカウント方法が異なります。突き合わせる際は注意してください。
| フィールド | 意味 |
|---|---|
レスポンスの prompt_tokens | キャッシュ命中分を含むプロンプト全体 |
| 利用量レコードの入力トークン | プロンプトから、キャッシュ命中分を差し引いたもの |
| 利用量レコードのキャッシュ入力トークン | キャッシュ命中分を別立てで表示したもの |
つまり、利用量レコードの入力トークンとキャッシュ入力トークンを足すと、レスポンスの prompt_tokens と一致します。キャッシュ読み取りは通常の入力とは別料金です。お使いのキーに適用されるレートは、ログイン後のモデルカタログをご確認ください。
Claude Code と Anthropic Messages
POST /v1/messages は 4 モデルすべてで標準の Anthropic Messages リクエストを受け付け、モデル自身の Anthropic 互換インターフェースにそのまま渡すため、Claude Code と Anthropic SDK から直接接続できます。SDK の Base URL は /v1 を付けずに https://api.hop-base.com とします。
CC Switch を使う場合は、コンソールでキーの ··· メニューを開き、CCS をインポート、続けて Claude Code を選びます。モデルはインポート時に設定されます。API 形式は既定の Anthropic のままにし、ローカルルーティングは不要です。手動で設定する場合:
export ANTHROPIC_BASE_URL="https://api.hop-base.com"
export ANTHROPIC_AUTH_TOKEN="sk-your-key"
export ANTHROPIC_MODEL="deepseek-v4-pro-202606"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash-202605"
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=1000000
claudeClaude Code はこれらの ID を知らないため、CLAUDE_CODE_MAX_CONTEXT_TOKENS で実際のコンテキストウィンドウを伝えます。指定しないと、Claude Code は 200K トークンで会話を圧縮します。4 つのモデルは同じプランに属しているため、キーは 1 つで足ります。その他のオプションは Claude Code にあります。
- 思考は
thinkingブロックで返り、output_tokensに含まれます。thinking: {"type": "disabled"}でオフにできます。 tool_choiceでツール名を指定({"type": "tool", "name": …})すると、そのツールが呼び出されます。{"type": "any"}は無視され、モデルがテキストで答えることがあります。- 画像を読めるのは
deepseek-v4.1-flashとdeepseek-v4.1-flash-1017だけです。ほかの 2 モデルに画像を送ると400が返ります。詳しくは画像入力を参照してください。 - 出力上限を超える
max_tokensは拒否されません。 cache_controlのブレークポイントは送信前に取り除かれるため、明示的キャッシュは使えません。自動のプレフィックスキャッシュは通常どおり効きます。2026-10-03 の実測では、Claude Code の 2 ターン目以降はプロンプトの 94%–99% がキャッシュから読み込まれました。
Anthropic Messages で突き合わせるときは、input_tokens はキャッシュ命中分を含まず、利用量レコードの「入力トークン」に対応します。cache_read_input_tokens は「キャッシュ入力トークン」に対応します。
ゲートウェイの挙動
| 挙動 | リクエストへの影響 |
|---|---|
空の messages | 送信前に 400 で拒否 |
| モデルが受け付けない Responses フィールド | 黙って削除 |
非対応の input[].type / tools[].type | 削除されず 400 |
- 黙って削除される Responses フィールドには
stream_options、truncation、user、reasoning.summary、text.verbosityなどがあります。 - 非対応の型の例は
local_shell_call、file_search、code_interpreterです。 - レスポンスの
modelフィールドには常にリクエストで指定した公開 ID が返るため、response.model == request.modelを検証するクライアントも問題なく動作します。
/v1/responses では previous_response_id と store をそのまま渡します。続きのリクエストは前回の応答を生成した先へ戻され、戻せない場合は 503 で会話のやり直しを求めます。previous_response_id を外し、完全な input を送り直してください。
Responses でのプレフィックス継続は、最後の assistant メッセージに prefix: true ではなく partial: true を付けます。
リクエストが別のルートで処理された場合でも、レスポンスの model の値は維持されます。
次のステップ
- DeepSeek Harness:
dshエージェントランタイムの設定ファイルとカスタムプロバイダーのフォーム。このページはその背後にあるモデル契約です - OpenAI SDK:Chat Completions の一般的な書き方
- Claude Code:Anthropic Messages で直接接続
- エラーコードと再試行
- 同時実行数、タイムアウト、課金