Sophomoresty/gemini-web2api

Convert Google Gemini web into OpenAI-compatible API. Zero auth, cross-platform, single file.

gemini‑web2api – 將 Google Gemini 的網頁 UI 轉換為 OpenAI 相容 API

是什麼 – 一個單一檔案的 Python 伺服器,與私有的 Gemini 網頁端點通訊,並重新公開為 OpenAI 的 /v1/chat/completions(及相關)API。它讓任何 OpenAI 相容的客戶端(ChatGPT 風格 UI、openai Python SDK、curl 等)在不需 Google 特定客戶端的情況下使用 Gemini 模型。


核心功能(如 README 所述)

功能 含義
OpenAI 相容端點 實作 /v1/chat/completions/v1/models,以及用於 Codex 風格使用的特殊 /v1/responses 和原生 Gemini 的 /v1beta/* 端點。
可選 API 金鑰驗證 config.json 中的 api_keys 為空,伺服器為開放狀態;否則需要 Bearer 權杖(或 x‑api‑key)。
工具/函數呼叫 接受 OpenAI 風格的函數定義,並回傳函數呼叫物件,從而支援工具使用。
多模態影像輸入 支援 OpenAI 風格的 image_url 訊息(URL 或 base64),用於 Gemini 的影像理解端點。
串流(SSE) 使用 httpx 轉發 Gemini 的 Server-Sent Events,使客戶端可接收部分權杖。
多個 Gemini 模型 提供 gemini-3.6-flashgemini-3.5-flash-thinkinggemini-3.1-pro 等別名,並附帶輸出長度提示(10–20 k 字元)。
可調的「思考深度」 在模型名稱後附加 @think=N(0–4)以請求更深或更淺的推理。
網路搜尋整合 利用 Gemini 內建搜尋功能,使提示可自動觸發網際網路查詢。
跨平台,單一檔案 純 Python(僅需 httpx)。
Docker 支援 提供官方 Dockerfile 和 compose 片段,便於部署。
代理支援 可透過 CLI 標誌、設定或 HTTPS_PROXY 將流量路由至 HTTP 代理。

快速開始(來自 README)

pip install httpx               # 唯一相依性
python gemini_web2api.py        # 在 http://localhost:8081/v1 啟動伺服器

使用 OpenAI 客戶端

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8081/v1", api_key="sk‑your‑key")
resp = client.chat.completions.create(
    model="gemini-3.5-flash-thinking",
    messages=[{"role": "user", "content": "解釋量子計算"}]
)
print(resp.choices[0].message.content)

相同的端點也可與 curl、Postman 或任何允許設定自訂基礎 URL 的 UI 一起使用。


設定亮點

  • config.json 位於腳本同目錄。關鍵欄位:
    • porthost – 伺服器監聽的位置。
    • api_keys – 字串清單;為空則無需驗證。
    • cookie_file – 包含 Google 認證 Cookie 的檔案路徑(用於付費 Gemini Advanced 模型和影像上傳必需)。
    • auth_user / xsrf_token – 當 Cookie 屬於多帳戶 Google 會話時需要。
    • proxy – 可選的 HTTP 代理 URL。
    • temporary_chats – 為 true 時,對話不會儲存至 Google 帳戶歷史中。
  • 倉儲中提供了範例 config.json;請複製 config.example.json 並依需求編輯。

模型列表(README 表)

模型名稱 描述 近似最大輸出
gemini-3.6-flash(別名 gemini-3.5-flash 通用型,最新模型 約 12 k 字元
gemini-3.5-flash-thinking 「擴展思考」,最長輸出 約 20 k 字元
gemini-3.5-flash-thinking-lite 自適應深度,中等輸出 約 15 k 字元
gemini-3.1-pro 高階數學與程式碼(需付費訂閱 Cookie) 約 12 k 字元
gemini-auto 自動選擇最佳模型 變動
gemini-flash-lite 最快,輕量 約 10 k 字元

深度可透過 @think=N 後綴調整(0 = 最深,4 = 最淺)。


限制與注意事項(如所列)

  • 影像上傳可能需要 Cookie – 匿名使用者無法使用多模態端點;請提供有效的 Gemini Advanced Cookie。
  • 「Pro」標籤僅為 UI – 無付費訂閱 Cookie 時,gemini-3.1-pro 會回退至 Flash 模型。
  • 每請求無狀態 – 伺服器不保持對話狀態;若需多輪上下文,必須在請求負載中包含先前訊息。
  • Google 限流 – 高流量可能被限速;伺服器會重試幾次,但持續濫用可能被封禁。
  • Docker 網路 – 某些 NAT 範圍被 Gemini 阻擋;若看到空回應,請使用主機網路。

工作原理(簡要)

該腳本逆向工程了 Gemini 網頁應用發送至 StreamGenerate 端點的類似 Protobuf 的負載。它將 OpenAI JSON 請求體轉換為此格式,使用 httpx 轉發請求,然後將回應轉換回 OpenAI 風格 JSON(包括串流區塊)。模型選擇由從 Gemini 前端 JavaScript 中提取的欄位([79])驅動。


許可證

MIT – 您可自由使用、修改和重新分發程式碼。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案