V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
yuikji
V2EX  ›  程序员

分享一个免费的 gemini key 池代理的方案

  •  
  •   yuikji · 37 天前 · 1473 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

    初衷

    虽然谷歌大善人提供了免费的 Gemini APi ,但是有很大的速率限制,甚至在我日常开发中都遇到过很多次超过速率限制的报错。阅读文档之后,发现速率的限制只针对 project , 于是打算做一个 Gemini APi 的代理,去更好的管理和使用 key 。

    pic

    方案

    因为想要零成本代理,所以想到了另一个大善人 cloudflare ,可以利用他提供的 Workers 服务做一个简单的代理和转发,下面是我实践的大概思路

    key 的获取

    因为 key 的使用限制,所以需要创建多个 project ,得到一个 key 池,当然你有其他渠道啥也可以

    创建 D1 数据库

    根据文档去官网的仪表盘或者用命令行创建 D1 数据库,这个主要是持久化记录 key 的一些状态,免费的额度感觉够用。 我的数据库的结构是这样

    -- API Key 管理表
    CREATE TABLE IF NOT EXISTS api_keys (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        api_key TEXT UNIQUE NOT NULL,           -- API 密钥
        name TEXT,                              -- 密钥名称/备注
        priority INTEGER DEFAULT 100,           -- 优先级权重 (数值越高优先级越高)
        status INTEGER DEFAULT 1,              -- 状态: 1=有效, 2=暂时失效, 0=完全失效
        consecutive_failures INTEGER DEFAULT 0, -- 连续失败次数
        total_calls INTEGER DEFAULT 0,         -- 总调用次数
        success_calls INTEGER DEFAULT 0,       -- 成功调用次数
        last_used_at DATETIME,                 -- 最后使用时间
        last_success_at DATETIME,              -- 最后成功时间
        last_failure_at DATETIME,              -- 最后失败时间
        disabled_until DATETIME,               -- 禁用截止时间
        created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
        updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
    );
    

    创建 worker

    1. 绑定之前创建好的 D1 数据库

    2. 初始化数据库

    3. 写主程序

    我主要是让 AI 写的负载均衡的逻辑,这块代码我自己也没怎么看过,就不贴了,然后用 openai 的范式接收请求

    //目录结构
    
    └─src
        index.js
        keyManager.js
    

    如何使用 worker

    配置环境变量

    在主程序中会用的主要是我们收集的 key 池,还有一个代理之后我们自己的 key ,配置在环境变量

    // 我们收集的 key ,需要是不同项目
    GEMINI_API_KEY=k1,k2,k3
    // 我们自定义的 KEY,放在 header 里面,openai 的规则
    MY_API_KEY=
    

    1. 内部使用

    page 或者 worker 内部调用,需要绑定然后用环境变量请求,没试过

    2. 外部接口调用

    直接用绑定的域名访问即可,和调用其他 openai 类的 api 一样,前端直接调用的话注意 MY_API_TOKEN 不要泄露

    需要注意的事情

    1. cloudflare 的 workers 我没查过,是不是允许这么用
    2. 谷歌的 project 创建多个,可能有被风控的风险

    这个目前就是我自己当玩具用,没有经过啥实践的验证,大佬们觉得这个有可行性吗

    4 条回复    2025-07-30 16:22:48 +08:00
    peerless
        1
    peerless  
       37 天前
    确实是一个很好的想法
    speedmancs
        2
    speedmancs  
       37 天前
    multiple project rotation 确实可以获得更多的免费额度,但你要注意
    1. 每个 project 是否需要绑定一个新的 billing account
    2. 如果滥用,Google 仍然会封帐号
    Tose
        3
    Tose  
       35 天前 via Android
    不错,另外有个开源项目 https://github.com/snailyp/gemini-balance ,一直在用
    zhangyuliang
        4
    zhangyuliang  
       35 天前
    不错,解决了 gemini 使用限制的问题
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5894 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.