通义千问

通过 HopBase 的 OpenAI 兼容 Chat Completions 接口调用通义千问 3.8 与 3.7 系模型。

通义千问走 HopBase 的 OpenAI 兼容协议。使用 https://api.hop-base.com/v1,鉴权头为 Authorization: Bearer sk-your-key,模型 ID 以 GET /v1/models 返回的精确写法为准。

模型

模型 ID上下文图片与视频输入
qwen3.8-max1M支持
qwen3.8-flash1M支持
qwen3.7-max1M仅文本
qwen3.7-plus1M支持
qwen3.7-flash1M支持

五个型号都是 1,048,576 Token 上下文,单次最多 991,808 输入 Token 与 131,072 输出 Token。五个同属一个套餐分组,一把密钥全都能调。

端点

POST /v1/chat/completions 是支持的入口,流式正常可用。

流式要拿 usage 得显式订阅

客户端需要从流式响应里读 Token 用量时,请传 stream_options: { "include_usage": true }。不传也不影响计费准确性,只是那个 usage 块不会下发给客户端。

千问特有的请求字段,例如 enable_thinkingthinking_budgetenable_search,会原样透传给模型——HopBase 既不要求也不校验它们。函数调用与 JSON 模式的行为与官方接口一致。

网关会改动请求的两处

在千问上做长跑 Agent 之前,这两条要先知道。

行为对请求的影响
消息历史守卫chat/completions 上,消息超过 26 条时只保留开头最多 2 条 system / developer 消息,加上最后 24 条,中间的会被丢弃
previous_response_id存在则剔除。请求会在多个账号间负载均衡,某个账号签发的 ID 在另一个账号上无效

历史守卫对 1M 上下文模型同样生效

长多轮会话是按消息条数截断的,不是按 Token 数。如果你的 Agent 依赖完整历史,请自己把历史压缩进更少的消息里,并把必须保留的内容放在前两条 system 消息中。

长输入请求

部分千问模型在单次请求的输入长度跨过阈值后会升档。

  • 阈值看的是整个 prompt,缓存命中的部分与未命中的部分都算在内。
  • 一旦跨过,整笔请求都按该档结算,不是只有超出阈值的那部分。
  • 缓存帮不了你躲开阈值。缓存只影响命中部分适用哪个单价,不会让 prompt 在判档时变短。想留在低档,只能真的把单次输入写短。

哪些型号有阶梯、阈值在哪,以登录后的模型广场为准。

读 usage

completion_tokens 已经包含推理 Token,不要再加一遍。completion_tokens_details.reasoning_tokens 是输出的子集,只用于展示。

HopBase 的用量记录与响应体对输入的口径不同,对账时要注意:

字段含义
响应体 prompt_tokens整个 prompt,含缓存命中部分
用量记录输入 Tokenprompt 减去缓存命中部分
用量记录缓存输入 Token缓存命中的那部分,单列

也就是说,用量记录里的输入加缓存输入,等于响应体的 prompt_tokens

curl

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": "用五条要点总结本季度的风险。" }]
  }'

错误处理

上游的 4xx 会透传给你,但厂商专有的错误码前缀会被剥掉,所以 message 文本可读但不稳定。分支逻辑请基于 HTTP 状态码与 code 字段,不要匹配 message 字符串。

分组里没有的模型名返回 404 model_not_found。模型 ID 是精确匹配,请从 GET /v1/models 读取,不要猜。

分组

通义千问有独立的套餐分组。千问密钥调不到其他系列,其他系列的密钥也调不到千问。万相 3.0 与快乐马视频模型虽然同属一家厂商,但也是另一个分组、另一把密钥。

本页目录