通義千問
用 OpenAI Chat Completions、OpenAI Responses 或 Anthropic Messages 呼叫通義千問 3.8 與 3.7 系列模型。
| 項目 | 填寫值 |
|---|---|
| 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": "qwen3.8-max",
"messages": [{
"role": "user",
"content": "用五條要點總結本季度的風險。"
}]
}'模型
| 模型 ID | 上下文 | 圖片與影片輸入 |
|---|---|---|
qwen3.8-max | 1M | 支援 |
qwen3.8-flash | 1M | 支援 |
qwen3.7-max | 1M | 僅文本 |
qwen3.7-plus | 1M | 支援 |
qwen3.7-flash | 1M | 支援 |
五個型號都是 1,000,000 Token 上下文,單次最多 131,072 輸出 Token。
五個型號都在「通義千問 3.8/3.7 系(阿里官方)」分組,一把密鑰全都能調。千問密鑰調不到其他系列,其他系列的密鑰也調不到千問;萬相與快樂馬影片模型分別在「萬相 3.0 官方直連」「快樂馬 1.1 官方直連」分組,各需單獨的密鑰。
端點與請求參數
POST /v1/chat/completions、POST /v1/responses 和 POST /v1/messages 五個模型都可用,串流均正常。Codex CLI 等只支援 Responses 的用戶端可以直連;Claude Code 也能直連,見 Claude Code 與 Anthropic Messages。都不需要 CC Switch 路由。
下表針對 POST /v1/chat/completions。網關只攔截空 messages;千問特有字段原樣透傳、不做校驗,其餘限制來自模型服務。
| 參數 | 必填 | 類型與限制 | 預設值 | 說明 |
|---|---|---|---|---|
model | 必填 | 上表五個 ID 之一 | — | 精確匹配 |
messages | 必填 | 非空陣列;圖片寬高須大於 10 像素 | — | 圖片、影片按上表 |
max_tokens | 選填 | 整數,上限 131,072(官方上限) | 服務預設 | 限制輸出長度 |
enable_thinking | 選填 | 布林 | 服務預設 | 千問特有,透傳 |
thinking_budget | 選填 | 整數 | 服務預設 | 不能與 reasoning_effort 同時設置 |
reasoning_effort | 選填 | low / high / max 實測可用 | 服務預設 | 不能與 thinking_budget 同時使用 |
enable_search | 選填 | 布林 | 服務預設 | 千問特有,透傳 |
tools、tool_choice | 選填 | 同 OpenAI | auto | 思考模式下有限制,見下方 |
response_format | 選填 | JSON 模式,行為與官方接口一致 | 純文本 | {"type": "json_object"} 返回 JSON |
stream | 選填 | 布林 | false | 為 true 時以 SSE 串流回傳 |
stream_options.include_usage | 選填 | 布林 | false | 串流下要收到 usage 必須設 true |
- 缺失或空陣列的
messages由網關返回 400。 thinking_budget與reasoning_effort同時設置返回 400。- 思考模式下
tool_choice不能設為required或指定函式,否則返回 400。 - 用
response_format時,提示詞裡也要要求輸出 JSON。 stream_options.include_usage不影響計費。/v1/responses的內容分片只收input_text、input_image、input_file,不收影片;需要影片輸入請走 Chat Completions。
qwen3.8-max 實測輸入上限 991,808 Token,超出返回(報錯原文取自生產記錄):
400 Range of input length should be [1, 991808]完整參數見 API 參考:Chat Completions,選擇通義千問模型種類查看。
網關會改動請求的一處
在千問上做長跑 Agent 之前,這兩條要先知道。
| 行為 | 對請求的影響 |
|---|---|
previous_response_id | 存在則剔除 |
store | 固定為 false |
請求會在多個賬號間負載均衡,某個賬號簽發的 ID 在另一個賬號上無效,所以 previous_response_id 會被剔除。每輪請發送完整 input。
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="qwen3.8-max"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="qwen3.8-flash"
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"}可以關閉思考。 qwen3.7-max只支援文字,帶圖請求在到達模型之前就回傳400;另外四個模型都能看圖。- 強制呼叫工具(
tool_choice設為any或指定工具)需要關閉思考。開著思考時,qwen3.8-max、qwen3.8-flash、qwen3.7-plus回傳400;qwen3.7-max與qwen3.7-flash無論是否思考都會忽略強制,可能直接用文字回答。 max_tokens超過 131,072 時,三個 3.7 模型回傳400,3.8 模型不拒絕。cache_control斷點會在送出前移除,所以不支援顯式緩存;自動前綴緩存照常生效。2026-10-03 實測,Claude Code 從第二輪起有 89%–97% 的 prompt 命中緩存。- Claude Code 每次請求都帶著很長的系統提示詞和工具列表,實測在你的第一條訊息之前就有約 15,000 Token。閾值較低的模型(如
qwen3.7-flash)在 Claude Code 對話裡很早就會越過分檔閾值,見下一節。
400 Range of max_tokens should be [1, 131072]
400 Model qwen3.7-max does not accept image input. Remove the image from the request, including earlier turns of the conversation, or use a model that supports images.
400 The tool_choice parameter does not support being set to required or object in thinking mode用 Anthropic Messages 對賬時,input_tokens 不含緩存命中部分,對應用量記錄的「輸入 Token」;cache_read_input_tokens 對應「緩存輸入 Token」。
計費與用量
部分千問模型在單次請求的輸入長度跨過閾值後會升檔。
- 閾值看的是整個 prompt,緩存命中的部分與未命中的部分都算在內。
- 一旦跨過,整筆請求都按該檔結算,不是隻有超出閾值的那部分。
- 緩存幫不了你躲開閾值:它只影響命中部分適用哪個單價,不會讓 prompt 在判檔時變短。
- 想留在低檔,只能真的把單次輸入寫短。
哪些型號有階梯、閾值在哪,以登錄後的模型廣場為準。
completion_tokens 已經包含推理 Token,不要再加一遍。completion_tokens_details.reasoning_tokens 是輸出的子集,只用於展示。
HopBase 的用量記錄與響應體對輸入的口徑不同,對賬時要注意:
| 字段 | 含義 |
|---|---|
響應體 prompt_tokens | 整個 prompt,含緩存命中部分 |
| 用量記錄輸入 Token | prompt 減去緩存命中部分 |
| 用量記錄緩存輸入 Token | 緩存命中的那部分,單列 |
也就是說,用量記錄裡的輸入加緩存輸入,等於響應體的 prompt_tokens。
錯誤處理
官方返回的 4xx 會透傳給你,但廠商專有的錯誤碼前綴會被剝掉,所以 message 文本可讀但不穩定。分支邏輯請基於 HTTP 狀態碼與 code 字段,不要匹配 message 字串。
分組裡沒有的模型名返回 404 model_not_found。模型 ID 是精確匹配,請從 GET /v1/models 讀取,不要猜。
下一步
- OpenAI SDK——Chat Completions 通用寫法
- Codex CLI——經 Responses 直連
- Claude Code——經 Anthropic Messages 直連
- 錯誤碼與重試
- 並行、逾時與計費