OpenAI-compatible API 网关实践:Claude API、GPT、Gemini 重试与备用模型切换
# OpenAI-compatible API 网关实践Claude/GPT/Gemini 的重试和备用模型切换 在真实业务里接入 Claude API、GPT 或 Gemini最容易低估的不是单次请求怎么写而是失败时系统会不会稳住。小团队如果只有一个模型、一个 key、一个固定 endpoint遇到超时、限流、模型维护或额度波动时用户侧看到的就是整条链路不可用。 ViralAPI 的定位是把 Claude、GPT、Gemini 等模型统一到 OpenAI-compatible API 调用方式里让业务代码可以先按标准 Chat Completions 接入再在网关层处理分组、备用模型和预算。官网https://viralapi.ai ## 1. 统一 OpenAI-compatible API 调用 多数业务可以先把调用封装成一个很薄的 client不要把模型、供应商和重试逻辑散落在业务代码里。 bash curl https://api.viralapi.ai/v1/chat/completions \ -H Authorization: Bearer $VIRALAPI_KEY \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet, messages: [ {role: system, content: You are a concise assistant.}, {role: user, content: Summarize this support ticket.} ], temperature: 0.2 } 这样做的好处是应用层只认一个 OpenAI-compatible API后续从 Claude 切到 GPT 或 Gemini不需要大面积改业务代码。 ## 2. Python区分可重试和不可重试错误 不要对所有错误无脑重试。401/403 通常是鉴权或权限问题重试只会浪费429、502、503、504 才更适合进入退避和备用模型流程。 python from openai import OpenAI import time client OpenAI( api_keyYOUR_VIRALAPI_KEY, base_urlhttps://api.viralapi.ai/v1, ) RETRYABLE_STATUS {429, 500, 502, 503, 504} MODELS [claude-3-5-sonnet, gpt-4o-mini, gemini-1.5-pro] def chat_with_fallback(messages): last_error None for model in MODELS: for attempt in range(3): try: return client.chat.completions.create( modelmodel, messagesmessages, temperature0.2, timeout30, ) except Exception as exc: status getattr(exc, status_code, None) last_error exc if status not in RETRYABLE_STATUS: raise time.sleep(2 ** attempt) raise last_error 这里的重点不是把所有请求都切到最贵模型而是先定义优先级核心链路用稳定官方分组低风险批处理可以用更注重预算的分组。 ## 3. Node.js业务侧保留最小路由信息 javascript import OpenAI from openai; const client new OpenAI({ apiKey: process.env.VIRALAPI_KEY, baseURL: https://api.viralapi.ai/v1, }); const modelGroups { support: [claude-3-5-sonnet, gpt-4o-mini], batch: [gemini-1.5-flash, gpt-4o-mini], }; export async function runChat(scene, messages) { let lastError; for (const model of modelGroups[scene] ?? modelGroups.support) { try { return await client.chat.completions.create({ model, messages, temperature: 0.2, }); } catch (err) { lastError err; if (![429, 500, 502, 503, 504].includes(err.status)) throw err; } } throw lastError; } ## 4. 分组选择建议 如果团队已经有真实 API 调用量建议按调用场景拆分而不是只问单价 - 福利分组官方 1.5 折适合预算敏感、可接受波动的非核心任务。 - 官转分组官方 6 折适合日常业务调用兼顾成本和可用性。 - 稳定官方分组官方 8 折适合核心链路、客户可见功能和高稳定性需求。 ## 5. 上线前检查清单 1. 所有 API 调用都设置 timeout。 2. 只对 429、5xx、网关超时做退避重试。 3. 至少准备一个备用模型例如 Claude 主用、GPT 或 Gemini 备用。 4. 记录模型、状态码、耗时、token 用量和最终是否 fallback。 5. 把高价值链路和低价值批处理拆到不同分组避免互相影响预算。 ViralAPI 更适合有真实调用需求、能自助接入、关心稳定性和预算平衡的小团队或批量采购客户。商务咨询和合作入口miutayounggmail.comTelegram / WeChatviral_8866。#Claude API#GPT#Gemini#OpenAI-compatible API#API网关