Anthropic 兼容接口
用官方 Anthropic SDK 调用 Asale 网关的 Messages API。改掉 base URL 和密钥,请求体原样不动。
Anthropic 协议是 Claude Code 和所有 anthropic SDK 说的那一种。把客户端的 base URL 指向网关,其余代码原样不动。
密钥、模型、计费和错误码请先看总览;本页只讲 Anthropic 特有的部分。
连接参数
| Base URL | https://gw.asale.ai |
| 鉴权头 | x-api-key: sk-asale-... |
| SDK 环境变量 | ANTHROPIC_API_KEY、ANTHROPIC_BASE_URL |
base URL 只写到域名。Anthropic 客户端会自己拼 /v1/messages,所以填 https://gw.asale.ai/v1 会变成 /v1/v1/messages,直接 404。
只认 Authorization: Bearer 的客户端也能用,这里同样接受。
接口清单
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /v1/messages | 主接口。 |
| POST | /v1/messages/count_tokens | 估算值,不是厂商分词器的精确计数,见下文。 |
照常带上 anthropic-version: 2023-06-01,SDK 会自动加。
调用
curl https://gw.asale.ai/v1/messages \
-H "x-api-key: $ASALE_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
# pip install anthropic
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["ASALE_API_KEY"],
base_url="https://gw.asale.ai",
)
msg = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)
print(msg.content[0].text)
// npm i @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: process.env.ASALE_API_KEY,
baseURL: "https://gw.asale.ai",
});
const msg = await client.messages.create({
model: "claude-sonnet-4-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hello" }],
});
console.log(msg.content[0].text);
流式
stream: true 返回 Anthropic 原生的事件序列——message_start、content_block_delta、message_delta、message_stop——以 SSE 形式推送,不做改写。
with client.messages.stream(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "数到五"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
系统提示、工具与思考
system原样透传,包括提示词末尾的缓存断点——那是所有 agent 客户端都会设、也最值钱的那个断点。tools/tool_use/tool_result按原生结构透传。thinking在模型支持时可用。思考块的signature只有在请求由同协议承接时才回传;若由其他厂商的卖家承接,则不返回签名,而不是伪造一个。
计算 token
POST /v1/messages/count_tokens 返回的是启发式估算,按字符类别加权(拉丁文约 4 字符/token,中日韩约 1.5 字符/token),再加上每条消息的框架开销:
{ "input_tokens": 1234 }
它的存在是为了让「不先算数就不肯发请求」的客户端能发出请求。不要拿它做逐 token 的预算——精确值需要厂商自家的分词器,网关并不运行它。实际计费依据的是真实用量,不是这个数。
实用提示
max_tokens是 Messages API 的必填项,同时也是余额冻结额度的计算依据。写大了不会多花钱——响应结束后差额会退回。- 模型名是平台的。可用 OpenAI 路径的
GET /v1/models取清单,市场可以看哪些有供给。 - 请求体上限 16 MiB。