Boas práticas para produção
O que precisa estar correto antes de uma integração receber tráfego real.
Confiabilidade
- Repita as requisições para os códigos certos.
429,500,502,503,529com espera exponencial e variação aleatória. Nunca repita cegamente400,401,402ou403. - Defina tempos limite. Uma geração longa pode legitimamente levar minutos; um socket travado não deve travar também seu processo de trabalho. 120s é um limite razoável para chamadas sem streaming.
- Limite a concorrência com um semáforo, em vez de disparar tudo e repetir as requisições rejeitadas.
- Tenha um modelo de contingência. Se o modelo principal estiver sobrecarregado, recorrer a um modelo menor é melhor do que retornar um erro.
Custo
- Defina
max_tokensem cada chamada. É um limite de gastos, não uma sugestão. - Direcione por tarefa — consulte Controle de custos.
- Ative o cache de prompts para obter prefixos estáveis.
- Registre
usagepor requisição, com um rótulo de tarefa, para poder atribuir os gastos depois.
Segurança
- As chaves ficam em variáveis de ambiente ou em um gerenciador de segredos — nunca no repositório, nunca em um pacote do cliente.
- Uma chave por serviço, para que a revogação seja pontual.
- Nunca construa prompts concatenando entradas não confiáveis do usuário com instruções; mantenha o conteúdo do usuário em uma mensagem
usere as instruções emsystem. - Trate a saída do modelo como não confiável. Não execute
evalnem execute SQL gerado com uma função que tenha permissão de escrita.
Observabilidade
- Registre o modelo, a latência,
usage,stop_reasone seu próprio tipo de tarefa em cada chamada. - Configure um alerta para a taxa de
stop_reason: max_tokens— um aumento significa que as respostas estão sendo truncadas. - Acompanhe o custo por tipo de tarefa, não apenas o total. Os totais ocultam qual carga de trabalho piorou.
O alerta mais valioso é o de truncamento, não o de erros. Uma resposta truncada retorna HTTP 200 e parece normal no monitoramento, embora esteja errada para o usuário.