No segundo semestre do ano passado, atuamos como consultores técnicos para uma equipe que faz SaaS de logística transfronteiriça. No início, a funcionalidade de IA deles chamava apenas o GPT-4o e rodava de forma bastante estável. Depois, a área de negócios pediu para adicionar modelos nacionais: revisão de contratos com DeepSeek, scripts de atendimento com Qwen, textos de marketing com ERNIE. Três semanas depois, o código de backend deles tinha 4 conjuntos de SDK enfiados, a lógica de autenticação espalhada por 7 arquivos, as faturas não batiam e a saída em streaming ora funcionava, ora exibia caracteres corrompidos no frontend. O problema não estava nos modelos em si, mas na falta de uma camada de gateway de modelos.
As armadilhas da integração multimodelo praticamente se repetem no mesmo lugar
Primeiro, o conflito de SDKs. O SDK Python da OpenAI e os SDKs de várias empresas nacionais são todos chamados de client, as versões de dependências entram em conflito entre si, e os clientes HTTP do Qwen e do ERNIE ainda tratam parâmetros de timeout com lógicas diferentes. A solução final dos engenheiros deles foi criar um ambiente virtual independente para cada modelo e isolar as chamadas com subprocess. Funciona, mas o custo operacional é absurdamente alto.
Agora, o gerenciamento de Keys. Os consoles dos quatro fornecedores têm cada um seu próprio sistema de Keys, alguns por projeto, outros por aplicação, e outros ainda com subcontas. As Keys de teste e de produção ficaram misturadas; certa vez, um estagiário commitou uma Key de produção em um repositório público do GitHub. Embora tenha sido revogada em dez minutos, naquela tarde toda a equipe ficou verificando logs de chamadas.
O critério de cobrança é ainda mais doloroso. O DeepSeek cobra por token, alguns modelos do Qwen cobram entrada e saída separadamente, e certas versões do ERNIE ainda têm lógica legada de cobrança por número de caracteres. No fim do mês, o financeiro queria uma fatura consolidada, e os engenheiros só conseguiam exportar manualmente quatro CSVs e depois fazer o mapeamento. O formato de saída em streaming também não é unificado: alguns retornam o campo data do SSE, outros embrulham em uma camada de JSON, e o código de parsing do frontend fica cheio de if else.
O que exatamente o gateway de modelos faz no meio
A essência do gateway de modelos é uma camada de proxy reverso mais adaptação de protocolo, expondo externamente uma interface unificada compatível com OpenAI e, internamente, traduzindo as requisições para o formato que cada fornecedor entende. Depois, em outro projeto, refatoramos essa cadeia usando a capacidade de agregação de API de IA da SiCore TokenWorks, e a percepção foi bem direta.
A autenticação unificada é o primeiro passo. O lado de negócios usa apenas uma Key, e o gateway mantém internamente o mapeamento de credenciais para cada fornecedor; rotação de Keys, limites de cota e whitelist de IP são todos feitos na camada do gateway. A tradução de protocolo é o segundo passo: converter o array messages no formato OpenAI para o input do Qwen e o prompt do ERNIE, e depois converter a resposta de volta para a estrutura choices de forma unificada. O formato dos chunks de saída em streaming também é nivelado nessa camada, e o frontend escreve apenas uma lógica de parsing.
O roteamento de distribuição determina para qual modelo a requisição vai. Pode ser roteamento estático por tipo de tarefa ou seleção dinâmica por custo. Quando testamos o roteamento multimodelo do token8341, fixamos requisições de revisão de contratos para o DeepSeek-V3 e roteamos requisições curtas de atendimento para a versão leve do Qwen. O custo total de chamadas caiu cerca de sessenta por cento em comparação com mandar tudo para o GPT-4o. A alocação de custos é o último passo: o gateway marca os pontos por tag de negócio e, no fim do mês, gera diretamente a fatura dividida, sem o financeiro precisar montar tabelas manualmente.
Algumas sugestões práticas para a implementação
Primeiro, não chame o SDK do fornecedor diretamente no código de negócio, mesmo que você integre apenas um modelo. Mantenha uma camada fina de encapsulamento; quando adicionar modelos depois, a diferença no volume de alterações será de uma ordem de magnitude. Segundo, as Keys precisam passar pelo gateway ou por um serviço de gerenciamento de segredos; a prática de codificá-las diretamente em arquivos de configuração vai dar problema mais cedo ou mais tarde. Terceiro, faça primeiro a estratégia de roteamento estática; depois de duas semanas com dados reais de chamadas, considere roteamento dinâmico por custo. Caso contrário, é fácil economizar alguns centavos roteando requisições críticas para um modelo inadequado.
Na escolha, observe dois pontos: se é compatível com o SDK da OpenAI, pois compatibilidade significa custo de migração praticamente zero, bastando mudar uma linha de base_url para trocar; e se suporta cobrança por uso e alocação de custos, o que é necessidade absoluta para empresas que compartilham um único conjunto de capacidades de IA entre várias linhas de negócio. A abordagem da SiCore TokenWorks nesse ponto é cobertura completa de APIs de grandes modelos nacionais, cobrança por uso, e no nosso projeto a comparação mostrou um critério de faturamento bastante claro.
Resumindo em uma frase: o gateway de modelos não é obrigatório, mas quando você precisa integrar o terceiro modelo, ele deixa de ser opcional e passa a ser necessário. Como leitura complementar, vale conferir a documentação de especificação da interface compatível com OpenAI para entender como a camada de protocolo foi projetada e evitar desvios ao escrever seu próprio encapsulamento.