跳到正文

DeepSeek V4.1 / V4

用 OpenAI Chat Completions、OpenAI Responses 或 Anthropic Messages 呼叫 DeepSeek V4.1 與 V4。

項目填寫值
Base URLhttps://api.hop-base.com/v1
對話POST /v1/chat/completions
ResponsesPOST /v1/responses
Anthropic MessagesPOST /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": "用五條要點總結本季度的風險。"
    }]
  }'

模型

模型 ID上下文單次最多輸出 Token
deepseek-v4.1-flash1M393,216
deepseek-v4-pro-2026061,048,576393,216
deepseek-v4-flash-2026051M384,000

V4.1 Flash 的思考過程在 reasoning_content 返回。它以 DeepSeek 官方價為基準,隨官方峰谷時段浮動,見峰谷計價。

三個模型都在「DeepSeek」分組裡,一把密鑰即可全部呼叫。

裸名調不通:

只有上表中的 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 返回對應語言,預設英文:

目前分組不支援所請求的模型:<模型名>
The current group does not support the requested model: <model>

峰谷計價

deepseek-v4.1-flash 隨 DeepSeek 官方峰谷時段浮動,時段按北京時間(UTC+8)算。

  • 高峰:週一至週五 09:00–12:00 與 14:00–18:00。
  • 離峰:其餘時間,包括夜間、兩段高峰之間的中午空檔和整個週末。
  • 離峰的輸入、緩存輸入與輸出單價一律減半。
  • 時段左閉右開:09:00:00 已經算高峰,12:00:00 已經算離峰。

每筆請求按它完成的那一刻計價,不按發起的那一刻。17:59 發起、18:01 結束的請求整筆按離峰價;08:59 發起、09:01 結束的請求整筆按高峰價。

一筆請求永遠只帶一個單價,不會在邊界處被拆成兩段。所以同一個模型,相隔一分鐘的兩條用量記錄可能顯示不同的單價。適用於你這把密鑰的單價見登錄後的模型廣場。

端點與請求參數

POST /v1/chat/completions、POST /v1/responses 和 POST /v1/messages 三個模型都可用,流式均正常。Codex CLI 走 Responses;Claude Code 走 Anthropic Messages,見 Claude Code 與 Anthropic Messages。

  • 中間填充(FIM)補全不可用,它所在的路徑 HopBase 不做轉發。
  • 前綴續寫可用,見前綴續寫。

下表針對 POST /v1/chat/completions。網關只攔截空 messages,其餘限制來自模型服務。

參數必填類型與限制預設值說明
model必填上表三個 ID 之一—精確匹配;裸名返回 404
messages必填非空陣列—role 取值見下方
max_tokens選填非負整數,上限見模型服務預設思考與正文共用
temperature選填數值 0–2服務預設—
thinking選填{"type": …}V4.1 Flash 開啟取值見下方
reasoning_effort選填low / medium / high 實測可用服務預設僅在開啟思考時生效
tools、tool_choice選填同 OpenAIauto見工具調用
stream選填布林false為 true 時以 SSE 串流回傳
stream_options.include_usage選填布林false串流下要收到 usage 必須設 true
prefix選填布林false前綴續寫
image_url.url選填data: URI 或 https:// 連結—僅 deepseek-v4.1-flash
  • 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 原生支援讀圖,用的還是同一個端點、標準的 OpenAI 內容分片寫法。image_url.url 可以是 data: URI,也可以是公網可訪問的 https:// 連結;一條訊息裡可以放多張圖。

整個請求體上限 60 MB。base64 約膨脹 1/3,多張圖合計須在約 45 MB 以內;大圖請改用 https:// 連結。超出時返回:

413 Request body exceeds the size limit (60 MB)

圖片按普通輸入計,計入 prompt_tokens。

V4 Pro 和 V4 Flash 不收圖片:

deepseek-v4-pro-202606 與 deepseek-v4-flash-202605 看不了圖。帶圖的請求在到達模型之前就會被拒,回傳 400,不計費;Chat Completions、Responses 與 Anthropic Messages 都一樣。往 Claude Code 裡貼的截圖、它讀取的圖片檔案也算在內;凡是帶圖的任務請用 deepseek-v4.1-flash。

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": "這兩張圖裡分別是什麼?" },
        { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } },
        { "type": "image_url", "image_url": { "url": "https://example.com/chart.png" } }
      ]
    }
  ]
}

