Asale

Gemini 互換 API

公式 google-genai SDK から Asale ゲートウェイの generateContent を呼び出します。base URL とキーを変えるだけで、リクエストボディはそのままです。

Gemini 方言は google-genaigemini-cli が話す形式です。他の 2 つと違い、モデル名もストリーミングの指定もパスに載り、ボディには入りません——手で組むときに最も間違えやすいのがここです。

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

接続情報

Base URLhttps://gw.asale.ai
認証ヘッダーx-goog-api-key: sk-asale-...
SDK 環境変数GEMINI_API_KEYGOOGLE_GEMINI_BASE_URL

base URL はホストまでです。Google のクライアントは /v1beta/models/… を自分で付けるため、https://gw.asale.ai/v1beta を渡すとパスが二重になり 404 になります。gemini-cli が読む GOOGLE_GEMINI_BASE_URL もホストのみです。

Authorization: Bearerx-api-key も受け付けます。?key= クエリ文字列に入れたキーは受け付けません——ヘッダーに入れてください。

エンドポイント

メソッドパス備考
POST/v1beta/models/{model}:generateContent主となるもの。
POST/v1beta/models/{model}:streamGenerateContentストリーミング——メソッド名がそのままフラグです。
GET/v1beta/modelsいまマッチできるモデル一覧。

呼び出す

curl "https://gw.asale.ai/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "x-goog-api-key: $ASALE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"role": "user", "parts": [{"text": "Hello"}]}]
  }'
# pip install google-genai
import os
from google import genai
from google.genai import types

client = genai.Client(
    api_key=os.environ["ASALE_API_KEY"],
    http_options=types.HttpOptions(base_url="https://gw.asale.ai"),
)

resp = client.models.generate_content(
    model="gemini-2.5-pro",
    contents="Hello",
)
print(resp.text)
// npm i @google/genai
import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({
  apiKey: process.env.ASALE_API_KEY,
  httpOptions: { baseUrl: "https://gw.asale.ai" },
});

const resp = await ai.models.generateContent({
  model: "gemini-2.5-pro",
  contents: "Hello",
});
console.log(resp.text);

ストリーミング

:generateContent の代わりに :streamGenerateContent を呼びます。メソッド名の接尾辞がストリーミングのスイッチで——Gemini のボディに stream フィールドはありません——応答は GenerateContentResponse のチャンクを載せた Server-Sent Events です。

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-pro",
    contents="5 まで数えて",
):
    print(chunk.text, end="", flush=True)

生成設定とツール

  • generationConfig —— maxOutputTokenstemperaturetopPstopSequences、thinking の予算はそのまま通ります。
  • systemInstruction はシステムプロンプトとして通ります。
  • tools / functionCall / functionResponse はネイティブの形のまま通ります。

実務上の注意

  • パスのモデル名が優先されます。 パスとボディでモデルが食い違う場合、実際に呼んだのはパスなので、パスが採用されます。
  • maxOutputTokens を指定してください。 残高の確保額はこれを基に計算し、応答完了後に差額が戻ります。
  • モデル名はプラットフォームのものであり、Google の型番一覧ではありません。一覧は GET /v1beta/models、供給の有無はマーケットで確認できます。
  • リクエストボディの上限は 16 MiB です。