09-02-03 — BYOM: Bring Your Own Model, enterprise gateways e APIM
TL;DR
BYOM (Bring Your Own Model) permite usar modelos que não estão no Foundry Model Catalog — fine-tuned models, modelos treinados internamente, ou endpoints de terceiros. Dois caminhos: Custom Connections (aponta para qualquer API compatível com OpenAI spec) e Azure APIM como gateway (centraliza roteamento, rate limiting, billing e monitoring de múltiplos modelos). Essencial para empresas com modelos proprietários ou multi-cloud.
Por que BYOM?
Cenários comuns que exigem BYOM:
- Modelo fine-tuned pelo seu time rodando em AKS ou Azure ML
- Contrato com fornecedor específico (ex: modelo customizado treinado pela sua empresa de consultoria)
- Multi-cloud: modelo na GCP Vertex ou AWS Bedrock, mas quero o Foundry como orquestrador
- Modelo open-source (Llama, Mistral) deployado em infra própria por questão de custo ou compliance
- Versão especial de modelo não disponível no Catalog público
Opção 1: Custom Connection direta
Se o endpoint do seu modelo expõe uma API compatível com OpenAI (formato /v1/chat/completions), você pode registrá-la como Connection no Foundry Hub e usá-la nos projetos:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
import os
client = AIProjectClient.from_connection_string(
os.environ["AZURE_AI_FOUNDRY_CONNECTION_STRING"],
DefaultAzureCredential()
)
# Criar connection apontando para endpoint próprio
connection = client.connections.create_or_update(
connection_name="meu-modelo-interno",
connection={
"type": "custom",
"endpoint": "https://meu-modelo-finetuned.impar.com.br/v1",
"api_key": os.environ["MEU_MODELO_KEY"],
"api_type": "azure_openai" # usa spec OpenAI
}
)
# Usar nos agents
agent = client.agents.create_agent(
model="meu-modelo-finetuned-v2", # nome do deployment no endpoint
name="specialized-agent"
# ... resto da configuração igual ao fluxo normal
)
Opção 2: Azure API Management (APIM) como LLM Gateway
Para ambientes enterprise com múltiplos modelos, múltiplos times e necessidade de controle centralizado, o padrão recomendado é usar Azure APIM como gateway de LLMs:
// Arquitetura: App → APIM → [AOAI, Foundry, modelo interno]
// APIM centraliza:
// - Autenticação (um único API Key para todos os apps)
// - Rate limiting por subscription/equipe
// - Roteamento (primary + fallback)
// - Logging e billing por equipe
// - Retry policies com circuit breaker
// No APIM: policy de roteamento round-robin entre deployments AOAI
// para distribuir carga entre PTUs e pay-per-token
App .NET → APIM Gateway → [
primary: Azure OpenAI East US (PTU)
fallback1: Azure OpenAI West Europe (PAYG)
fallback2: Modelo Interno (AKS)
]
Policies APIM para LLMs
O Azure APIM tem políticas prontas para cenários de LLM (disponíveis via Azure Marketplace):
- Semantic caching: retorna resposta em cache para perguntas semanticamente similares (reduz custo 20-40%)
- Load balancing: distribui entre múltiplos deployments AOAI
- Token rate limiting: limita tokens/minuto por subscription
- Circuit breaker: desvia tráfego quando endpoint está com alta latência ou erros 429
- Logging enriquecido: log de tokens, modelo usado, latência por chamada
// appsettings.json com APIM como LLM gateway
{
"AzureOpenAI": {
"Endpoint": "https://impar-llm-gateway.azure-api.net",
"ApiKey": "chave-do-apim", // uma única chave para todos os modelos
"DeploymentName": "gpt-4o" // APIM roteia para o modelo certo
}
}
// No código .NET - mesmo client, roteamento transparente
var openAIClient = new AzureOpenAIClient(
new Uri(config["AzureOpenAI:Endpoint"]),
new AzureKeyCredential(config["AzureOpenAI:ApiKey"])
);
Fine-tuning + BYOM
Para fine-tuning de modelos no Foundry e re-deploy como BYOM:
- Fine-tune no Foundry (ou Azure ML) usando dataset próprio
- O modelo fine-tuned fica como deployment no seu Azure OpenAI resource
- Referencie o deployment name customizado no Agent
# Após fine-tuning no Foundry, referenciar o modelo customizado
agent = client.agents.create_agent(
model="gpt-4o-ft-impar-v1", # nome do fine-tuned deployment
name="specialized-support-agent",
instructions="Você é especialista em produtos Impar com conhecimento específico."
)