4

Modelo novo, comportamento novo: trate a troca como uma migração

O fornecedor anuncia um modelo novo. O modelo que você usa ganha data de saída. Entre um aviso e outro, aparece um seletor na interface e a troca parece tão simples quanto mudar uma configuração.

A API continua aceitando mensagens. A resposta continua sendo texto. Talvez os testes unitários até passem. Dias depois, porém, o agente começa a chamar ferramentas em outra ordem, ignora uma etapa de validação ou gasta mais para resolver a mesma issue.

É aí que a falsa simplicidade do seletor cobra a conta.

No ecossistema do GitHub Copilot, por exemplo, o anúncio da chegada do Gemini 3.7 Flash veio no mesmo período em que outros modelos receberam uma data de depreciação. O Copilot cloud agent também passou a permitir a escolha do nível de raciocínio por execução, com impacto possível no consumo de tokens ou créditos. São mudanças diferentes, mas apontam para o mesmo cuidado operacional: modelo e esforço fazem parte da rota de execução do produto.

Trocar essa rota exige o mesmo cuidado que uma migração de dependência importante. Não precisa virar um projeto de três meses. Precisa ser pequena, observável e reversível.

O seletor esconde uma dependência de comportamento

Duas opções compatíveis com a mesma API não são, necessariamente, equivalentes no seu workflow. A troca pode alterar:

  • como o agente interpreta uma instrução ambígua;
  • quando ele decide chamar uma ferramenta;
  • o formato e a consistência da saída estruturada;
  • a quantidade de tentativas até concluir uma tarefa;
  • a latência e o custo da execução;
  • o ponto em que ele considera o trabalho encerrado.

Essa diferença importa pouco em uma conversa casual. Importa bastante quando o modelo edita código, usa credenciais, abre um pull request ou chama um serviço externo.

Fixar a rota atual traz alguma estabilidade, mas não elimina a migração. Só adia o momento. Se o fornecedor já definiu uma data de depreciação, esperar até a última semana reduz justamente o que você mais precisa para trocar com segurança: tempo para comparar o comportamento.

Atualizar automaticamente resolve o problema oposto. Você recebe novidades sem esforço manual, mas aceita mudanças antes de entender como elas afetam o seu fluxo. Para um agente em produção, nenhuma das duas escolhas funciona bem sozinha. É melhor ter uma política explícita de versão, avaliação e promoção.

Escreva o contrato antes de escolher o candidato

Comparar modelos por uma resposta isolada quase sempre favorece o texto mais convincente. O produto, no entanto, depende do fluxo completo.

Antes de testar o candidato, descreva o comportamento que precisa sobreviver à troca. Use poucos casos reais e declare o que será observado em cada um. Um contrato enxuto pode registrar:

rota: corrigir-bug-frontend
entrada:
  - issue com passos de reprodução
  - repositório em uma branch isolada
saída_obrigatória:
  - arquivos alterados
  - resumo curto da causa
  - testes executados
ferramentas_permitidas:
  - leitura e edição do repositório
  - terminal com comandos aprovados
  - navegador de teste
limites:
  tentativas: 3
  custo_por_execução: definido_pelo_time
condições_de_parada:
  - pedir contexto se a reprodução falhar
  - parar antes de qualquer deploy
validação:
  - testes automatizados
  - console sem erro novo
  - critérios da issue reproduzidos no navegador

Esse arquivo não precisa virar uma especificação universal. Ele só precisa expor o que hoje está escondido no prompt, no código ou na cabeça de quem montou o agente.

Também vale evitar um contrato que descreve o comportamento do modelo atual em vez da necessidade do produto. “Responder com o mesmo estilo e o mesmo número de passos” pode congelar uma peculiaridade sem valor. “Entregar JSON válido, executar os testes aprovados e preservar o estado de erro do formulário” define algo que o usuário realmente percebe.

Tire modelo e esforço da regra de negócio

Se o identificador do modelo aparece espalhado por handlers, jobs e scripts, cada migração vira uma caça ao texto. O risco não está apenas em esquecer um ponto. Rotas diferentes podem acabar usando versões distintas sem que isso seja intencional.

Concentre a decisão em uma configuração versionada:

rotas:
  corrigir-bug-frontend:
    modelo: modelo-atual
    esforco: medio
    fallback: modelo-anterior
  revisar-pull-request:
    modelo: modelo-atual
    esforco: alto
    fallback: desabilitado

O formato é menos importante que a separação. A regra de negócio pede “corrija este bug com estes limites”; a camada de roteamento decide qual modelo e qual nível de esforço executam a tarefa.

Essa camada também deve registrar a rota que foi usada de verdade. Um log útil inclui modelo, configuração de esforço, versão do prompt, ferramentas liberadas, duração, custo, resultado da validação e motivo de fallback.

Sem isso, o fallback vira uma fonte de confusão. A tarefa termina, mas ninguém sabe que ela passou pelo modelo de reserva. A disponibilidade parece boa enquanto uma regressão fica escondida nos bastidores.

Fallback explícito não significa anunciar detalhes técnicos ao usuário em toda resposta. Significa deixar a substituição visível para quem opera e avalia o sistema.

Uma migração curta em seis passos

Você não precisa reproduzir toda a produção. Uma amostra pequena, escolhida a partir de falhas e tarefas frequentes, costuma revelar mais que um benchmark genérico.

  1. Inventarie a rota atual. Localize identificadores de modelo, níveis de esforço, fallbacks, prompts, limites de custo e ferramentas disponíveis.
  2. Salve um baseline. Execute os casos representativos com a configuração atual e guarde saídas, validações, latência, custo e falhas.
  3. Rode o candidato nas mesmas condições. Se possível, use execução em sombra ou uma branch descartável para impedir efeitos externos.
  4. Revise diferenças, não só acertos. Observe chamadas de ferramenta, tentativas extras, omissões, formato de saída e condições de parada.
  5. Libere para uma amostra pequena. Comece por tarefas reversíveis e acompanhe a rota usada em cada execução.
  6. Mantenha o rollback por um prazo definido. Preserve a configuração anterior enquanto o novo caminho ganha volume suficiente para revelar regressões menos óbvias.

Rodar duas rotas custa mais tokens e créditos. É um custo temporário para obter evidências antes da virada. Se o orçamento for apertado, reduza a quantidade de casos, não a qualidade dos critérios. Três tarefas bem escolhidas são mais úteis que cinquenta prompts genéricos.

Exemplo: um agente que corrige bugs de frontend

Imagine um agente interno que recebe issues pequenas. A rota atual altera o código, executa os testes e valida o fluxo no navegador. Para avaliar um novo modelo, o time separa três casos:

  • um formulário que precisa preservar os dados depois de um erro da API;
  • uma tela que quebra em largura de celular;
  • um componente que perdeu o nome acessível após uma refatoração.

O candidato pode produzir um diff elegante e ainda reprovar. Se limpar o formulário depois do erro, corrigir apenas o viewport usado no teste ou ignorar a regressão de acessibilidade, o comportamento importante não foi preservado.

A avaliação deveria comparar pelo menos quatro tipos de evidência:

  • o diff e os arquivos tocados;
  • o resultado dos testes;
  • erros novos no console;
  • a reprodução dos critérios no navegador.

Suponha que o candidato acerte o código, mas pare antes da validação visual. Isso não prova que o modelo seja ruim. A causa pode estar no prompt, no nível de esforço, na ferramenta disponível ou no limite de tentativas. Como o contrato separa essas partes, o time consegue ajustar uma variável por vez em vez de escolher outra opção no seletor e torcer.

Esse detalhe evita uma armadilha comum: transformar toda falha em comparação de inteligência. Às vezes, o modelo tinha capacidade para concluir a tarefa, mas a rota não lhe deu tempo, permissão ou um critério de parada adequado.

Rollback de configuração não desfaz o mundo

Voltar ao identificador anterior é simples quando o roteamento está isolado. Isso restaura a configuração para as próximas execuções. Não apaga uma mensagem enviada, não reverte automaticamente um deploy e não desfaz uma gravação feita em um serviço externo.

Por isso, a primeira fase da migração deve privilegiar tarefas reversíveis. Para ações externas, use aprovação humana, idempotência, modo de simulação ou uma operação compensatória quando o sistema oferecer esse caminho.

O rollback precisa responder a duas perguntas diferentes:

  1. como voltar a executar tarefas com a rota anterior;
  2. como tratar os efeitos que a rota nova já produziu.

Misturar as duas dá uma sensação de segurança que não existe.

O que revisar antes da troca

Uma última checagem ajuda a evitar a migração feita no impulso:

  • onde o modelo atual está configurado?
  • quais tarefas representam o uso real?
  • quais saídas e ferramentas fazem parte do contrato?
  • existe um teto de custo e uma condição clara de parada?
  • a telemetria mostra modelo, esforço e fallback usados?
  • o candidato foi testado sem receber a fila inteira?
  • há um prazo para manter a rota anterior disponível?
  • efeitos externos exigem aprovação ou compensação?

Modelos vão entrar, melhorar, mudar de disponibilidade e sair de catálogo. Tentar impedir esse ciclo só torna a próxima troca mais urgente.

A saída mais prática é fazer do modelo uma dependência substituível e do comportamento um contrato verificável. Assim, o nome no seletor pode mudar sem transformar cada novidade ou depreciação em uma aposta na produção.

Fontes

Carregando publicação patrocinada...
1

Meus 2 cents,

Parabens pela post !

Nao parece, mas esta questao do ciclo de vida dos modelos influenciar no pipeline/workflow acontece mais do que imaginamos.

Faz alguns meses comecei a usar rotinas de homologacao de modelo para ter certeza que nao esta quebrando nada (e em paralelo testando novos modelos que podem ter um custo/beneficio mais atraente).

Obrigado por compartilhar !

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS