协议支持矩阵
六翼模型网关同时兼容 OpenAI 协议与 Anthropic Messages 协议,以下端点均经生产环境实测可用。
| 方法 | 端点 | 协议 | 状态 |
|---|---|---|---|
POST | /v1/chat/completions | OpenAI Chat Completions | 支持 |
POST | /v1/responses | OpenAI Responses | 支持 |
POST | /v1/messages | Anthropic Messages新增 | 支持 |
POST | /v1/messages/count_tokens | Anthropic 令牌计量新增 | 支持 |
GET | /v1/messages/model-aliases | Anthropic 模型别名表新增 | 支持 |
POST | /v1/embeddings | OpenAI 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 的响应请按该秒数退避,不要立即重试。
| HTTP | error.type | 触发场景 | 客户端处理建议 |
|---|---|---|---|
400 | invalid_request_error | 字段缺失或格式错误、模型未接入、图片规格超限 | 修正请求,重试无意义 |
401 | authentication_error | 凭据缺失、格式不符或已失效 | 核对 x-api-key / Authorization,必要时重建 Key |
403 | permission_error | 模型白名单、IP 白名单、额度策略拦截,或账户余额为 0 | 充值或联系管理员开通权限 |
404 | not_found_error | 模型码不存在或当前无可用路由 | 用 GET /v1/models 核对模型码 |
429 | rate_limit_error | 两类:① 触发限速 → Retry-After: 5;② 上游账户欠费/余额不足/停用 → Retry-After: 30 | 按 Retry-After 退避。若持续 30 秒档,说明是上游账户侧问题,需联系六翼而非继续重试 |
529 | overloaded_error | 上游服务过载 | 指数退避重试 |
5xx | overloaded_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_window | number | 上下文窗口(token)。恒非空,客户端可直接用于阈值计算 |
context_window_source | string | catalog = 目录真实配置;provider_median = 同厂商真实值中位数推算;platform_default = 平台最小档兜底(32768) |
available | boolean / null | null 表示尚未探测(不代表不可用)。不要把它当作 false 处理 |
availability_source | string | 当前固定为 unprobed,表示可用性来自配置就绪度而非实时探活 |
provider_code | string | 上游供应商标识,便于按厂商做灰度或降级 |
route_count | number | 该模型当前挂载的可用路由数,> 1 表示具备多通道路由冗余 |
input_price_micros / output_price_micros | number | 单价(微元 / 计价单位),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
完整列表以接口返回为准。未命中别名表的模型名会原样透传,不影响既有调用。