01
O prompt não é portátil: ele foi ajustado contra um modelo
Todo prompt maduro carrega uma dívida invisível com o modelo em que nasceu. As instruções explícitas são a parte pequena; a parte grande é o comportamento que o modelo antigo entregava por padrão e por isso nunca precisou virar regra. Se aquele modelo já devolvia JSON limpo quando o prompt pedia "responda em JSON", ninguém escreveu "sem cercas de código, sem texto antes ou depois". Se ele já era conciso, ninguém colocou um teto de tamanho. Se ele raramente recusava, ninguém definiu o que fazer quando a recusa chega. Cada um desses silêncios é uma suposição, e a troca de modelo testa todas de uma vez. O resultado típico não é um sistema que para: é um sistema que continua respondendo, com uma fatia dos casos saindo errada de um jeito que só aparece na métrica dias depois.
Por isso a migração não começa escolhendo o modelo novo, começa listando as suposições. O exercício é ler o prompt e o código em volta perguntando, para cada comportamento de que o sistema depende, se ele está escrito ou se está apenas acontecendo. O que está escrito viaja com o prompt; o que está apenas acontecendo é dívida que vence na troca. Essa lista vira a espinha do teste de migração, porque cada suposição não escrita é exatamente um caso de regressão a verificar no candidato. Fazer isso antes de trocar transforma a migração de um mistério em uma checklist finita, e costuma render o efeito colateral de melhorar o prompt no modelo atual: uma suposição que virou instrução explícita reduz variância mesmo sem trocar nada.
| Suposição tácita | Como quebra no modelo novo | Como tornar explícita |
|---|---|---|
| O modelo devolve JSON puro | Vem embrulhado em cerca de código ou com um preâmbulo | Instrução de formato mais parser tolerante e validação de schema |
| A resposta é curta por natureza | Dobra de tamanho e estoura custo e janela | Teto explícito de tamanho e verificação no gate |
| Recusa é rara e previsível | Fica mais conservador e recusa caso legítimo | Casos de fronteira no dataset e política de fallback declarada |
| Chama a ferramenta certa sem hesitar | Descreve a ação em texto em vez de emitir a tool call | Descrição de tool mais afiada e asserção de tool call no eval |
| Segue a ordem das etapas do prompt | Pula ou funde etapas em respostas longas | Saída estruturada por campo em vez de texto sequencial |