--- title: Gem2a emoji: 🍪 colorFrom: blue colorTo: indigo sdk: docker app_file: app/main.py pinned: false --- # Gemini Cookies 代理中转服务 (Gem2a) 本项目通过 OpenAI 兼容的 API 接口,让用户能使用自己的 Gemini Cookies 访问 Gemini 模型,并提供简单的管理和监控功能。 ## 目录 - [Gemini Cookies 代理中转服务 (Gem2a)](#gemini-cookies-代理中转服务-gem2a) - [目录](#目录) - [主要功能](#主要功能) - [技术栈](#技术栈) - [项目结构](#项目结构) - [快速开始 (本地)](#快速开始-本地) - [Docker 部署](#docker-部署) - [1. 构建镜像](#1-构建镜像) - [2. 运行容器 (本地)](#2-运行容器-本地) - [3. Hugging Face Spaces 部署](#3-hugging-face-spaces-部署) - [API 端点](#api-端点) - [配置](#配置) - [模型信息与限制](#模型信息与限制) - [注意事项](#注意事项) - [贡献](#贡献) - [许可](#许可) ## 主要功能 - **OpenAI API 兼容**: `/v1/chat/completions` 端点。 - **Gemini Cookies 代理**: 使用用户提供的 `Secure-1PSID` 和 `Secure-1PSIDTS` Cookies。 - **多模态支持**: 文本和 Base64 图片输入。 - **多轮对话**: 基于 `thread_id` 管理会话,但目前仅支持单轮多模态输入,完整的历史消息支持仍在开发中。 - **认证令牌认证**: `X-Auth-Token` 请求头,支持管理员和普通用户认证令牌。 - **服务指标**: `/metrics` 端点监控。 - **简单前端**: 用于测试和交互。 - **Docker 部署**: 支持 Docker 及 Hugging Face Spaces。 ## 技术栈 - **后端**: Python, FastAPI - **Gemini 交互**: `gemini-webapi` - **前端**: HTML, CSS, JavaScript (原生) - **缓存**: `cachetools` - **容器化**: Docker ## 项目结构 ``` Gem2a/ ├── app/ # FastAPI 应用 │ ├── api/ # API 路由 │ ├── static/ # 前端静态文件 │ │ ├── css/ # CSS 文件 │ │ ├── js/ # JavaScript 文件 │ │ ├── index.html # 前端主页 │ │ ├── login.html # 登录页面 │ │ └── LICENSE-CN.md # 许可文件副本 │ └── main.py # 应用入口 ├── dev_plan/ # 开发计划 ├── .gitignore ├── Dockerfile ├── README.md └── requirements.txt ``` ## 快速开始 (本地) 1. **克隆仓库** 2. **创建虚拟环境并激活** 3. **安装依赖**: `pip install -r requirements.txt` 4. **配置环境变量**: 创建 `.env` 文件,填入 `ADMIN_API_KEYS`, `USER_API_KEYS`, `GEMINI_PSID_COOKIES`, `GEMINI_PSIDTS_COOKIES`。 ```env # .env 示例 ADMIN_API_KEYS="your_admin_key" USER_API_KEYS="user_key1,user_key2" GEMINI_PSID_COOKIES="psid_cookie_value1,psid_cookie_value2" GEMINI_PSIDTS_COOKIES="psidts_cookie_value1,psidts_cookie_value2" # 注意: GEMINI_PSID_COOKIES 和 GEMINI_PSIDTS_COOKIES 中的 Cookie 值必须一一对应。 ``` 5. **运行应用**: `uvicorn app.main:app --host 0.0.0.0 --port 7860` # 本地开发时可添加 --reload 参数以实现代码热重载 6. **访问**: - API: `http://localhost:7860` - 前端: `http://localhost:7860/static/login.html` - 文档: `http://localhost:7860/docs` ## Docker 部署 ### 1. 构建镜像 `docker build -t gem2a .` ### 2. 运行容器 (本地) ```bash docker run -d -p 7860:7860 \ -e ADMIN_API_KEYS="your_admin_key" \ -e USER_API_KEYS="user_key1,user_key2" \ -e GEMINI_PSID_COOKIES="psid_cookie_value1,psid_cookie_value2" \ -e GEMINI_PSIDTS_COOKIES="psidts_cookie_value1,psidts_cookie_value2" \ --name gem2a_container \ gem2a ``` ### 3. Hugging Face Spaces 部署 1. **准备项目**: 确保 `Dockerfile` 和 `requirements.txt` 存在。 2. **创建 Space**: 选择 Docker SDK。 3. **上传文件**: 推送项目到 Space 的 Git 仓库。 4. **配置 Secrets**: 在 Space 设置中添加 `ADMIN_API_KEYS`, `USER_API_KEYS`, `GEMINI_PSID_COOKIES`, `GEMINI_PSIDTS_COOKIES`。 5. Hugging Face Spaces 会自动构建和部署。 6. **访问**: `https://-.hf.space` **Dockerfile 关键配置**: ```dockerfile # 使用官方 Python 镜像作为基础镜像 (需要 Python >= 3.10) FROM python:3.12-slim # 设置工作目录 WORKDIR /app # 复制 requirements.txt 并安装依赖 (这步会利用缓存,如果 requirements.txt 未变则不会重新安装) COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制整个项目 (这步在依赖安装之后,项目文件变化不会影响依赖缓存) COPY . /app # 暴露 FastAPI 应用运行的端口 # HF Spaces 会自动设置 PORT 环境变量,这里使用 7860 作为默认或示例端口 EXPOSE 7860 # 定义启动命令 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860", "--reload"] ``` ## API 端点 - **POST** `/v1/chat/completions` (OpenAI 兼容聊天接口) - 请求头: `X-Auth-Token: ` - 请求体: 包含 `model`, `messages`, 可选 `temperature`, `max_tokens`, `thread_id`。 - **GET** `/v1/metrics` (服务指标, 建议管理员认证令牌) - **GET** `/v1/health` (健康检查) - **GET** `/static/login.html` (前端登录) - **GET** `/static/index.html` (前端主页) ## 配置 以下是本项目可配置的环境变量: | 参数名 | 描述 | 示例值 | | :------------------- | :----------------------------------------------------------------- | :--------------------------------------- | | `ADMIN_API_KEYS` | 管理员认证令牌 (环境变量, 逗号分隔) | `your_admin_token` | | `USER_API_KEYS` | 普通用户认证令牌 (环境变量, 逗号分隔) | `user_token1,user_token2` | | `GEMINI_PSID_COOKIES`| Gemini Secure-1PSID Cookie 值列表 (环境变量, 逗号分隔) | `psid_cookie_value1,psid_cookie_value2` | | `GEMINI_PSIDTS_COOKIES`| Gemini Secure-1PSIDTS Cookie 值列表 (环境变量, 逗号分隔) | `psidts_cookie_value1,psidts_cookie_value2`| **重要**: `GEMINI_PSID_COOKIES` 和 `GEMINI_PSIDTS_COOKIES` 中的值必须一一对应,以组成有效的 Cookie 对。 ## 模型信息与限制 以下是根据截止2025年5月22日的政策信息,谷歌Gemini免费用户与Google AI Pro/Ultra用户的限制区别: | 功能/特性 | 谷歌Gemini免费用户 | Google AI Pro (或称Google One AI 高级版) | Google AI Ultra | | :------------------ | :------------------------------------------------------- | :----------------------------------------------------------- | :------------------------------------------------------- | | **可访问模型** | Gemini 2.5 Flash (默认), 限量访问 Gemini 2.5 Pro | 更多访问 Gemini 2.5 Pro 和 Veo 2 | 最高访问级别,包括 Gemini 2.5 Pro Deep Think (即将推出) 和 Veo 3 (最新视频生成模型) | | **上下文窗口** | 3.2万 (32K) tokens (约50页文本) | 100万 (1M) tokens (约1500页文本或3万行代码) | 100万 (1M) tokens (约1500页文本或3万行代码) | | **深度研究 (Deep Research)** | 有限访问 (通常每天少于20次报告,部分报道为每月几次) | 更多访问,由 Gemini 2.5 Pro 提供支持,可自动浏览和分析数百个网站 | 最高访问级别 | | **视频生成** | 通常不支持或访问权限受限 | 支持 Veo 2 视频生成,具有更高额度 | 支持 Veo 3 视频生成,具有最高额度 (Flow, Whisk 等工具) | | **音频概览 (Audio Overviews)** | 有限访问 (例如每天3次) | 更多访问 (例如每天20次,是免费版的5倍) | 最高访问级别 | | **Python 代码编辑与运行** | 不支持 | 支持直接在界面内编辑和运行代码 | 支持直接在界面内编辑和运行代码 | | **文件上传与分析** | 所有文件类型 (文档、幻灯片) 可上传;电子表格需订阅 | 所有文件类型可上传 (包括电子表格),可处理更大文件 (高达1500页) | 所有文件类型可上传,可处理更大文件 | | **个性化与记忆功能** | 有限 | 优先体验记忆功能,可创建自定义“Gem” (AI专家) | 优先体验记忆功能,可创建自定义“Gem” (AI专家) | | **速率限制/使用额度** | 较低 (例如 Gemini 1.5 Pro 可能限制为 2 RPM / 50 RPD) | 更高 (例如 Gemini 1.5 Pro/Flash 可达 360 RPM / 10000 RPD) | 最高速率限制和使用额度 | | **Google Workspace 集成** | 不包含深度集成 | 包含与 Gmail, Google Docs 等 Google 应用的集成 | 包含与 Gmail, Google Docs 等 Google 应用的集成 | | **Google One 额外福利** | 15 GB 存储 | 2 TB Google Drive 存储,及其他 Google One 会员专属福利和专家支持 | 2 TB Google Drive 存储,及其他 Google One 会员专属福利和专家支持 | | **订阅费用** | 免费 | 19.99美元/月 (试用期后) | 250美元/月 (最高级方案) | **重要提示:** * **Google AI Pro** 是 Google One AI Premium 计划的一部分,通常包含在每月订阅中。 * **Gemini Advanced** 已被 Google AI Pro 取代或扩展,但部分来源仍可能提及。 * **Google AI Ultra** 是一个更高级的订阅计划,提供最高级别的访问权限和最新功能。 * 上述信息基于2025年5月22日之前的公开政策和新闻报道。具体功能和限制可能会根据Google的最新发布和地区政策有所调整。 来源: * [Google AI Plans and Features](https://one.google.com/about/google-ai-plans/) * [Google AI Pro & Ultra — get more out of Gemini](https://gemini.google/subscriptions/) * [Gemini gets more personal, proactive and powerful - Google Blog](https://blog.google/products/gemini/gemini-app-updates-io-2025/) * [What features do you get with Gemini Advanced? [April 2025] - 9to5Google](https://9to5google.com/2025/04/19/gemini-advanced-features/) * [Google Gemini Free vs Paid: Is it Worth Upgrading? - Institute of Ai Studies](https://www.instituteofaistudies.com/insights/google-gemini-free-vs-paid) ## 注意事项 - **安全**: 妥善保管 Gemini Cookies。 - **未来工作**: 完善错误处理、日志、调用记录持久化、前端增强、速率限制。 ## 贡献 欢迎提交 Pull Requests 或 Issues。 ## 许可 本项目采用 知识共享署名-非商业性使用 4.0 国际许可协议 (Creative Commons Attribution-NonCommercial 4.0 International License) 进行许可。 这意味着您可以自由地: * **共享** — 在任何媒介以任何形式复制、发行本作品 * **演绎** — 修改、转换或以本作品为基础进行创作 只要你遵守许可协议条款,许可人就无法收回你的这些权利。 惟须遵守下列条件: * **署名 (BY)** — 您必须给出适当的署名,提供指向本许可协议的链接,同时标明是否(对原始作品)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示许可人为您或您的使用背书。 * **非商业性使用 (NC)** — 您不得将本作品用于商业目的。 * **没有附加限制** — 您不得适用法律术语或者技术措施从而限制其他人做许可协议允许的事情。 **注意**: * 您不必因为公共领域的作品要素而遵守许可协议,或者您的使用被可适用的例外或限制所允许。 * 不提供担保。许可协议可能不会给与您意图使用的所必须的所有许可。例如,其他权利比如形象权、隐私权或人格权可能限制您如何使用作品。 完整的许可证文本可以在 [LICENSE.md](LICENSE.md) (英文) 和 [LICENSE-CN.md](LICENSE-CN.md) (简体中文) 文件中找到,或者访问 Creative Commons 网站。 作为本项目的原始作者,我保留将此项目用于商业目的或以其他不同许可证授权的权利。