📘 六翼模池 · 开发者文档

API 接入指南

OpenAI 与 Anthropic Messages 双协议原生支持,一个网关接入国产主流大模型。

协议兼容

协议支持矩阵

六翼模型网关同时兼容 OpenAI 协议与 Anthropic Messages 协议,以下端点均经生产环境实测可用。

方法端点协议状态
POST/v1/chat/completionsOpenAI Chat Completions支持
POST/v1/responsesOpenAI Responses支持
POST/v1/messagesAnthropic Messages新增支持
POST/v1/messages/count_tokensAnthropic 令牌计量新增支持
GET/v1/messages/model-aliasesAnthropic 模型别名表新增支持
POST/v1/embeddingsOpenAI Embeddings支持
POST/v1/images/generations图片生成支持
POST/v1/videos/generations视频生成(提交)支持
GET/v1/videos/generations/{taskId}视频任务轮询支持
GET/v1/models模型列表支持

Anthropic Messages 端点支持非流式与 SSE 流式(message_start → content_block_delta → message_stop),并完整支持 tool_use 工具调用。

鉴权

四种认证方式

可按客户端能力任选其一,四种方式并存且互相兼容。

🔑

双 Header 鉴权

原有方式,长期支持。分别通过两个独立 Header 传递访问标识与密钥。

X-Access-Key-Id: <accessKeyId>
X-Secret-Token: <secretToken>
🎫

复合 Bearer原有

单 Header 传递,用英文句点连接访问标识与密钥。

Authorization: Bearer <accessKeyId>.<secretToken>
⚡

单值 Bearer新增

适配只支持单个 Key 字段的标准客户端(如 OpenAI SDK)。

Authorization: Bearer <accessKeyId>
🤖

Anthropic 官方头新增

Anthropic 官方客户端(Claude Code 等)默认使用此 Header。

x-api-key: <accessKeyId>

访问标识(accessKeyId)与密钥(secretToken)在客户门户创建 API Key 时获取,请勿在客户端代码或公开仓库中明文存储。

关于英文句点:

复合 Bearer 中的 . 是分隔符,不属于 Key 的任何一部分。不要把 <accessKeyId>.<secretToken> 整体当成一个 key 去创建或复制。

两种写法完全等价:Authorization: Bearer ak.xxxx 与同时传 X-Access-Key-Id: ak + X-Secret-Token: xxxx。任一方式认证成功后,服务端会记录审计日志(不含凭据内容)。

典型场景

Claude Code 直连接入

六翼网关已原生支持 Anthropic Messages 协议,Claude Code 可通过环境变量直接接入,无需任何中间层做协议转换。

环境变量配置

在 Claude Code 的配置中加入以下 env 段(或写入系统环境变量)。

{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "<六翼 accessKeyId>",
    "ANTHROPIC_BASE_URL": "https://apicn.sixwingsai.com/v1",
    "ANTHROPIC_MODEL": "deepseek-v4-flash"
  }
}

接入注意:

1. ANTHROPIC_BASE_URL 不要带 /messages,客户端会自动拼接 /v1/messages。

2. 模型请使用六翼公开模型码,可通过 GET /v1/models 查询可用列表。

3. 无需 CC Switch 等中间层做协议转换(此前为必需,现已不再需要)。

4. 工具调用(tool_use)与非流式 / 流式两种模式均已实测通过。

5. 支持 POST /v1/messages/count_tokens:客户端每次请求前会调用它判断上下文占用,网关按本地确定性算法估算(CJK 按 1 字 ≈ 1 token 保守取高),不产生上游调用、不计费。

6. 若客户端启动日志出现 unrecognized_model,说明它不认识六翼公开模型码。此时把 ANTHROPIC_MODEL 换成 Anthropic 兼容别名(如 claude-sonnet-4-5)、或在配置里加 "ANTHROPIC_SMALL_FAST_MODEL": "claude-haiku-4-5",网关会自动映射到对应六翼模型,告警消失且上下文窗口/成本行为回归正常。

7. 别名映射可通过 GET /v1/messages/model-aliases 查询;未命中的模型名原样透传,不影响既有调用。

curl 快速验证

先用最小请求确认连通性,再接入客户端。

curl https://apicn.sixwingsai.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -H "x-api-key: <accessKeyId>" \
  -d '{
    "model": "deepseek-v4-flash",
    "max_tokens": 64,
    "messages": [{"role": "user", "content": "你好"}]
  }'
排障

错误响应格式

不同协议端点的错误体格式不同,请按对应格式解析。

Anthropic 端点(/v1/messages)

{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "模型未接入或不可用: xxx"
  }
}

type 取值:invalid_request_error / authentication_error / permission_error / api_error。

其余端点(OpenAI 等)

{
  "success": false,
  "message": "客户门户凭证无效"
}

沿用平台统一信封,以 success 字段标识成功与否,失败原因见 message。

上游错误原样透传

当上游厂商返回 4xx / 5xx 时,网关不会伪造成功响应,而是按对应协议的错误格式返回原始错误原因,便于快速定位是配额、鉴权还是模型不可用。

错误码对照表(/v1/messages)

网关会把上游错误归一到 Anthropic 语义。带 Retry-After 的响应请按该秒数退避,不要立即重试。

HTTPerror.type触发场景客户端处理建议
400invalid_request_error字段缺失或格式错误、模型未接入、图片规格超限修正请求,重试无意义
401authentication_error凭据缺失、格式不符或已失效核对 x-api-key / Authorization,必要时重建 Key
403permission_error模型白名单、IP 白名单、额度策略拦截,或账户余额为 0充值或联系管理员开通权限
404not_found_error模型码不存在或当前无可用路由用 GET /v1/models 核对模型码
429rate_limit_error两类:① 触发限速 → Retry-After: 5;② 上游账户欠费/余额不足/停用 → Retry-After: 30按 Retry-After 退避。若持续 30 秒档,说明是上游账户侧问题,需联系六翼而非继续重试
529overloaded_error上游服务过载指数退避重试
5xxoverloaded_error上游 5xx 或连接中断退避重试;持续失败请带 X-SixWings-Request-Id 报障
其他api_error未归类的上游错误带 X-SixWings-Request-Id 报障

所有响应都带 X-SixWings-Request-Id,报障时提供该值可直接定位到上游调用记录与用量台账。

配额

限额与配额

接入前先确认这几组上限,可避免大部分 invalid_request_error 与 rate_limit_error。

项目上限超限表现说明
max_tokens [1, 393216] 400 invalid_request_error 393216 为 DeepSeek 系实测上限;各厂商实际上限不同,请以 GET /v1/models 的 context_window 为参考,取值不要超过该模型的上下文窗口
上下文窗口 逐模型不同 400(上游参数校验失败) 读取 GET /v1/models 返回的 context_window 字段;该字段可能来自目录配置或同厂商中位数推算,见 context_window_source
并发 / QPS 按 API Key 维度限速 429 rate_limit_error + Retry-After: 5 具体阈值随套餐档位不同,以客户门户「API Key 详情」显示为准
账户余额 > 0 403 permission_error(余额不足,请先充值) 余额预检为 fail-closed:余额 ≤ 0 时请求不会发往上游,因此不产生费用
单次请求体 受网关与上游双重限制 413 / 400 大文件请用 /v1/embeddings 批处理或分片,不要把超大 base64 图片塞进 messages

关于 count_tokens 的估算口径:

POST /v1/messages/count_tokens 返回的 input_tokens 是本地确定性估算:CJK 按 1 字 ≈ 1 token(保守偏高),其余字符按 3.5 字符 ≈ 1 token,图片按 1600 token/张、文档按 2000 token/份折算。

该值仅用于客户端上下文阈值判断,不参与计费。实际扣费以响应 usage 中的上游真实 token 数为准。估算刻意偏高,目的是让客户端更早触发压缩,而不是让请求撞上上游硬上限。

选型

模型可用性

GET /v1/models 除模型清单外,还返回用于选型判断的元数据。建议客户端缓存 5 分钟。

字段类型含义
context_windownumber上下文窗口(token)。恒非空,客户端可直接用于阈值计算
context_window_sourcestringcatalog = 目录真实配置;provider_median = 同厂商真实值中位数推算;platform_default = 平台最小档兜底(32768)
availableboolean / nullnull 表示尚未探测(不代表不可用)。不要把它当作 false 处理
availability_sourcestring当前固定为 unprobed,表示可用性来自配置就绪度而非实时探活
provider_codestring上游供应商标识,便于按厂商做灰度或降级
route_countnumber该模型当前挂载的可用路由数,> 1 表示具备多通道路由冗余
input_price_micros / output_price_microsnumber单价(微元 / 计价单位),currency_code 恒为 CNY

如何判断某个模型当前能不能用

不要依赖列表里的静态字段,直接发一次最小请求最准。

curl https://apicn.sixwingsai.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: <accessKeyId>" \
  -d '{"model":"deepseek-v4-flash","max_tokens":8,
       "messages":[{"role":"user","content":"ping"}]}'

故障模式对照:

• 返回 429 且 Retry-After: 30 → 该模型上游账户侧不可用(欠费 / 余额不足 / 账户停用),重试无效,请改用其他模型或联系六翼。

• 返回 429 且 Retry-After: 5 → 触发了你自己的速率限制,退避后重试即可。

• 返回 400「模型未接入或不可用」 → 该模型码当前无可用路由,请用 GET /v1/models 核对。

Anthropic 兼容别名

给 Claude Code 等只认 Claude 模型名的客户端使用。网关在模型解析层做映射,等价于直接填目标模型码。

GET https://apicn.sixwingsai.com/v1/messages/model-aliases

# 常用映射
claude-sonnet-4-5   →  deepseek-v4-pro     (旗舰档)
claude-haiku-4-5    →  deepseek-v4-flash   (快速档)
claude-3-5-sonnet-latest → deepseek-v4-pro

完整列表以接口返回为准。未命中别名表的模型名会原样透传,不影响既有调用。

需要接入支持?

商务合作、私有化部署与专属通道,请联系我们。