OpenAI 相容介面
用官方 OpenAI SDK 呼叫 Asale 閘道的 Chat Completions 與 Responses。改掉 base URL 和金鑰,其餘程式碼原封不動。
OpenAI 協定是閘道支援面最廣的一種,也是絕大多數第三方函式庫預設對接的那一種。如果你的程式用的是 openai 套件,或任何模仿它的函式庫,看這一頁就夠了。
金鑰、模型、計費與錯誤碼請先看總覽;本頁只講 OpenAI 特有的部分。
連線參數
| Base URL | https://gw.asale.ai/v1 |
| 驗證標頭 | Authorization: Bearer sk-asale-... |
| SDK 環境變數 | OPENAI_API_KEY、OPENAI_BASE_URL |
這裡的 /v1 屬於 base URL:OpenAI 用戶端會在你給的位址後面自己串上 /chat/completions。
介面清單
| 方法 | 路徑 | 說明 |
|---|---|---|
| POST | /v1/chat/completions | 主介面。 |
| POST | /v1/responses | Responses API。Codex ≥ 0.146 只會說這一種。 |
| POST | /v1/completions | 舊版文字補全,對應到同一條鏈路。 |
| GET | /v1/models | 平台此刻能媒合的模型。 |
呼叫
curl https://gw.asale.ai/v1/chat/completions \
-H "Authorization: Bearer $ASALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"messages": [{"role": "user", "content": "Hello"}],
"stream": false
}'
# pip install openai
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ASALE_API_KEY"],
base_url="https://gw.asale.ai/v1",
)
resp = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
// npm i openai
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.ASALE_API_KEY,
baseURL: "https://gw.asale.ai/v1",
});
const resp = await client.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);
串流
stream: true 回傳 text/event-stream,事件為 chat.completion.chunk,最後以 data: [DONE] 結束,與 OpenAI 官方一致。現有解析程式碼無需更動。
stream = client.chat.completions.create(
model="gpt-5",
messages=[{"role": "user", "content": "數到五"}],
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
工具呼叫
tools 與 tool_choice 原樣透傳,助理回傳的 tool_calls 結構也一致。執行結果照常以 role: "tool" 訊息回傳,帶上對應的 tool_call_id。
一個請求背後可能由任一受支援廠商的賣家承接,閘道會在協定之間做翻譯。廠商私有的不透明欄位——思考簽名、encrypted_content 之類——只有在請求與承接方協定一致時才會原樣回傳;否則會被丟棄,而不是偽造一個。
實用提示
- 請設定
max_tokens。餘額凍結額度是依它計算的。不寫會讓凍結偏保守,可能在餘額其實足夠的情況下回報「餘額不足」。 - 模型名稱是平台的。用
GET /v1/models取清單,市場可以看哪些有供給。 - 圖片在模型支援時可用。請求主體上限 16 MiB,遠高於一般內嵌圖片;超過會回傳
413。 n會被忽略,一次請求只產生一個結果。