O loop do agente
Quatro linhas de lógica e três lugares onde tudo dá errado
Um agente de correção de testes é executado em um repositório. Turno 1: ele lê o arquivo de teste. Turno 2: modifica o módulo. Turno 3: reexecuta a suíte, e um teste ainda falha. Turno 4: desfaz a modificação. Turno 5: reaplica exatamente a mesma. Turno 12: a fatura chega a US$ 2,80 só para essa tarefa, o histórico pesa 90.000 tokens, e o processo continua rodando. Em nenhum momento o código quebrou: o loop faz exatamente o que lhe foi pedido, ou seja, continuar enquanto o modelo pedir uma ferramenta.
O corpo de um loop de agente cabe em umas quinze linhas e não tem nada de sutil. Toda a dificuldade está em outro lugar, em três decisões que tomamos por padrão por não as termos formulado: em que condição parar, quantos turnos permitir antes de jogar a toalha, e o que fazer com o histórico quando ele se torna o principal item de gasto. Errar em qualquer uma das três resulta em um loop que funciona na demonstração e se torna impossível de operar na primeira tarefa difícil.
A anatomia de um turno
Um turno de agente tem quatro momentos. Dois pertencem a você, dois pertencem ao modelo.
- O raciocínio: o modelo recebe o histórico e decide. Ele produz ou o texto final, ou um ou mais pedidos de chamada de ferramenta.
- A execução: seu código executa essas chamadas. O modelo não toca em nada por conta própria — ele apenas emite intenções em formato JSON.
- A observação: você reinjeta o resultado de cada chamada no histórico, associado ao identificador da chamada.
- A iteração: você chama o modelo novamente com o histórico ampliado.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão