Hotdry.
ai-systems

构建动态API路由器:实时比较OpenAI/Anthropic/Gemini token价格与延迟

自建动态路由器实现LLM调用最低成本优化,覆盖OpenAI/Anthropic/Gemini价格监控、延迟阈值与回退策略,提供完整工程参数与落地清单。

在 LLM 推理成本持续下降的当下,单一提供商 API 调用易导致高支出与服务中断风险。自建动态 API 路由器,通过实时比较 OpenAI、Anthropic 和 Google Gemini 的 token 价格与延迟,选择最低成本提供商,可实现 90% 以上的费用节省,同时提升可用性。这种路由器本质上是代理层,监控多提供商定价 API,结合延迟测试与质量评估动态分发请求,避免厂商锁入。

TokenSaver 服务验证了这一模式的有效性:它聚合 OpenAI 的 GPT-4o/GPT-4o-mini、Anthropic 的 Claude 3.5 Sonnet/Haiku 及 Gemini 2.0/1.5,提供统一 API,输入 token 仅 $0.50 / 千 tokens,输出 $1.50 / 千 tokens,比直接调用高端模型节省 90-99%。Hacker News 近期热议其 Show HN 帖子,强调零配置、实时路由与透明计费。类似机制可自建,避免第三方依赖。

构建路由器的核心是价格与延迟双维度决策。价格监控依赖各厂商公开 API:OpenAI pricing endpoint、Anthropic Messages API 元数据、Gemini Vertex AI 定价页。轮询间隔设为 5 分钟,缓存最近价格矩阵(input/output per 1M tokens)。当前典型价格:OpenAI GPT-4o-mini 输入 $0.15 / 百万 tokens、输出 $0.60;Claude 3.5 Haiku 输入 $0.25、输出 $1.25;Gemini 1.5 Flash 输入 $0.075、输出 $0.30(<128K 上下文)。路由优先最低总成本(inputratio + outputest),ratio 默认 1:3 模拟实际比例。

延迟阈值至关重要,避免低价高延时场景。每 5 分钟对各模型执行基准 prompt(1000 tokens 输入),测量首 token 时间(TTFT)与总时长。阈值:TTFT<500ms 优先,总延迟 < 2s;超时 5s 视为不可用。结合历史 P95 延迟计算分数:score = (1/price_norm) * (1/delay_norm),price_norm 为相对最低价归一,delay_norm 类似。质量评估可选集成 LMSYS Arena 分数或自测准确率阈值 > 85%。

回退策略确保高可用:主选最低成本,若失败(429 限流、超时、质量低)立即切换次优(延迟排序)。支持地理路由:US-East 优先 OpenAI,Asia 选 Gemini。负载均衡:单提供商限流阈值设为 80% RPS(requests per second,根据订阅调整)。

落地实现用 Node.js 或 Python,框架如下:

  1. 依赖安装

    • Node: npm i openai @anthropic-ai/sdk google-generativeai axios node-cache
    • Python: pip install openai anthropic google-generativeai cachetools
  2. 价格监控模块

    const cache = new NodeCache({ stdTTL: 300 }); // 5min
    async function fetchPrices() {
      const openai = await fetch('https://api.openai.com/v1/models').then(r => r.json());
      // 解析GPT-4o-mini等价格,类似anthropic/gemini
      cache.set('prices', pricesMatrix);
    }
    setInterval(fetchPrices, 300000);
    
  3. 延迟测试

    async function benchmarkLatency(provider, model) {
      const start = Date.now();
      const response = await client.chat.completions.create({model, messages: [{role:'user', content:'test'}]});
      return Date.now() - start < 2000 ? latency : Infinity;
    }
    
  4. 路由决策

    function selectProvider(requestTokens, estOutputTokens) {
      const prices = cache.get('prices');
      const latencies = cache.get('latencies');
      return providers.map(p => ({
        provider: p,
        cost: prices[p].input * requestTokens / 1e6 + prices[p].output * estOutputTokens / 1e6,
        latency: latencies[p],
        score: 1/cost * (3000/latency) // 调参
      })).sort((a,b) => a.score - b.score)[0];
    }
    
  5. 代理端点

    app.post('/chat', async (req, res) => {
      const best = selectProvider(req.body.messages.length * 500, 1000);
      try {
        const resp = await best.client.chat(req.body);
        res.json({data: resp, billing: {provider: best.provider, cost: calcCost(resp)}});
      } catch(e) {
        // 回退次优
      }
    });
    

部署上 Kubernetes,水平扩展 3 pod。监控用 Prometheus+Grafana:暴露/metrics端点,指标包括 rps/cost_per_req/p99_latency/provider_usage_rate。警报:日成本 > 预算 80%、单提供商使用 > 70%、P95 延迟 > 3s。

参数调优清单:

  • 成本阈值:总成本 > 0.1$/req 切换。
  • 延迟权重:实时场景 0.7,非实时 0.3。
  • 质量阈值:集成自定义 eval,<90% 分拒绝。
  • 缓存:Redis 存历史 latency/prices,TTL 1h。
  • 限流:LeakyBucket per provider,峰值 RPS 100。
  • 回滚:3 次失败后降级 mini 模型。

风险控制:API 密钥轮换、预算硬限(OpenAI hard-limit $1000/month)。测试覆盖:mock 价格波动、模拟中断。

自建路由器月省数千美元,适用于高吞吐 SaaS。起步 fork TokenSaver 开源灵感,迭代自定义。

资料来源:TokenSaver 官网(https://tokensaver.org,提供统一 API 示例);Hacker News 帖子(API that auto-routes to the cheapest AI provider,4 points 讨论实时路由)。

查看归档