黑马天启 · 多模型 Token 平台

对话接口 POST /v1/chat/completions

最常用的接口,兼容 OpenAI Chat Completions。

请求

curl https://api.token.heimatianqi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-heima-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash",
    "messages": [
      {"role": "system", "content": "你是简洁的助手。"},
      {"role": "user", "content": "用一句话解释什么是 Token。"}
    ],
    "temperature": 0.7,
    "max_tokens": 256,
    "stream": false
  }'
字段 必填 说明
model 是 平台公开模型名(控制台「模型与价格」里复制)
messages 是 对话数组,支持 system / user / assistant / tool
stream 否 true 时以 SSE 逐块返回
max_tokens 否 输出上限;直接影响费用,建议显式设置
temperature / top_p 否 采样参数,按上游支持情况透传
tools / tool_choice 否 工具调用,需模型与上游支持
response_format 否 结构化输出,需模型与上游支持

响应

最小可运行示例(本地验证用)

curl -s "${HEIMA_BASE_URL:-https://api.token.heimatianqi.com/v1}/chat/completions" \
  -H "Authorization: Bearer $HEIMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"mock-chat","messages":[{"role":"user","content":"验证对话接口"}],"max_tokens":16}' \
  | python3 -c "import json,sys; d=json.load(sys.stdin); assert d.get('choices'), 'no choices'; print('finish_reason:', d['choices'][0].get('finish_reason'))"

这段在平台自带测试模型上运行,用来确认鉴权、路由、返回结构三件事都正常。

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "created": 1790990000,
  "model": "deepseek-v4-flash",
  "choices": [
    {"index": 0, "message": {"role": "assistant", "content": "..."}, "finish_reason": "stop"}
  ],
  "usage": {"prompt_tokens": 33, "completion_tokens": 42, "total_tokens": 75}
}

usage 是计费依据:输入按输入价、缓存命中部分按缓存价、输出按输出价。

流式返回

stream: true 时返回 text/event-stream,每行形如 data: {...},最后以 data: [DONE] 结束。 客户端需按 SSE 逐块解析;stream_options: {"include_usage": true} 可在流末尾拿到用量。

错误

HTTP 典型原因 处理
400 请求体不合法(缺 messages、字段类型错误) 按报错字段修正
401 Key 无效/被禁用 换用有效 Key
403 该 Key 无此模型权限;或未实名调用需实名模型;或来源被临时限制 见「错误码与限流」
429 触发限流/渠道容量已满 稍后重试(响应里有 Retry-After 时可参考)
5xx 上游异常 带 request id 反馈;平台侧会记录渠道错误

常见问题

  • 能不能像 OpenAI 一样传 n / logprobs? 取决于上游支持程度,平台会透传; 上游不支持时可能报 400。
  • 为什么响应里的模型名和请求不一样? 平台可能把公开名映射到上游真实型号(详情页会标注来源)。