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": "用五條要點總結本季度的風險。"
}]
}'模型
| 模型 ID | 上下文 | 單次最多輸出 Token |
|---|---|---|
deepseek-v4.1-flash | 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 官方價為基準,隨官方峰谷時段浮動,見峰谷計價。
三個模型都在「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 | 選填 | 同 OpenAI | auto | 見工具調用 |
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。
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,含緩存命中部分 |
| 用量記錄輸入 Token | prompt 減去緩存命中部分 |
| 用量記錄緩存輸入 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
claudeClaude 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斷言的客戶端不會被打斷。
/v1/responses 會透傳 previous_response_id 與 store,續聊會回到產出上一輪響應的地方。回不去時返回 503 提示重開會話:請不帶 previous_response_id、重新發送完整 input。
在 Responses 裡做前綴續寫,把最後一條 assistant 訊息設 partial: true,而不是 prefix: true。
即使請求被換到另一條路由,響應裡的 model 值也保持不變。
下一步
- DeepSeek Harness——
dshAgent 執行環境的設定檔與自訂 provider 表單;本頁是它背後的模型接入說明 - OpenAI SDK——Chat Completions 通用寫法
- Claude Code——經 Anthropic Messages 直連
- 錯誤碼與重試
- 並行、逾時與計費