zhiyu1998/Gemi2Api-Server
HanaokaYuzu / Gemini-API 的服务端简单实现,仓库自动更新上游,支持gemini-3.6-flash、gemini-3.5-flash-lite 等
Gemi2Api‑Server – 一個輕量級的 Google Gemini 自託管代理伺服器
是什麼
- 一個小型 FastAPI 服務,將請求轉發至 unofficial Google Gemini 網頁 API(與 Gemini‑API 專案使用的 API 相同)。它模擬了 OpenAI 的
/v1/chat/completions端點,因此現有的客戶端可以直接與 Gemini 對話,而無需使用 Google 的官方 SDK。 - 包含內建的管理介面 (admin UI),您可以在其中查看服務狀態、編輯所需的 Gemini cookies、更改 API key,以及進行聊天測試。
為什麼存在
- Google Gemini 目前尚未提供公開且付費的 API(截至本文撰寫時)。要以程式化方式呼叫它,唯一的途徑是透過逆向工程網頁 UI,並發送與瀏覽器相同的 HTTP 請求。此專案將該逆向工程後的客戶端 (
gemini‑webapi) 包裝成一個可重複使用的伺服器。 - 透過提供標準的 OpenAI 相容性端點,開發者可以將 Gemini 作為 ChatGPT 風格服務的直接替換方案。
如何運作
- 身份驗證 – 您必須提供登入 Gemini 會話所產生的兩個 cookies (
__Secure-1PSID和__Secure-1PSIDTS)。README 說明了如何從瀏覽器的開發者工具中提取它們。 - FastAPI + Uvicorn – 伺服器運行一個 FastAPI app (
main.py)。對/v1/models的請求會返回可用 Gemini 模型列表;對/v1/chat/completions的 POST 請求會將 payload 轉發至 Gemini 網頁端點,並以 OpenAI 格式返回響應。 - 自定義模型定義 – 可選的
custom_models.yaml可以覆蓋或新增模型條目,讓您能夠更改 Gemini 所預期的 request headers (x-goog-ext‑…‑jspb)。 - 圖片代理 – 當 Gemini 返回生成的圖片 URL 時,伺服器可以透過
/gemini‑proxy/image代理圖片,以便在防火牆或反向代理伺服器後方可以正常存取。 - 管理面板 – 可在
/admin存取。該面板受您在.env中設置的API_KEY保護。它讓您能夠:- 查看 Gemini 連線的健康狀態。
- 在不重新啟動的情況下更新 cookie values。
- 調整速率限制 (rate-limit) 設置。
- 查看即時日誌並進行快速聊天測試。
如何運行
- Docker (推薦) – 在將
.env.example複製為.env並填入 cookie values 之後,執行docker-compose up -d。 - 直接運行 – 安裝依賴項 (
uv或pip),啟動虛擬環境,然後執行uvicorn main:app --reload。 - 環境變數控制可選行為:
TEMPORARY_CHAT會禁用「思考」或圖片生成等功能。AUTO_DELETE_CHAT在收到響應後會從 Gemini 中移除對話紀錄。PUBLIC_BASE_URL在使用反向代理時,對於正確的圖片代理 URL 是必要的。
使用場景
- 希望在自己的應用程式中嘗試 Gemini,而不依賴第三方託管服務的開發者。
- 正在構建內部工具且已經支援 OpenAI API 的團隊,因成本或功能原因想要切換到 Gemini。
- 需要在 Render, HuggingFace Spaces, 或自託管伺服器上快速進行 Gemini 聊天與圖片生成功能的演示。
限制
- 它依賴於使用者提供的 cookies;如果 Google 輪換或使之失效,服務將停止運作,直到您更新 cookies。
- 由於它使用的是未公開的網頁 API,它可能會在未經通知的情況下失效。
- 演示部署 (Render, HuggingFace) 附帶一個佔位符密碼,且沒有 Gemini cookies,因此它們僅顯示管理介面。
致謝
- 使用了
gemini‑webapi函式庫進行底層請求處理。 - 圖片去水印代碼是借用自
journey‑ad/gemini-watermark-remover和allenk/GeminiWatermarkTool專案。
TL;DR: Gemi2Api‑Server 是一個基於 FastAPI 的代理伺服器,讓您能像呼叫 OpenAI 相容性 API 一樣呼叫 Google Gemini。您需要提供自己的 Gemini 登入 cookies,可選擇性地自定義模型 headers,並在本地或容器中運行。對於想要使用 Gemini 的聊天與圖片生成功能,但又沒有官方 API 的開發者來說,這是一個實用的橋樑。
相關
- 專案
- 專案
- 專案
- 專案
- 專案