zhiyu1998/Gemi2Api-Server

HanaokaYuzu / Gemini-API 的服务端简单实现,仓库自动更新上游,支持gemini-3.6-flash、gemini-3.5-flash-lite 等

Gemi2Api‑Server – Google Gemini用の軽量なセルフホスト型プロキシ

概要

  • unofficial な Google Gemini ウェブ API(Gemini‑API プロジェクトで使用されているものと同じ API)にリクエストを転送する、小さな FastAPI サービスです。既存のクライアントが Google の公式 SDK を使用せずに Gemini と通信できるように、OpenAI の /v1/chat/completions エンドポイントを模倣します。
  • サービスの状態を確認し、必要な Gemini クッキーを編集し、API キーを変更し、チャットをテストできる、組み込みの管理 UI が含まれています。

存在理由

  • Google Gemini は(執筆時点では)公開された有料 API を提供していません。プログラムから呼び出す唯一の方法は、ウェブ UI をリバースエンジニアリングし、ブラウザが送信するのと同じ HTTP リクエストを送信することです。このリポジトリは、そのリバースエンジニアリングされたクライアント (gemini‑webapi) を再利用可能なサーバーにパッケージ化しています。
  • 標準的な OpenAI 互換のエンドポイントを公開することで、開発者は ChatGPT スタイルのサービスを Gemini に置き換えることができます。

仕組み

  1. 認証 – ログイン済みの Gemini セッションが作成する 2 つのクッキー (__Secure-1PSID__Secure-1PSIDTS) を提供する必要があります。README には、ブラウザの開発者ツールからそれらを抽出する方法が説明されています。
  2. FastAPI + Uvicorn – サーバーは FastAPI アプリ (main.py) を実行します。/v1/models へのリクエストは、利用可能な Gemini モデルのリストを返します。/v1/chat/completions への POST リクエストは、ペイロードを Gemini ウェブ エンドポイントに転送し、OpenAI 形式でレスポンスを返します。
  3. カスタムモデル定義 – オプションの custom_models.yaml を使用して、モデルのエントリを上書きまたは追加できます。これにより、 Gemini が期待するリクエストヘッダー (x-goog-ext‑…‑jspb) を変更できます。
  4. 画像プロキシ – Gemini が生成された画像の URL を返すと、サーバーは /gemini‑proxy/image を通じて画像をプロキシできます。これにより、ファイアウォールやリバースプロキシの背後にある画像にアクセスできるようになります。
  5. 管理パネル/admin でアクセス可能です。パネルは .env で設定する API_KEY によって保護されています。以下のことが可能です:
    • Gemini 接続のヘルスチェック。
    • サーバーを再起動せずにクッキーの値を更新。
    • レート制限の設定の調整。
    • ライブログの表示と、簡単なチャットテストの実行。

実行方法

  • Docker (推奨).env.example.env にコピーし、クッキーの値を入力した後、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 のチャットおよび画像生成機能のクイックデモを見せたい場合。

制限事項

  • ユーザーが提供するクッキーに依存しています。Google がそれらをローテーションまたは無効化した場合、サービスは停止します(クッキーを更新する必要があります)。
  • 未公開のウェブ API を使用しているため、予告なしに動作がなくなる可能性があります。
  • デモプロイメント (Render, HuggingFace) には、プレースホルダーのパスワードと Gemini クッキーが設定されていない ため、管理 UI だけが表示されます。

謝辞

  • 低レベルのリクエスト処理には gemini‑webapi ライブラリを使用しています。
  • 画像のウォーターマーク除去コードは、journey‑ad/gemini-watermark-remover および allenk/GeminiWatermarkTool プロジェクトから借用しています。

TL;DR: Gemi2Api‑Server は、Google Gemini を OpenAI 互換 API として呼び出せる FastAPI ベースのプロキシです。独自の Gemini ログインクッキーを提供し、オプションでモデルヘッダーをカスタム、ローカルまたはコンテナで実行します。公式 API がないため、Gemini のチャットと画像生成を利用したい開発者にとって実用的なブリッジです。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト