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 – 您可自由使用、修改和重新分发代码。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目