Gemini 相容介面
用官方 google-genai SDK 呼叫 Asale 閘道的 generateContent。改掉 base URL 和金鑰,請求主體原封不動。
Gemini 協定是 google-genai 和 gemini-cli 說的那一種。與另外兩種不同,它把模型名稱和串流開關都放在路徑裡而不是請求主體裡——手寫串接時最容易踩到的就是這一點。
金鑰、模型、計費與錯誤碼請先看總覽;本頁只講 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 分片的 SSE。
for chunk in client.models.generate_content_stream(
model="gemini-2.5-pro",
contents="數到五",
):
print(chunk.text, end="", flush=True)
生成參數與工具
generationConfig——maxOutputTokens、temperature、topP、stopSequences以及思考預算都會透傳。systemInstruction作為系統提示透傳。tools/functionCall/functionResponse依原生結構透傳。
實用提示
- 路徑裡的模型名稱優先。若路徑和請求主體寫了不同的模型,以路徑為準——那才是你實際請求的位址。
- 請設定
maxOutputTokens。餘額凍結額度依它計算,回應結束後差額退回。 - 模型名稱是平台的,不是 Google 的型號表。用
GET /v1beta/models取清單,市場可以看哪些有供給。 - 請求主體上限 16 MiB。