推理輸出

DeepSeek 把思考過程放在獨立的 reasoning_content 字段裡,不在 content 中。需要的話請單獨讀取。

completion_tokens 已經包含推理 Token,把它當作真實輸出長度即可,不要再加 reasoning_tokens。這一點與 Grok 不同:Grok 的 chat 端點是分開報的,必須相加。

思考與回答共用同一份 max_tokens 預算,而且思考在前。預算給得太小,整份預算會被思考吃光,請求照樣返回 200,特徵是:

  • finish_reason 是 length。
  • content 是空字串。
  • completion_tokens_details.reasoning_tokens 正好等於你給的預算。

看到這個組合請當作「把 max_tokens 調大」,而不是請求失敗。實測 max_tokens: 16 時,這個模型只返回一段被截斷的思考,正文一個字都沒有。

上面的預算規則只適用於 deepseek-v4.1-flash。deepseek-v4-pro-202606 與 deepseek-v4-flash-202605 開啟思考時,max_tokens 管不住思考:實測 max_tokens: 64 時,Chat Completions 返回 144–161 個輸出 Token,Anthropic Messages 最多返回 1,299 個,全部計費。關閉思考後上限精確。

兩個上限的行為並不對稱。輸入超出上下文窗口(實測 1,048,576 Token)會在開始生成之前以 400 拒絕,且零計費。Chat Completions 上 max_tokens 超過輸出上限卻不會被拒絕,請求返回 200,輸出在真實上限處被靜默截斷;請求成功並不代表你給的預算被接受了。

工具調用與前綴續寫

工具調用

標準的 OpenAI Function Calling 全鏈路可用:單個調用、一輪裡並行多個調用、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 個輸出 Token。

前綴緩存與對賬

前綴緩存是隱式的,沒有開關,也不需要傳任何緩存控制參數。命中情況體現在標準 OpenAI 字段 usage.prompt_tokens_details.cached_tokens 裡。命中需要至少 256 個 Token 的公共前綴,短於這個長度 cached_tokens 會一直是 0。

HopBase 的用量記錄與響應體對輸入的口徑不同,對賬時要注意:

字段含義
響應體 prompt_tokens整個 prompt,含緩存命中部分
用量記錄輸入 Tokenprompt 減去緩存命中部分
用量記錄緩存輸入 Token緩存命中的那部分,單列

也就是說,用量記錄裡的輸入加緩存輸入,等於響應體的 prompt_tokens。緩存讀與普通輸入分開計價,適用於你這把密鑰的單價見登錄後的模型廣場。

Claude Code 與 Anthropic Messages

POST /v1/messages 接受標準的 Anthropic Messages 請求,三個模型都可用,請求直接交給模型自己的 Anthropic 相容介面,所以 Claude Code 和 Anthropic SDK 都能直連。SDK 的 Base URL 填 https://api.hop-base.com,不帶 /v1。

用 CC Switch 時,在控制台金鑰列的 ··· 選單裡選「匯入 CCS」,再選 Claude Code。匯入會自動填好模型;介面格式保持預設的 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
claude

Claude Code 不認得這些 ID,所以要用 CLAUDE_CODE_MAX_CONTEXT_TOKENS 告訴它真實的上下文窗口;不設的話,它會在 200K Token 時壓縮對話。三個模型在同一個分組裡,一把密鑰即可。更多選項見 Claude Code。

  • 思考在 thinking 區塊裡返回,計入 output_tokens。thinking: {"type": "disabled"} 可以關閉思考。
  • tool_choice 指定工具名稱({"type": "tool", "name": …})時會照做;{"type": "any"} 會被忽略,模型可能直接用文字回答。
  • 只有 deepseek-v4.1-flash 能看圖;給另外兩個模型發圖會回傳 400,見圖片輸入。
  • max_tokens 超過輸出上限不會被拒。
  • cache_control 斷點會在送出前移除,所以不支援顯式緩存;自動前綴緩存照常生效。2026-10-03 實測,Claude Code 從第二輪起有 94%–99% 的 prompt 命中緩存。

用 Anthropic Messages 對賬時,input_tokens 不含緩存命中部分,對應用量記錄的「輸入 Token」;cache_read_input_tokens 對應「緩存輸入 Token」。

網關行為

行為對請求的影響
空 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 斷言的客戶端不會被打斷。

下一步