Asale

Gemini 相容介面

用官方 google-genai SDK 呼叫 Asale 閘道的 generateContent。改掉 base URL 和金鑰,請求主體原封不動。

Gemini 協定是 google-genaigemini-cli 說的那一種。與另外兩種不同,它把模型名稱和串流開關都放在路徑裡而不是請求主體裡——手寫串接時最容易踩到的就是這一點。

金鑰、模型、計費與錯誤碼請先看總覽;本頁只講 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 分片的 SSE。

for chunk in client.models.generate_content_stream(
    model="gemini-2.5-pro",
    contents="數到五",
):
    print(chunk.text, end="", flush=True)

生成參數與工具

  • generationConfig —— maxOutputTokenstemperaturetopPstopSequences 以及思考預算都會透傳。
  • systemInstruction 作為系統提示透傳。
  • tools / functionCall / functionResponse 依原生結構透傳。

實用提示

  • 路徑裡的模型名稱優先。若路徑和請求主體寫了不同的模型,以路徑為準——那才是你實際請求的位址。
  • 請設定 maxOutputTokens。餘額凍結額度依它計算,回應結束後差額退回。
  • 模型名稱是平台的,不是 Google 的型號表。用 GET /v1beta/models 取清單,市場可以看哪些有供給。
  • 請求主體上限 16 MiB。