0

Pitch: APIGOTO — uma chave de API compatível com OpenAI para Claude, GPT e Gemini, e como decidimos o failover

Transparência primeiro: eu trabalho no APIGOTO, então este é um Pitch de um projeto meu. O APIGOTO é um serviço independente, sem vínculo com OpenAI, Anthropic ou Google.

O problema

Quem integra vários modelos acaba com um .env cheio de chaves (OpenAI, Anthropic, Gemini, DeepSeek...), SDKs diferentes e várias faturas. Para comparar dois modelos com o mesmo prompt, primeiro é preciso escrever uma camada de adaptação.

O que fizemos

Um gateway com uma única chave e uma base_url compatível com OpenAI: https://api.apigoto.com/v1. Você continua usando o SDK oficial da OpenAI e troca só o nome do modelo:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.apigoto.com/v1",
    api_key=os.environ["APIGOTO_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",  # confira os IDs exatos na página de preços
    messages=[{"role": "user", "content": "Explique chave de idempotência em duas frases."}],
)
print(resp.choices[0].message.content)
print(resp.usage)

O gateway também aceita os formatos Anthropic Messages e OpenAI Responses, para ferramentas que usam esses protocolos.

Decisões técnicas (a parte que interessa)

1. Ordem de roteamento. Para cada requisição, os upstreams candidatos são ordenados assim: modelo exato → protocolo exato → prioridade vinculada → prioridade do provedor → health score.

2. Failover com teto de 3 tentativas. Se um upstream falha, tentamos outra credencial, no máximo 3 vezes por requisição. Discutimos deixar ilimitado, mas cada tentativa soma latência. Depois da terceira, quase sempre é melhor falhar rápido e deixar o cliente decidir. Se todos os upstreams de um modelo estiverem fora, você recebe o erro, então mantenha timeout e retry do seu lado.

3. Página de status pública. Health score por upstream, de hora em hora, nas últimas 24h. Os erros 502, 403 e 429 são contados separadamente e com pesos diferentes (502 = 1,0; 403 = 0,8; outros = 0,6; 429 = 0,5), e a fórmula está publicada. Tem também uma coluna de consistência de modelo: compara o nome do modelo que o upstream devolve com o que foi pedido. Sei que é uma evidência fraca, porque o upstream pode mentir nesse campo. Ideias de fingerprinting mais forte são bem-vindas.

4. BYOK. Se você já tem chave própria de um provedor, pode cadastrá-la. Essas chamadas não pagam taxa de plataforma.

5. Logs por requisição. Modelo, tokens de entrada/saída, cache hit, latência e detalhe do erro, para descobrir por que a conta subiu na terça.

Dificuldades e trade-offs

  • É um salto de rede a mais. Para chat e agentes ele é pequeno perto da latência do modelo, mas meça no seu caso.
  • Recursos específicos de cada provedor (alguns detalhes de tool calling e multimodal) nem sempre mapeiam 1:1 para o formato OpenAI.
  • Você confia prompts a uma camada intermediária. Leia os termos e a política de privacidade antes de mandar dados sensíveis.

Quer testar?

Contas novas recebem créditos gratuitos (limites e condições no site): www.china-aiapi.com

Pergunta para a comunidade: vocês preferem um teto fixo de retries ou configurável por chave?

Carregando publicação patrocinada...