Asale

OpenAI 互換 API

公式 OpenAI SDK から Asale ゲートウェイの Chat Completions / Responses を呼び出します。base URL とキーを変えるだけで、残りのコードはそのままです。

OpenAI 方言はゲートウェイが話す中でもっとも対応範囲が広く、サードパーティのライブラリが既定で対応している形式でもあります。コードが openai パッケージ(またはそれを模したライブラリ)を使っているなら、このページだけで足ります。

キー・モデル・課金・エラーコードはまず概要を参照してください。ここでは OpenAI 固有の部分だけを扱います。

接続情報

Base URLhttps://gw.asale.ai/v1
認証ヘッダーAuthorization: Bearer sk-asale-...
SDK 環境変数OPENAI_API_KEYOPENAI_BASE_URL

ここでの /v1 は base URL の一部です。OpenAI のクライアントは渡された URL の後ろに /chat/completions を自分で付けます。

エンドポイント

メソッドパス備考
POST/v1/chat/completions主となるもの。
POST/v1/responsesResponses 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: truetext/event-stream が返り、chat.completion.chunk イベントと最後の data: [DONE] まで OpenAI API と同じです。既存のパーサーに変更は要りません。

stream = client.chat.completions.create(
    model="gpt-5",
    messages=[{"role": "user", "content": "5 まで数えて"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

ツール呼び出し

toolstool_choice はそのまま通り、アシスタントの tool_calls も同じ形で返ります。実行結果は通常どおり role: "tool" のメッセージに tool_call_id を添えて返してください。

1 つのリクエストは対応ベンダーのいずれかの売り手が処理し、ゲートウェイがワイヤ形式を翻訳します。ベンダー固有の不透明な値——推論の署名や encrypted_content など——は、リクエストと処理側のワイヤ形式が一致する場合にのみ返されます。一致しない場合は捏造せず、単に返しません。

実務上の注意

  • max_tokens を指定してください。 残高の確保額はこれを基に計算します。省略すると確保が保守的になり、実際には十分な残高があっても「残高不足」と出ることがあります。
  • モデル名はプラットフォームのものです。 一覧は GET /v1/models、供給の有無はマーケットで確認できます。
  • 画像はモデルが対応していれば使えます。リクエストボディの上限は 16 MiB で、通常のインライン画像よりは十分大きく、超えると 413 が返ります。
  • n は無視されます。 1 リクエストにつき 1 件の生成です。