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-flash、gemini-3.5-flash-thinking、gemini-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位于脚本同目录。关键字段:port、host– 服务器监听的位置。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 – 您可自由使用、修改和重新分发代码。
相关
- 项目
- 项目
- 项目
- 项目
- 项目