O Padrão PRG para Agentes de IA
Agentes de IA estão repetindo um erro de 25 anos.
Nos anos 90, os formulários web tinham um erro grave. Um usuário fazia um pedido, clicava em atualizar e o navegador enviava o pedido novamente. Isso resultava em duas cobranças e um cliente irritado.
A solução foi o padrão Post/Redirect/Get (PRG). Funciona assim:
- O usuário envia uma requisição POST para enviar os dados.
- O servidor processa os dados.
- O servidor envia um redirecionamento para uma nova URL.
- O navegador realiza uma requisição GET para mostrar o resultado.
Se o usuário clicar em atualizar, ele apenas repete a requisição GET. A perigosa requisição POST desaparece.
Os agentes de IA trouxeram esse erro de volta.
Quando um agente chama uma ferramenta para cobrar um cartão ou criar um registro, a rede pode cair. O agente não sabe se a ação funcionou. Ele tenta novamente. Agora o cliente tem duas cobranças.
Você pode corrigir isso usando chaves de idempotência. Uma chave de idempotência funciona como um redirecionamento. Ela separa o "fazer a coisa" de "mostrar o resultado".
O padrão para agentes deve ser assim:
- O agente gera uma chave única antes da primeira tentativa.
- Ele utiliza um valor estável, como um ID de usuário e um ID de carrinho.
- Ele envia essa chave em cada chamada de ferramenta.
- O servidor verifica a chave. Se ele vir a chave novamente, retorna o resultado anterior em vez de executar a ação duas vezes.
Para tarefas longas, você precisa de mais do que apenas uma chave. Você precisa de checkpointing. Você deve salvar o estado em cada etapa. Isso garante que um reinício continue de onde parou.
Siga estas regras para qualquer ferramenta de agente que altere dados:
- Toda ferramenta mutável deve aceitar uma chave de idempotência.
- Derive a chave da intenção do usuário, não de um timestamp.
- Gere a chave antes da primeira tentativa.
- Reutilize a mesma chave em cada tentativa de repetição.
- Para tarefas longas, faça o checkpoint de cada etapa intermediária.
A camada muda, mas a lógica permanece a mesma.
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi
