Roteie chamadas de modelo por uma function de gateway
Coloque uma function na frente do AI Inference e de um provedor de terceiros que autentica equipes, roteia por alias, faz fallback, usa cache e registra.
Você roteia as chamadas de modelo de várias equipes por uma function: ela lê o registro de cada equipe no KV Store, chama as rotas de um alias de modelo em ordem, primeiro um modelo no AI Inference e um provedor de terceiros quando ele falha, armazena em cache as respostas que quem chama permite e grava uma linha de log por chamada. Para chamar um único modelo a partir de uma function antes, consulte Chame um modelo no AI Inference a partir de uma function.
Pré-requisitos
- Uma aplicação e um workload que servem o domínio do gateway, com o Application Accelerator ativado, que o behavior Run Function exige. Para criá-los, consulte Primeiros passos com Applications.
- KV Store habilitado na conta. O produto está em Preview e não vem habilitado por padrão, então solicite acesso pelo Technical Support.
- Um personal token, para a chamada ao KV Store. Para criar um, consulte Gerencie personal tokens.
- A Azion CLI, instalada e autorizada, para armazenar as variáveis de ambiente.
- Um provedor de terceiros cujo endpoint de chat aceite o formato de chat completions da OpenAI, com a URL dele, um nome de modelo e uma API key.
A Cache API não é definida no azion dev, então teste a function depois do deploy.
Os exemplos usam ai-gateway para o namespace do KV Store, a function e o cache, general e long-context para os dois aliases de modelo que o gateway oferece, checkout-team para uma equipe e gateway.example.com para o domínio. Substitua-os pelos seus valores.
Crie o namespace
A function abre o namespace ai-gateway a cada requisição, então o namespace precisa existir antes que a function seja executada.
Para criar o namespace, envie o nome dele à API do KV Store:
A API responde 201 com o namespace. Um namespace não pode ser renomeado nem excluído, então confira o nome antes de enviá-lo:
A conta guarda o namespace ai-gateway, vazio.
O caso de uso Governar o acesso a múltiplos modelos de IA usa os valores deste exemplo.
Armazene os valores que a function lê
A chave do provedor e o segredo de administração ficam fora do código, como variáveis de ambiente.
Para armazenar os valores que a function lê, execute estes comandos com a Azion CLI. Uma key que contém key ou secret é armazenada como secret por padrão:
A conta guarda as quatro variáveis que a function de gateway lê com Azion.env.get().
O caso de uso Governar o acesso a múltiplos modelos de IA usa os valores deste exemplo.
Crie a function de gateway
A function responde em /v1/chat/completions para as equipes e em /admin/teams para o operador, e todos os outros caminhos respondem 404. O alias fallback-test indica um id de modelo que não existe, então toda chamada a ele faz fallback para o provedor.
Crie uma function chamada ai-gateway com este código. A chamada ao provedor envia a chave como Authorization: Bearer; mude esse header para o que o seu provedor exige:
Para criar a function e a sua instância, siga Primeiros passos com Functions com o nome ai-gateway e dê à instância o nome ai-gateway, sem Args.
A aplicação tem uma instância ai-gateway que autentica uma equipe, roteia a requisição dela por alias e registra a chamada.
O caso de uso Governar o acesso a múltiplos modelos de IA usa os valores deste exemplo.
Execute a function em todos os caminhos
Crie uma regra de Request Phase como mostra Adicione a regra que executa a função, com o nome gateway - all paths, o critério ${uri} starts with / e o behavior Run Function selecionando a instância ai-gateway.
O gateway responde em /v1/chat/completions e /admin/teams, e todos os outros caminhos respondem 404. Uma regra nova leva alguns minutos para se propagar.
Adicione um registro de equipe
As keys são gravadas a partir de uma function, e não pela API, então o caminho /admin/teams do gateway grava cada registro. Para adicionar uma equipe que pode chamar general e fallback-test, gere uma chave de equipe aleatória e envie-a com o segredo de administração:
O gateway responde com o registro que armazenou, sem a chave:
Entregue a chave da equipe à equipe uma única vez, porque o gateway guarda apenas o hash dela. Para bloquear a equipe, envie a mesma requisição com "status":"blocked", e com "status":"active" para admiti-la de novo.
O namespace ai-gateway guarda o registro de checkout-team sob o hash da chave dela.
O caso de uso Governar o acesso a múltiplos modelos de IA usa os valores deste exemplo.
Confirme que o gateway roteia, faz fallback e recusa
Cada verificação envia uma requisição de chat com a chave de equipe de Adicione um registro de equipe.
Para enviar uma requisição para general:
A resposta traz x-gateway-route: Qwen/Qwen3-30B-A3B-Instruct-2507-FP8 e um objeto chat.completion cujo texto gerado fica em choices[0].message.content.
Envie a mesma requisição com "model":"fallback-test". A resposta traz x-gateway-route: provider, e as linhas de log dessa requisição guardam uma linha route_failed para no-such-model e depois uma linha model_call com "fallback":true.
Envie a requisição para general duas vezes com o header x-gateway-cache: allow. A segunda resposta traz x-gateway-cache: hit.
Uma requisição sem o header Authorization responde 401. Uma requisição para long-context, que checkout-team não pode chamar, responde 403. Depois que você define o status da equipe como blocked, qualquer requisição com a chave dela responde 429.
O gateway roteia a requisição de cada equipe por alias, faz fallback quando uma rota falha e recusa o que o registro da equipe não permite. Remova o alias fallback-test de ROUTES e do registro da equipe depois que a verificação de fallback passar.
Estas verificações confirmam o caso de uso Governar o acesso a múltiplos modelos de IA.