Gemini 互換 API
公式 google-genai SDK から Asale ゲートウェイの generateContent を呼び出します。base URL とキーを変えるだけで、リクエストボディはそのままです。
Gemini 方言は google-genai と gemini-cli が話す形式です。他の 2 つと違い、モデル名もストリーミングの指定もパスに載り、ボディには入りません——手で組むときに最も間違えやすいのがここです。
キー・モデル・課金・エラーコードはまず概要を参照してください。ここでは Gemini 固有の部分だけを扱います。
接続情報
| Base URL | https://gw.asale.ai |
| 認証ヘッダー | x-goog-api-key: sk-asale-... |
| SDK 環境変数 | GEMINI_API_KEY、GOOGLE_GEMINI_BASE_URL |
base URL はホストまでです。Google のクライアントは /v1beta/models/… を自分で付けるため、https://gw.asale.ai/v1beta を渡すとパスが二重になり 404 になります。gemini-cli が読む GOOGLE_GEMINI_BASE_URL もホストのみです。
Authorization: Bearer と x-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——maxOutputTokens、temperature、topP、stopSequences、thinking の予算はそのまま通ります。systemInstructionはシステムプロンプトとして通ります。tools/functionCall/functionResponseはネイティブの形のまま通ります。
実務上の注意
- パスのモデル名が優先されます。 パスとボディでモデルが食い違う場合、実際に呼んだのはパスなので、パスが採用されます。
maxOutputTokensを指定してください。 残高の確保額はこれを基に計算し、応答完了後に差額が戻ります。- モデル名はプラットフォームのものであり、Google の型番一覧ではありません。一覧は
GET /v1beta/models、供給の有無はマーケットで確認できます。 - リクエストボディの上限は 16 MiB です。