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。