[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Nativu5--Gemini-FastAPI":3,"tool-Nativu5--Gemini-FastAPI":64},[4,23,32,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85013,2,"2026-04-06T11:09:19",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70665,3,"2026-04-06T11:28:43",[19,17,20,16],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":10,"last_commit_at":38,"category_tags":39,"status":22},3074,"gpt4free","xtekky\u002Fgpt4free","gpt4free 是一个由社区驱动的开源项目，旨在聚合多种可访问的大型语言模型（LLM）和媒体生成接口，让用户能更灵活、便捷地使用前沿 AI 能力。它解决了直接调用各类模型时面临的接口分散、门槛高或成本昂贵等痛点，通过统一的标准将不同提供商的资源整合在一起。\n\n无论是希望快速集成 AI 功能的开发者、需要多模型对比测试的研究人员，还是想免费体验最新技术的普通用户，都能从中受益。gpt4free 提供了丰富的使用方式：既包含易于上手的 Python 和 JavaScript 客户端库，也支持部署本地图形界面（GUI），更提供了兼容 OpenAI 标准的 REST API，方便无缝替换现有应用后端。\n\n其技术亮点在于强大的多提供商支持架构，能够动态调度包括 Opus、Gemini、DeepSeek 等多种主流模型资源，并支持 Docker 一键部署及本地推理。项目秉持社区优先原则，在降低使用门槛的同时，也为贡献者提供了扩展新接口的便利框架，是探索和利用多样化 AI 资源的实用工具。",65970,"2026-04-04T01:02:03",[16,19,17],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":22},51,"gstack","garrytan\u002Fgstack","gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置，旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战，gstack 提供了一套标准化解决方案，帮助开发者实现堪比二十人团队的高效产出。\n\n这套配置特别适合希望提升交付效率的创始人、技术负责人，以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具，涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令（如 `\u002Freview` 进行代码审查、`\u002Fqa` 执行测试、`\u002Fplan-ceo-review` 规划功能），即可自动化处理从需求分析到部署上线的全链路任务。\n\n所有操作基于 Markdown 和斜杠命令，无需复杂配置，完全免费且遵循 MIT 协议。gstack 不仅是一套工具集，更是一种现代化的软件工厂实践，让单人开发者也能拥有严谨的工程流程。",64992,"2026-04-06T11:09:37",[17,16],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":22},193,"meilisearch","meilisearch\u002Fmeilisearch","Meilisearch 是一个开源的极速搜索服务，专为现代应用和网站打造，开箱即用。它能帮助开发者快速集成高质量的搜索功能，无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果，而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性，并支持 AI 驱动的混合搜索（结合关键词与语义理解），显著提升用户查找信息的体验。\n\nMeilisearch 特别适合 Web 开发者、产品团队或初创公司使用，尤其适用于需要快速上线搜索功能的场景，如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK，部署简单，资源占用低，本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下，为用户提供流畅、智能搜索体验的团队来说，Meilisearch 是一个高效且友好的选择。",56980,"2026-04-06T09:43:02",[13,17,14,20,16,18],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":22},4022,"awesome-claude-skills","ComposioHQ\u002Fawesome-claude-skills","awesome-claude-skills 是一个精心整理的开源资源库，旨在帮助用户挖掘和扩展 Claude AI 的潜力。它不仅仅是一份列表，更提供了实用的“技能（Skills）”模块，让 Claude 从单纯的文本生成助手，进化为能执行复杂工作流的智能代理。\n\n许多用户在使用 AI 时，常受限于其无法直接操作外部软件或处理特定格式文件的痛点。awesome-claude-skills 通过预设的工作流解决了这一问题：它不仅能教会 Claude 专业地处理 Word、PDF 等文档，进行代码开发与数据分析，还能借助 Composio 插件连接 Slack、邮箱及数百种常用应用，实现发送邮件、创建任务等自动化操作。这使得重复性任务变得标准化且可复用，极大提升了工作效率。\n\n无论是希望优化日常办公流程的普通用户、需要处理复杂文档的研究人员，还是寻求将 AI 深度集成到开发管线中的开发者，都能从中找到适合的解决方案。其独特的技术亮点在于“技能”的可定制性与强大的应用连接能力，让用户无需编写复杂代码，即可通过简单的配置让 Claude 具备跨平台执行真实任务的能力。如果你希望让 Claude",51312,"2026-04-05T19:04:23",[17,16],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":93,"forks":94,"last_commit_at":95,"license":96,"difficulty_score":10,"env_os":97,"env_gpu":98,"env_ram":99,"env_deps":100,"category_tags":107,"github_topics":108,"view_count":10,"oss_zip_url":81,"oss_zip_packed_at":81,"status":22,"created_at":112,"updated_at":113,"faqs":114,"releases":143},4491,"Nativu5\u002FGemini-FastAPI","Gemini-FastAPI","Web-based Gemini models wrapped into an OpenAI-compatible API.","Gemini-FastAPI 是一款将谷歌 Gemini 网页版模型封装为 OpenAI 兼容接口的开源工具。它巧妙利用网页 Cookie 进行身份验证，让用户无需申请官方 API Key 即可免费调用 Gemini 的强大能力，有效解决了个人开发者因缺乏付费密钥或区域限制而无法便捷使用大模型的痛点。\n\n该项目特别适合希望低成本集成 AI 功能的开发者、需要进行多轮对话实验的研究人员，以及想要搭建私有化 AI 服务的技术爱好者。其核心亮点在于完全兼容 OpenAI 的 API 标准，这意味着现有的基于 OpenAI 开发的应用只需修改接口地址，即可无缝切换至 Gemini 模型。此外，Gemini-FastAPI 原生支持多模态交互（文本、图片及文件上传）、实时联网搜索获取最新信息，并具备基于 LMDB 的对话持久化存储功能。对于高并发场景，它还提供了多账号负载均衡与代理配置支持，确保服务稳定运行。通过简单的 Docker 部署或 Python 环境配置，用户即可快速搭建属于自己的高性能 AI 网关。","# Gemini-FastAPI\n\n[![Python 3.13](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.13+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.115+-green.svg)](https:\u002F\u002Ffastapi.tiangolo.com\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n\n[ English | [中文](README.zh.md) ]\n\nWeb-based Gemini models wrapped into an OpenAI-compatible API. Powered by [HanaokaYuzu\u002FGemini-API](https:\u002F\u002Fgithub.com\u002FHanaokaYuzu\u002FGemini-API).\n\n**✅ Call Gemini's web-based models via API without an API Key, completely free!**\n\n## Features\n\n- **🔐 No Google API Key Required**: Use web cookies to freely access Gemini's models via API.\n- **🔍 Google Search Included**: Get up-to-date answers using web-based Gemini's search capabilities.\n- **💾 Conversation Persistence**: LMDB-based storage supporting multi-turn conversations.\n- **🖼️ Multi-modal Support**: Support for handling text, images, and file uploads.\n- **⚖️ Multi-account Load Balancing**: Distribute requests across multiple accounts with per-account proxy settings.\n\n## Quick Start\n\n**For Docker deployment, see the [Docker Deployment](#docker-deployment) section below.**\n\n### Prerequisites\n\n- Python 3.13\n- Google account with Gemini access on web\n- `secure_1psid` and `secure_1psidts` cookies from Gemini web interface\n\n### Installation\n\n#### Using uv (Recommended)\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI.git\ncd Gemini-FastAPI\nuv sync\n```\n\n#### Using pip\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI.git\ncd Gemini-FastAPI\npip install -e .\n```\n\n### Configuration\n\nEdit `config\u002Fconfig.yaml` and provide at least one credential pair:\n\n```yaml\ngemini:\n  clients:\n    - id: \"client-a\"\n      secure_1psid: \"YOUR_SECURE_1PSID_HERE\"\n      secure_1psidts: \"YOUR_SECURE_1PSIDTS_HERE\"\n      proxy: null # Optional proxy URL (null\u002Fempty keeps direct connection)\n```\n\n> [!NOTE]\n> For details, refer to the [Configuration](#configuration-1) section below.\n\n### Running the Server\n\n```bash\n# Using uv\nuv run python run.py\n\n# Using Python directly\npython run.py\n```\n\nThe server will start on `http:\u002F\u002Flocalhost:8000` by default.\n\n## API Endpoints\n\nThe server provides several endpoints, including OpenAI-compatible ones.\n\n### OpenAI-Compatible Endpoints\n\nThese endpoints are designed to be compatible with OpenAI's API structure, allowing you to use Gemini as a drop-in replacement.\n\n- **`GET \u002Fv1\u002Fmodels`**: Lists all supported Gemini models.\n- **`POST \u002Fv1\u002Fchat\u002Fcompletions`**: Unified chat interface.\n  - **Streaming**: Set `stream: true` to receive real-time delta chunks.\n  - **Multi-modal**: Supports text, images, and file uploads.\n  - **Tool Calling**: Supports function calling via the `tools` parameter.\n  - **Structured Output**: Supports `response_format` for JSON schema enforcement.\n\n### Advanced Endpoints\n\n- **`POST \u002Fv1\u002Fresponses`**: An alternative endpoint for complex interaction patterns, supporting rich output items including generated images and tool calls.\n\n### Utility Endpoints\n\n- **`GET \u002Fhealth`**: Health check endpoint. Returns the status of the server, configured Gemini clients, and conversation storage.\n- **`GET \u002Fimages\u002F{filename}`**: Internal endpoint to serve generated images. Requires a valid token (automatically included in image URLs returned by the API).\n\n## Docker Deployment\n\n### Run with Options\n\n```bash\ndocker run -p 8000:8000 \\\n  -v $(pwd)\u002Fdata:\u002Fapp\u002Fdata \\\n  -v $(pwd)\u002Fcache:\u002Fapp\u002Fcache \\\n  -e CONFIG_SERVER__API_KEY=\"your-api-key-here\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__ID=\"client-a\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=\"your-secure-1psid\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=\"your-secure-1psidts\" \\\n  -e GEMINI_COOKIE_PATH=\"\u002Fapp\u002Fcache\" \\\n  ghcr.io\u002Fnativu5\u002Fgemini-fastapi\n```\n\n> [!TIP]\n> Add `CONFIG_GEMINI__CLIENTS__N__PROXY` only if you need a proxy; omit the variable to keep direct connections.\n>\n> `GEMINI_COOKIE_PATH` points to the directory inside the container where refreshed cookies are stored. Bind-mounting it (e.g. `-v $(pwd)\u002Fcache:\u002Fapp\u002Fcache`) preserves those cookies across container rebuilds\u002Frecreations so you rarely need to re-authenticate.\n\n### Run with Docker Compose\n\nCreate a `docker-compose.yml` file:\n\n```yaml\nservices:\n  gemini-fastapi:\n    image: ghcr.io\u002Fnativu5\u002Fgemini-fastapi:latest\n    ports:\n      - \"8000:8000\"\n    volumes:\n      # - .\u002Fconfig:\u002Fapp\u002Fconfig      # Uncomment to use a custom config file\n      # - .\u002Fcerts:\u002Fapp\u002Fcerts        # Uncomment to enable HTTPS with your certs\n      - .\u002Fdata:\u002Fapp\u002Fdata\n      - .\u002Fcache:\u002Fapp\u002Fcache\n    environment:\n      - CONFIG_SERVER__HOST=0.0.0.0\n      - CONFIG_SERVER__PORT=8000\n      - CONFIG_SERVER__API_KEY=${API_KEY}\n      - CONFIG_GEMINI__CLIENTS__0__ID=client-a\n      - CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=${SECURE_1PSID}\n      - CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=${SECURE_1PSIDTS}\n      - GEMINI_COOKIE_PATH=\u002Fapp\u002Fcache # must match the cache volume mount above\n    restart: on-failure:3 # Avoid retrying too many times\n```\n\nThen run:\n\n```bash\ndocker compose up -d\n```\n\n> [!IMPORTANT]\n> Make sure to mount the `\u002Fapp\u002Fdata` volume to persist conversation data between container restarts.\n> Also mount `\u002Fapp\u002Fcache` so refreshed cookies (including rotated 1PSIDTS values) survive container rebuilds\u002Frecreates without re-auth.\n\n## Configuration\n\nThe server reads a YAML configuration file located at `config\u002Fconfig.yaml`.\n\nFor details on each configuration option, refer to the comments in the [`config\u002Fconfig.yaml`](https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI\u002Fblob\u002Fmain\u002Fconfig\u002Fconfig.yaml) file.\n\n### Environment Variable Overrides\n\n> [!TIP]\n> This feature is particularly useful for Docker deployments and production environments where you want to keep sensitive credentials separate from configuration files.\n\nYou can override any configuration option using environment variables with the `CONFIG_` prefix. Use double underscores (`__`) to represent nested keys, for example:\n\n```bash\n# Override server settings\nexport CONFIG_SERVER__API_KEY=\"your-secure-api-key\"\n\n# Override Gemini credentials for client 0\nexport CONFIG_GEMINI__CLIENTS__0__ID=\"client-a\"\nexport CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=\"your-secure-1psid\"\nexport CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=\"your-secure-1psidts\"\n\n# Override optional proxy settings for client 0\nexport CONFIG_GEMINI__CLIENTS__0__PROXY=\"socks5:\u002F\u002F127.0.0.1:1080\"\n\n# Override conversation storage size limit\nexport CONFIG_STORAGE__MAX_SIZE=268435456  # 256 MB\n```\n\n### Client IDs and Conversation Reuse\n\nConversations are stored with the ID of the client that generated them.\nKeep these identifiers stable in your configuration so that sessions remain valid\nwhen you update the cookie list.\n\n### Gemini Credentials\n\n> [!WARNING]\n> Keep these credentials secure and never commit them to version control. These cookies provide access to your Google account.\n\nTo use Gemini-FastAPI, you need to extract your Gemini session cookies:\n\n1. Open [Gemini](https:\u002F\u002Fgemini.google.com\u002F) in a private\u002Fincognito browser window and sign in\n2. Open Developer Tools (F12)\n3. Navigate to **Application** → **Storage** → **Cookies**\n4. Find and copy the values for:\n   - `__Secure-1PSID`\n   - `__Secure-1PSIDTS`\n\n> [!TIP]\n> For detailed instructions, refer to the [HanaokaYuzu\u002FGemini-API authentication guide](https:\u002F\u002Fgithub.com\u002FHanaokaYuzu\u002FGemini-API?tab=readme-ov-file#authentication).\n\n### Proxy Settings\n\nEach client entry can be configured with a different proxy to work around rate limits. Omit the `proxy` field or set it to `null` or an empty string to keep a direct connection.\n\n### Chat Session Mode\n\nYou can control whether requests use normal Google chats or Google's temporary chat mode:\n\n```yaml\ngemini:\n  chat_mode: \"normal\" # \"normal\" (reuse metadata) or \"temporary\" (Google temporary chat, not saved to account)\n  max_chars_per_request: 1000000\n  oversized_context_strategy: \"compaction\" # \"compaction\" or \"file\"\n```\n\nWhen `chat_mode` is set to `temporary`, the server applies an internal effective input limit of 90% of `max_chars_per_request`.\nWhen context exceeds the effective budget, handling is controlled by `oversized_context_strategy`:\n- `compaction`: summarize older turns and keep recent turns verbatim.\n- `file`: attach oversized context as `message.txt` and process it from file.\n\nEnvironment variable equivalents:\n\n```bash\nexport CONFIG_GEMINI__CHAT_MODE=\"temporary\"\nexport CONFIG_GEMINI__MAX_CHARS_PER_REQUEST=1000000\nexport CONFIG_GEMINI__OVERSIZED_CONTEXT_STRATEGY=\"compaction\"\n```\n\n### Custom Models\n\nYou can define custom models in `config\u002Fconfig.yaml` or via environment variables.\n\n#### YAML Configuration\n\n```yaml\ngemini:\n  model_strategy: \"append\" # \"append\" (default + custom) or \"overwrite\" (custom only)\n  models:\n    - model_name: \"gemini-3.0-pro\"\n      model_header:\n        x-goog-ext-525001261-jspb: '[1,null,null,null,\"9d8ca3786ebdfbea\",null,null,0,[4],null,null,1]'\n```\n\n#### Environment Variables\n\nYou can supply models as a JSON string or list structure via `CONFIG_GEMINI__MODELS`. This provides a flexible way to override settings via the shell or in automated environments (e.g. Docker) without modifying the configuration file.\n\n```bash\nexport CONFIG_GEMINI__MODEL_STRATEGY=\"overwrite\"\nexport CONFIG_GEMINI__MODELS='[{\"model_name\": \"gemini-3.0-pro\", \"model_header\": {\"x-goog-ext-525001261-jspb\": \"[1,null,null,null,\\\"9d8ca3786ebdfbea\\\",null,null,0,[4],null,null,1]\"}}]'\n```\n\n## Acknowledgments\n\n- [HanaokaYuzu\u002FGemini-API](https:\u002F\u002Fgithub.com\u002FHanaokaYuzu\u002FGemini-API) - The underlying Gemini web API client\n- [zhiyu1998\u002FGemi2Api-Server](https:\u002F\u002Fgithub.com\u002Fzhiyu1998\u002FGemi2Api-Server) - This project originated from this repository. After extensive refactoring and engineering improvements, it has evolved into an independent project, featuring multi-turn conversation reuse among other enhancements. Special thanks for the inspiration and foundational work provided.\n\n## Disclaimer\n\nThis project is not affiliated with Google or OpenAI and is intended solely for educational and research purposes. It uses reverse-engineered APIs and may not comply with Google's Terms of Service. Use at your own risk.\n","# Gemini-FastAPI\n\n[![Python 3.13](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.13+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.115+-green.svg)](https:\u002F\u002Ffastapi.tiangolo.com\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](LICENSE)\n\n[ English | [中文](README.zh.md) ]\n\n基于Web的Gemini模型，封装成与OpenAI兼容的API。由[HanaokaYuzu\u002FGemini-API](https:\u002F\u002Fgithub.com\u002FHanaokaYuzu\u002FGemini-API)提供支持。\n\n**✅ 无需API密钥即可通过API调用Gemini的Web模型，完全免费！**\n\n## 特性\n\n- **🔐 无需Google API密钥**：使用Web Cookie即可免费通过API访问Gemini模型。\n- **🔍 内置Google搜索**：利用Gemini的网络搜索能力获取最新答案。\n- **💾 对话持久化**：基于LMDB的存储，支持多轮对话。\n- **🖼️ 多模态支持**：支持文本、图片及文件上传。\n- **⚖️ 多账号负载均衡**：可通过每个账号的代理设置，将请求分发到多个账号。\n\n## 快速开始\n\n**关于Docker部署，请参阅下方的[Docker部署]部分。**\n\n### 前提条件\n\n- Python 3.13\n- 拥有Gemini网页版访问权限的Google账号\n- 来自Gemini网页界面的`secure_1psid`和`secure_1psidts` Cookie\n\n### 安装\n\n#### 使用uv（推荐）\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI.git\ncd Gemini-FastAPI\nuv sync\n```\n\n#### 使用pip\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI.git\ncd Gemini-FastAPI\npip install -e .\n```\n\n### 配置\n\n编辑`config\u002Fconfig.yaml`文件，并至少提供一组凭证：\n\n```yaml\ngemini:\n  clients:\n    - id: \"client-a\"\n      secure_1psid: \"YOUR_SECURE_1PSID_HERE\"\n      secure_1psidts: \"YOUR_SECURE_1PSIDTS_HERE\"\n      proxy: null # 可选代理URL（null\u002F空则保持直连）\n```\n\n> [!NOTE]\n> 更多详情请参阅下方的[配置]部分。\n\n### 启动服务器\n\n```bash\n# 使用uv\nuv run python run.py\n\n# 直接使用Python\npython run.py\n```\n\n服务器默认将在`http:\u002F\u002Flocalhost:8000`启动。\n\n## API端点\n\n服务器提供了多个端点，其中包括与OpenAI兼容的端点。\n\n### OpenAI兼容端点\n\n这些端点设计为与OpenAI的API结构兼容，允许您将Gemini作为直接替代品使用。\n\n- **`GET \u002Fv1\u002Fmodels`**：列出所有支持的Gemini模型。\n- **`POST \u002Fv1\u002Fchat\u002Fcompletions`**：统一的聊天接口。\n  - **流式传输**：设置`stream: true`以实时接收增量内容。\n  - **多模态**：支持文本、图片和文件上传。\n  - **工具调用**：通过`tools`参数支持函数调用。\n  - **结构化输出**：支持`response_format`以强制执行JSON模式。\n\n### 高级端点\n\n- **`POST \u002Fv1\u002Fresponses`**：用于复杂交互模式的替代端点，支持丰富的输出内容，包括生成的图片和工具调用。\n\n### 工具端点\n\n- **`GET \u002Fhealth`**：健康检查端点。返回服务器状态、已配置的Gemini客户端以及对话存储情况。\n- **`GET \u002Fimages\u002F{filename}`**：用于服务生成图片的内部端点。需要有效的令牌（自动包含在API返回的图片URL中）。\n\n## Docker部署\n\n### 带选项运行\n\n```bash\ndocker run -p 8000:8000 \\\n  -v $(pwd)\u002Fdata:\u002Fapp\u002Fdata \\\n  -v $(pwd)\u002Fcache:\u002Fapp\u002Fcache \\\n  -e CONFIG_SERVER__API_KEY=\"your-api-key-here\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__ID=\"client-a\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=\"your-secure-1psid\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=\"your-secure-1psidts\" \\\n  -e GEMINI_COOKIE_PATH=\"\u002Fapp\u002Fcache\" \\\n  ghcr.io\u002Fnativu5\u002Fgemini-fastapi\n```\n\n> [!TIP]\n> 仅当需要代理时才添加`CONFIG_GEMINI__CLIENTS__N__PROXY`；省略该变量则保持直连。\n>\n> `GEMINI_COOKIE_PATH`指向容器内存储刷新后Cookie的目录。将其绑定挂载（例如`-v $(pwd)\u002Fcache:\u002Fapp\u002Fcache`）可在容器重建或重新创建时保留这些Cookie，从而减少重新认证的需求。\n\n### 使用Docker Compose运行\n\n创建一个`docker-compose.yml`文件：\n\n```yaml\nservices:\n  gemini-fastapi:\n    image: ghcr.io\u002Fnativu5\u002Fgemini-fastapi:latest\n    ports:\n      - \"8000:8000\"\n    volumes:\n      # - .\u002Fconfig:\u002Fapp\u002Fconfig      # 如需使用自定义配置文件，请取消注释\n      # - .\u002Fcerts:\u002Fapp\u002Fcerts        # 如需启用HTTPS并使用您的证书，请取消注释\n      - .\u002Fdata:\u002Fapp\u002Fdata\n      - .\u002Fcache:\u002Fapp\u002Fcache\n    environment:\n      - CONFIG_SERVER__HOST=0.0.0.0\n      - CONFIG_SERVER__PORT=8000\n      - CONFIG_SERVER__API_KEY=${API_KEY}\n      - CONFIG_GEMINI__CLIENTS__0__ID=client-a\n      - CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=${SECURE_1PSID}\n      - CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=${SECURE_1PSIDTS}\n      - GEMINI_COOKIE_PATH=\u002Fapp\u002Fcache # 必须与上述缓存卷挂载一致\n    restart: on-failure:3 # 避免过多重试\n```\n\n然后运行：\n\n```bash\ndocker compose up -d\n```\n\n> [!IMPORTANT]\n> 务必挂载`\u002Fapp\u002Fdata`卷，以在容器重启时持久化对话数据。\n> 同时挂载`\u002Fapp\u002Fcache`，以便刷新后的Cookie（包括轮换的1PSIDTS值）能够在容器重建或重新创建时保留，而无需再次认证。\n\n## 配置\n\n服务器会读取位于`config\u002Fconfig.yaml`的YAML配置文件。\n\n有关每个配置选项的详细信息，请参阅[`config\u002Fconfig.yaml`](https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI\u002Fblob\u002Fmain\u002Fconfig\u002Fconfig.yaml)文件中的注释。\n\n### 环境变量覆盖\n\n> [!TIP]\n> 此功能对于Docker部署和生产环境特别有用，在这些环境中您希望将敏感凭据与配置文件分开存放。\n\n您可以使用带有`CONFIG_`前缀的环境变量来覆盖任何配置选项。使用双下划线(`__`)表示嵌套键，例如：\n\n```bash\n# 覆盖服务器设置\nexport CONFIG_SERVER__API_KEY=\"your-secure-api-key\"\n\n# 覆盖Gemini客户端0的凭据\nexport CONFIG_GEMINI__CLIENTS__0__ID=\"client-a\"\nexport CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=\"your-secure-1psid\"\nexport CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=\"your-secure-1psidts\"\n\n# 覆盖客户端0的可选代理设置\nexport CONFIG_GEMINI__CLIENTS__0__PROXY=\"socks5:\u002F\u002F127.0.0.1:1080\"\n\n# 覆盖对话存储大小限制\nexport CONFIG_STORAGE__MAX_SIZE=268435456  # 256 MB\n```\n\n### 客户端ID与对话复用\n\n对话会根据生成它们的客户端ID进行存储。\n请在配置中保持这些标识符稳定，以便在更新Cookie列表时会话仍能有效。\n\n### Gemini 凭证\n\n> [!WARNING]\n> 请妥善保管这些凭证，切勿将其提交到版本控制系统中。这些 Cookie 可用于访问您的 Google 帐户。\n\n要使用 Gemini-FastAPI，您需要提取 Gemini 会话的 Cookie：\n\n1. 在浏览器的隐私\u002F无痕窗口中打开 [Gemini](https:\u002F\u002Fgemini.google.com\u002F) 并登录。\n2. 打开开发者工具（F12）。\n3. 导航至 **Application** → **Storage** → **Cookies**。\n4. 找到并复制以下值：\n   - `__Secure-1PSID`\n   - `__Secure-1PSIDTS`\n\n> [!TIP]\n> 如需详细说明，请参阅 [HanaokaYuzu\u002FGemini-API 身份验证指南](https:\u002F\u002Fgithub.com\u002FHanaokaYuzu\u002FGemini-API?tab=readme-ov-file#authentication)。\n\n### 代理设置\n\n每个客户端条目都可以配置不同的代理，以绕过速率限制。如果省略 `proxy` 字段，或将该字段设置为 `null` 或空字符串，则保持直接连接。\n\n### 聊天会话模式\n\n您可以控制请求是使用常规 Google 聊天，还是使用 Google 的临时聊天模式：\n\n```yaml\ngemini:\n  chat_mode: \"normal\" # \"normal\"（复用元数据）或 \"temporary\"（Google 临时聊天，不会保存到帐户）\n  max_chars_per_request: 1000000\n  oversized_context_strategy: \"compaction\" # \"compaction\" 或 \"file\"\n```\n\n当 `chat_mode` 设置为 `temporary` 时，服务器会应用一个内部有效输入限制，即 `max_chars_per_request` 的 90%。当上下文超出有效预算时，处理方式由 `oversized_context_strategy` 控制：\n- `compaction`：总结较早的对话轮次，并原样保留最近的对话轮次。\n- `file`：将过大的上下文作为 `message.txt` 文件附加，并从文件中进行处理。\n\n环境变量等效项：\n\n```bash\nexport CONFIG_GEMINI__CHAT_MODE=\"temporary\"\nexport CONFIG_GEMINI__MAX_CHARS_PER_REQUEST=1000000\nexport CONFIG_GEMINI__OVERSIZED_CONTEXT_STRATEGY=\"compaction\"\n```\n\n### 自定义模型\n\n您可以在 `config\u002Fconfig.yaml` 中或通过环境变量定义自定义模型。\n\n#### YAML 配置\n\n```yaml\ngemini:\n  model_strategy: \"append\" # \"append\"（默认 + 自定义）或 \"overwrite\"（仅自定义）\n  models:\n    - model_name: \"gemini-3.0-pro\"\n      model_header:\n        x-goog-ext-525001261-jspb: '[1,null,null,null,\"9d8ca3786ebdfbea\",null,null,0,[4],null,null,1]'\n```\n\n#### 环境变量\n\n您可以通过 `CONFIG_GEMINI__MODELS` 以 JSON 字符串或列表结构提供模型。这种方式提供了灵活的方法，允许通过 Shell 或自动化环境（例如 Docker）覆盖设置，而无需修改配置文件。\n\n```bash\nexport CONFIG_GEMINI__MODEL_STRATEGY=\"overwrite\"\nexport CONFIG_GEMINI__MODELS='[{\"model_name\": \"gemini-3.0-pro\", \"model_header\": {\"x-goog-ext-525001261-jspb\": \"[1,null,null,null,\\\"9d8ca3786ebdfbea\\\",null,null,0,[4],null,null,1]\"}}]'\n```\n\n## 致谢\n\n- [HanaokaYuzu\u002FGemini-API](https:\u002F\u002Fgithub.com\u002FHanaokaYuzu\u002FGemini-API) - 底层的 Gemini Web API 客户端。\n- [zhiyu1998\u002FGemi2Api-Server](https:\u002F\u002Fgithub.com\u002Fzhiyu1998\u002FGemi2Api-Server) - 本项目最初源自该仓库。经过大量重构和工程改进后，它已发展成为一个独立项目，具备多轮对话复用等增强功能。特别感谢其提供的灵感和基础工作。\n\n## 免责声明\n\n本项目与 Google 或 OpenAI 无关，仅用于教育和研究目的。该项目使用逆向工程的 API，可能不符合 Google 的服务条款。请自行承担使用风险。","# Gemini-FastAPI 快速上手指南\n\nGemini-FastAPI 是一个将 Google Gemini 网页版模型封装为 OpenAI 兼容 API 的工具。**无需 Google API Key**，通过提取浏览器 Cookie 即可免费调用 Gemini 模型，支持多模态、联网搜索及多轮对话持久化。\n\n## 环境准备\n\n在开始之前，请确保满足以下条件：\n\n*   **操作系统**：Linux, macOS 或 Windows\n*   **Python 版本**：Python 3.13 或更高版本\n*   **Google 账号**：拥有访问 [gemini.google.com](https:\u002F\u002Fgemini.google.com\u002F) 权限的账号\n*   **关键凭证**：需要从浏览器获取以下两个 Cookie 值：\n    *   `__Secure-1PSID`\n    *   `__Secure-1PSIDTS`\n\n> **如何获取 Cookie：**\n> 1. 使用浏览器的无痕\u002F隐私模式登录 [Gemini](https:\u002F\u002Fgemini.google.com\u002F)。\n> 2. 按 `F12` 打开开发者工具，进入 **Application (应用)** > **Storage (存储)** > **Cookies**。\n> 3. 找到并复制上述两个字段的值。\n\n## 安装步骤\n\n推荐使用 `uv` 进行安装（速度更快），也可以使用 `pip`。\n\n### 方式一：使用 uv（推荐）\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI.git\ncd Gemini-FastAPI\nuv sync\n```\n\n### 方式二：使用 pip\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI.git\ncd Gemini-FastAPI\npip install -e .\n```\n\n## 基本使用\n\n### 1. 配置凭证\n\n编辑项目根目录下的 `config\u002Fconfig.yaml` 文件，填入你获取到的 Cookie 信息：\n\n```yaml\ngemini:\n  clients:\n    - id: \"client-a\"\n      secure_1psid: \"YOUR_SECURE_1PSID_HERE\"\n      secure_1psidts: \"YOUR_SECURE_1PSIDTS_HERE\"\n      proxy: null # 如需代理可填写，否则保持 null\n```\n\n### 2. 启动服务\n\n在项目目录下运行以下命令启动服务器：\n\n```bash\n# 如果使用 uv 安装\nuv run python run.py\n\n# 如果使用 pip 安装\npython run.py\n```\n\n默认情况下，服务将在 `http:\u002F\u002Flocalhost:8000` 启动。\n\n### 3. 调用示例\n\n该服务完全兼容 OpenAI API 格式。你可以使用任何支持 OpenAI 协议的客户端（如 `openai` Python 库、NextChat、LobeChat 等）进行连接。\n\n**Python 调用示例：**\n\n```python\nfrom openai import OpenAI\n\n# 初始化客户端，base_url 指向本地服务，api_key 可随意填写（除非在配置中设置了特定 key）\nclient = OpenAI(\n    base_url=\"http:\u002F\u002Flocalhost:8000\u002Fv1\",\n    api_key=\"not-needed\" \n)\n\nresponse = client.chat.completions.create(\n    model=\"gemini-2.0-flash-exp\", # 或其他支持的模型名称\n    messages=[\n        {\"role\": \"system\", \"content\": \"你是一个有用的助手。\"},\n        {\"role\": \"user\", \"content\": \"你好，请介绍一下你自己。\"}\n    ],\n    stream=True # 支持流式输出\n)\n\nfor chunk in response:\n    if chunk.choices[0].delta.content is not None:\n        print(chunk.choices[0].delta.content, end=\"\", flush=True)\n```\n\n**Docker 快速部署（可选）：**\n\n如果你更倾向于使用 Docker，可以直接运行：\n\n```bash\ndocker run -p 8000:8000 \\\n  -v $(pwd)\u002Fdata:\u002Fapp\u002Fdata \\\n  -v $(pwd)\u002Fcache:\u002Fapp\u002Fcache \\\n  -e CONFIG_GEMINI__CLIENTS__0__ID=\"client-a\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__SECURE_1PSID=\"YOUR_SECURE_1PSID\" \\\n  -e CONFIG_GEMINI__CLIENTS__0__SECURE_1PSIDTS=\"YOUR_SECURE_1PSIDTS\" \\\n  ghcr.io\u002Fnativu5\u002Fgemini-fastapi\n```\n\n> **注意**：请确保挂载 `.\u002Fcache` 目录以持久化 Cookie，避免容器重启后需要重新认证。","某初创团队正在开发一款集成实时新闻搜索与多模态分析的智能客服机器人，急需低成本接入具备联网能力的大模型。\n\n### 没有 Gemini-FastAPI 时\n- **资金压力巨大**：团队必须申请并绑定信用卡获取 Google API Key，按 Token 付费的模式让高频调用的测试阶段成本失控。\n- **架构改造繁琐**：现有代码库基于 OpenAI 标准接口构建，若要切换至原生 Gemini SDK，需重构大量请求逻辑和参数处理代码。\n- **功能实现受限**：原生接口配置复杂，难以快速启用谷歌搜索获取最新资讯，且多轮对话的状态持久化需要自行搭建数据库中间件。\n- **并发瓶颈明显**：单账号调用频率受限，缺乏内置的负载均衡机制，一旦流量激增容易导致服务中断或触发风控。\n\n### 使用 Gemini-FastAPI 后\n- **零成本自由调用**：仅需提取网页 Cookie 即可完全免费调用 Gemini 模型，无需 API Key，彻底消除了测试期的资金门槛。\n- **无缝平滑迁移**：利用其兼容 OpenAI 的 API 特性，团队无需修改任何业务代码，直接将基址指向本地服务即可复用原有架构。\n- **开箱即用的高级特性**：直接通过标准参数开启联网搜索获取实时答案，并自动利用内置 LMDB 存储实现多轮对话记忆，大幅简化开发流程。\n- **弹性负载支撑**：通过配置多个 Google 账号凭证及代理设置，轻松实现请求的分发与负载均衡，稳定支撑高并发场景。\n\nGemini-FastAPI 通过“免密钥 + 协议兼容”的创新模式，让开发者能以零成本、低门槛将 Gemini 强大的联网与多模态能力瞬间融入现有系统。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FNativu5_Gemini-FastAPI_c033567d.png","Nativu5","Yongkun Li","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FNativu5_9af701a3.png","Kinda feeling being chased to run🏃.","Peking University","Beijing, China",null,"https:\u002F\u002Fnaiv.fun","https:\u002F\u002Fgithub.com\u002FNativu5",[85,89],{"name":86,"color":87,"percentage":88},"Python","#3572A5",99.6,{"name":90,"color":91,"percentage":92},"Dockerfile","#384d54",0.4,583,97,"2026-04-06T09:51:12","MIT","Linux, macOS, Windows","不需要 GPU","未说明",{"notes":101,"python":102,"dependencies":103},"该工具无需 API Key，但需要用户提供 Google 账号的 Web Cookie（__Secure-1PSID 和 __Secure-1PSIDTS）进行身份验证。支持 Docker 部署，建议挂载数据卷以持久化对话记录和 Cookie。可通过环境变量覆盖配置文件中的敏感信息。","3.13+",[104,105,106],"FastAPI>=0.115","uv","LMDB",[16],[109,110,111],"fastapi","gemini","openai-api","2026-03-27T02:49:30.150509","2026-04-06T23:56:14.852687",[115,120,125,130,135,139],{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},20441,"日志提示 'Rotation response did not contain a new __Secure-1PSIDTS' 导致会话过期如何处理？","这通常是因为 Google 系统检测到异常行为并使 Cookie 失效，导致无法自动轮换生成新的 __Secure-1PSIDTS。解决方案包括：手动获取新鲜的 Cookies 并更新配置、减少同一组 Cookies 的重用频率，或者在多个账号之间分散请求以降低被封锁的风险。","https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI\u002Fissues\u002F114",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},20438,"生图成功但 API 不返回图片，客户端接收结果为空怎么办？","这通常是因为客户端配置不当。请确保在添加 Gemini-FastAPI 为新模型提供商时，将提供商类型（Provider Type）选择为 'OpenAI-Response'。此外，必须在助手设置中禁用流式输出（Stream output）。部分客户端（如 Cherry Studio）的 API 处理可能不完全符合 OpenAI 标准，可能需要修改客户端源码或等待相关 PR 合并。","https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI\u002Fissues\u002F70",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},20439,"使用 Docker Compose 部署时启动失败，报错 'Field required' 或配置验证错误如何解决？","该错误通常表示配置文件中的 'gemini' 字段缺失或环境变量配置冲突。如果在 docker-compose 文件中删除了配置相关的环境变量仅使用配置文件，请确保挂载的配置文件格式正确且包含所有必填项。另外，检查 Docker 容器挂载的缓存目录是否干扰了 Cookies 配置，尝试清理缓存或检查网络代理设置。","https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI\u002Fissues\u002F13",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},20440,"调用 API 生成图片时出现 '400 Bad Request' 下载错误怎么办？","如果未指定 'tools' 和 'tool_choice' 参数，模型可能不会生成图片从而导致下载链接失效。请在请求体中显式添加图像生成工具配置。示例代码如下：\n{\n  \"model\": \"gemini-3.0-pro\",\n  \"input\": [{\"type\": \"message\", \"role\": \"user\", \"content\": [{\"type\": \"input_text\", \"text\": \"Generate an image...\"}]}],\n  \"stream\": false,\n  \"tool_choice\": {\"type\": \"image_generation\"},\n  \"tools\": [{\"type\": \"image_generation\", \"model\": \"gemini-3.0-pro\", \"output_format\": \"png\"}]\n}","https:\u002F\u002Fgithub.com\u002FNativu5\u002FGemini-FastAPI\u002Fissues\u002F79",{"id":136,"question_zh":137,"answer_zh":138,"source_url":134},20442,"如何构造正确的 curl 命令来测试图像生成功能？","可以使用以下 curl 命令测试图像生成，务必包含 tool_choice 和 tools 参数：\ncurl --location 'http:\u002F\u002Flocalhost:8000\u002Fv1\u002Fresponses' \\\n--header 'Authorization: Bearer xxxxxx' \\\n--header 'Content-Type: application\u002Fjson' \\\n--data '{\n    \"model\": \"gemini-3.0-pro\",\n    \"input\": [{\"type\": \"message\", \"role\": \"user\", \"content\": [{\"type\": \"input_text\", \"text\": \"Generate an image of a dog playing with a ball on the beach.\"}]}],\n    \"stream\": false,\n    \"tool_choice\": {\"type\": \"image_generation\"},\n    \"tools\": [{\"type\": \"image_generation\", \"model\": \"gemini-3.0-pro\", \"output_format\": \"png\"}]\n}'",{"id":140,"question_zh":141,"answer_zh":142,"source_url":129},20443,"Docker 部署正常但本地 uv 启动也正常，为何 Docker 内会报配置错误？","这可能是由于 Docker 容器内的环境变量优先级高于配置文件，或者容器挂载的缓存目录中残留了旧的配置\u002FCookies 导致冲突。建议检查 docker-compose.yml 中是否定义了与配置文件冲突的环境变量，并尝试移除多余的环境变量配置，仅依赖配置文件启动。同时清理容器内的缓存目录。",[]]