HanaokaYuzu / Gemini-API 的服务端简单实现
| 原始界面 | 管理面板 |
|---|---|
![]() |
![]() |
| 平台 | 地址 | 面板密码 |
|---|---|---|
| Render | gemi2api-server-1ol5.onrender.com/admin/ | Gemi2Api-Server(demo 专用,请勿用于生产) |
| HuggingFace | zhiyu1998-gemi2api-server.hf.space/admin/ | Gemi2Api-Server(demo 专用,请勿用于生产) |
Note
以上体验地址未配置 Gemini Cookie,仅展示管理面板界面。如需完整功能请自行部署。
- 填入
SECURE_1PSID和SECURE_1PSIDTS(登录 Gemini 在浏览器开发工具中查找 Cookie),有必要的话可以填写API_KEY
SECURE_1PSID = "COOKIE VALUE HERE"
SECURE_1PSIDTS = "COOKIE VALUE HERE"
API_KEY= "API_KEY VALUE HERE"
TEMPORARY_CHAT = "false" # 使用临时对话模式,此模式会禁用部分功能如思考、图片生成等,默认关闭。
AUTO_DELETE_CHAT = "true" # 生成结束后自动从web端删除对话记录,默认开启。TEMPORARY_CHAT为true时,此项无效。
PUBLIC_BASE_URL = "https://your-domain.com" # 外部URL,用于生成图片代理链接,不填则会使用内部地址。使用反向代理时必填,否则可能导致图片无法访问。
CUSTOM_MODELS_FILE = "custom_models.yaml" # 可选。用于覆写/新增 Gemini 模型定义,支持 YAML/JSON。
DISABLE_BUILTIN_MODELS = "false" # 可选。设为 true 时,/v1/models 仅返回 CUSTOM_MODELS(_FILE) 中定义的模型,不再追加 gemini_webapi 内置模型。此开关在服务启动时读取,修改 .env 后需重启生效(区别于 CUSTOM_MODELS_FILE 的免重启热加载)。custom_models.yaml 示例:
models:
- model_name: "gemini-3.5-flash"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8],null,null,2,null,null,1,1,"09D681E7-26F2-4A94-A465-38386B7AB93B"]'
- model_name: "gemini-3.5-flash-extended"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8],null,null,2,null,null,1,2,"B827D4F4-D475-4ECA-9111-5C1296A38681"]'
- model_name: "gemini-3.1-flash-lite"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"8c46e95b1a07cecc",null,null,0,[4,5,6,8],null,null,2,null,null,6,1,"09D681E7-26F2-4A94-A465-38386B7AB93B"]'
- model_name: "gemini-3.1-pro"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"e6fa609c3fa255c0",null,null,0,[4,5,6,8],null,null,2,null,null,3,1,"09D681E7-26F2-4A94-A465-38386B7AB93B"]'
- model_name: "gemini-deep-research"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"cd472a54d2abba7e"]'
- model_name: "gemini-3.6-flash"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"fbb127bbb056c959",null,null,0,[4,5,6,8],null,null,1,null,null,1,1,"0827BFC9-35C9-4CF1-A987-87F0B2BF0C6E"]'
- model_name: "gemini-3.5-flash-lite"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"cf41b0e0dd7d53e5",null,null,0,[4,5,6,8],null,null,1,null,null,6,1,"0827BFC9-35C9-4CF1-A987-87F0B2BF0C6E"]'
- model_name: "gemini-3.6-flash-extended"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"fbb127bbb056c959",null,null,0,[4,5,6,8],null,null,1,null,null,1,2,"3E5BE600-4DF2-4821-B682-4A4B3885F8F8"]'
- model_name: "gemini-3.5-flash-lite-extended"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"cf41b0e0dd7d53e5",null,null,0,[4,5,6,8],null,null,1,null,null,6,2,"3E5BE600-4DF2-4821-B682-4A4B3885F8F8"]'
- model_name: "gemini-3.7-flash"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8,4,5,6,8],null,null,2,null,null,1,1,"68ADC952-1090-45A3-881B-066FE84E468A"]'
- model_name: "gemini-3.7-flash-extended"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8,4,5,6,8],null,null,2,null,null,1,2,"68ADC952-1090-45A3-881B-066FE84E468A"]'
- model_name: "gemini-3.8-flash"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8,4,5,6,8],null,null,2,null,null,1,1,"FD30080F-8580-412F-BB88-6E42B15C8613"]'
- model_name: "gemini-3.8-flash-extended"
model_header:
x-goog-ext-525001261-jspb: '[1,null,null,null,"56fdd199312815e2",null,null,0,[4,5,6,8,4,5,6,8],null,null,2,null,null,1,2,"FD30080F-8580-412F-BB88-6E42B15C8613"]'
main.py会按CUSTOM_MODELS_FILE中的model_header原样透传;如果你需要x-goog-ext-73010989-jspb或x-goog-ext-73010990-jspb,请在 YAML 里显式写出来。x-goog-ext-525005358-jspb不需要手填,运行时会按每次请求自动生成。CUSTOM_MODELS_FILE会在每次请求/读取模型列表时重新加载,修改文件内容后无需重启服务。
- 安装依赖
uv init
uv add fastapi uvicorn gemini-webapi httpx h2Note
如果存在 pyproject.toml 那么就使用下面的命令:
uv sync或者 pip 也可以:
pip install fastapi uvicorn gemini-webapi httpx h2- 激活环境
source venv/bin/activate- 启动
uvicorn main:app --reload --host 127.0.0.1 --port 7860Warning
tips: .env.example 中默认设置了 API_KEY=Gemi2Api-Server,复制到 .env 后即可登录管理面板。正式部署前请务必更换为强密码。
-
克隆本项目
git clone https://github.com/zhiyu1998/Gemi2Api-Server.git
-
创建
.env文件并填入你的 Gemini Cookie 凭据:cp .env.example .env # 用编辑器打开 .env 文件,填入你的 Cookie 值 -
启动服务:
docker-compose up -d
-
服务将在 http://127.0.0.1:7860 上运行
# 查看日志
docker-compose logs
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 重新构建并启动
docker-compose up -d --buildGET /: 服务状态检查GET /v1/models: 获取可用模型列表POST /v1/chat/completions: 与模型聊天 (类似 OpenAI 接口)GET /gemini-proxy/image: 图片代理接口(有生成图片需求时,需要保证此端点可直接访问,如果使用反向代理则需要填写PUBLIC_BASE_URL环境变量)GET /admin: 管理面板
访问 /admin 进入管理面板,支持以下功能:
- 查看服务状态和 Gemini 连接状态
- 配置 Gemini Cookie(无需重启)
- 修改 API_KEY、限流等参数
- 查看实时日志
- 在线测试聊天
Note
未设置 API_KEY 时管理面板不可用。密码通过 .env 文件中的 API_KEY 配置,.env.example 提供了默认值 Gemi2Api-Server,正式部署前请务必更换。
500 的问题一般是 IP 不太行 或者 请求太频繁(后者等待一段时间或者重新新建一个隐身标签登录一下重新给 Secure_1PSID 和 Secure_1PSIDTS 即可),见 issue:
- __Secure-1PSIDTS · Issue #6 · HanaokaYuzu/Gemini-API
- Failed to initialize client. SECURE_1PSIDTS could get expired frequently · Issue #72 · HanaokaYuzu/Gemini-API
解决步骤:
- 使用隐身标签访问 Google Gemini 并登录
- 打开浏览器开发工具 (F12)
- 切换到 "Application" 或 "应用程序" 标签
- 在左侧找到 "Cookies" > "gemini.google.com"
- 复制
__Secure-1PSID和__Secure-1PSIDTS的值 - 更新
.env文件 - 重新构建并启动:
docker-compose up -d --build
- 图片去水印算法基于 journey-ad/gemini-watermark-remover 以及 allenk/GeminiWatermarkTool 实现,并直接使用了其中的两张 png 图片。
同时感谢以下开发者对 Gemi2Api-Server 作出的贡献:

