我把 GPT、Qwen、DeepSeek 和 Seedance 接进了同一个 API:Python 实测

1 阅读3分钟

最近做了一个多模型 API 网关:同一套鉴权、统一的调用格式,按实际模型与实际用量计费;需要时可以指定模型,也可以传 model: "auto" 交给平台在已开放能力中路由。

这篇不讲泛泛的“AI 聚合”概念,直接记录我用 Python / PowerShell 跑通文本与视频请求的最小流程。

先说结论

  • 文本接口:POST /v1/chat/completions
  • 视频接口:POST /v1/videos
  • 鉴权:同一个 API Key
  • 指定模型时按指定模型调用;auto 只会在后台已配置且可用的模型中选择
  • 每次请求都会返回实际模型、用量与本次扣费;失败请求不进入本次客户扣费

项目代码与示例:

github.com/eugeneliuhz…

1. 获取 API Key

注册后在开发者中心创建 Key。不要把 Key 写进前端、仓库或截图。

本文用环境变量保存:

export XQ_API_KEY="你的 API Key"

Windows PowerShell:

$headers = @{ Authorization = "Bearer 你的_API_Key" }
$base = "https://xinqingapi.com"

2. 文本模型:指定 DeepSeek 的最小请求

import os
import requests

resp = requests.post(
    "https://xinqingapi.com/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {os.environ['XQ_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "deepseek-v4-flash",
        "messages": [
            {"role": "user", "content": "只回复四个字:连接成功"}
        ],
        "max_tokens": 16,
    },
    timeout=60,
)

print(resp.json())

响应中建议重点保存这几个字段:

  • routing.requested_model:请求的模型
  • routing.actual_model:实际执行的模型
  • usage:输入、输出 Token
  • billing.charged_cny:本次实际扣费

做 API 接入最怕“调用的是什么、花了多少钱”说不清。开发阶段把请求 ID、模型、用量与异常原因一并记录下来,后面排查会省很多时间。

3. model: "auto" 什么时候用?

明确需要某个模型时,始终传具体模型名,例如 deepseek-v4-pro

auto 更适合内部工具、原型或任务类型不固定的场景。它不是“随便换模型”,而是在后台已配置、已开放、能力匹配的模型内选择。关键业务建议指定模型,并做好超时、失败重试和降级。

payload = {
    "model": "auto",
    "messages": [
        {"role": "user", "content": "把这段会议纪要整理为待办清单"}
    ],
}

4. 视频生成:Seedance 任务提交与轮询

视频生成是异步任务,不能当成普通聊天接口处理。

$body = @{
  model = "seedance-2.5"
  prompt = "日出时的海边,一只白色小船缓慢驶过,电影感镜头"
  seconds = 5
  size = "1280x720"
  generate_audio = $false
  watermark = $false
} | ConvertTo-Json

$task = Invoke-RestMethod `
  -Uri "$base/v1/videos" `
  -Method Post `
  -Headers $headers `
  -ContentType "application/json; charset=utf-8" `
  -Body $body

$task.id

使用返回的任务 ID 查询状态:

$jobId = $task.id
Invoke-RestMethod `
  -Uri "$base/v1/videos/$jobId" `
  -Method Get `
  -Headers $headers

任务完成后,响应会包含状态、结果地址和实际完成单位。异步任务应该以最终完成结果为准,而不是只看“任务已提交”。

5. 几个实践建议

  1. 一开始只接最常用的文本模型与一个明确的多媒体模型。
  2. 永远记录请求 ID、实际模型、输入/输出 Token、失败原因。
  3. 为每个上游设置月度预算、单次费用上限和连续故障熔断。
  4. 上线前做小额全链路测试:创建 Key → 请求 → 查询账单 → 异常处理。

写在最后

多模型 API 的价值,不在于模型名越多越好,而在于:接入是否稳定、计费是否可核对、出现异常是否能定位。

项目开源地址:

github.com/eugeneliuhz…

如果你想看 Node.js、Python 或 PowerShell 的完整调用示例,欢迎在评论区留言。