0Pricing
AI Agents · Aula

Ferramentas idempotentes e efeitos colaterais

Um agente pode tentar novamente — projete as ferramentas para que chamá-las duas vezes não gere uma cobrança ou um e-mail duplicado.

Ferramentas idempotentes e efeitos colaterais é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.

Por que a idempotência é importante

Um loop de agente pode fazer novas tentativas. Se uma ferramenta envia um e-mail ou cobra um cartão de crédito, repetir a operação duplica a ação. A idempotência faz com que "fazer X novamente" não tenha efeito quando X já aconteceu.

O que é idempotência?

Uma operação é idempotente se chamá-la N vezes produzir o mesmo efeito que chamá-la uma única vez. Exemplos:

  • "Definir o status do usuário como ativo" — idempotente (defini-lo novamente como ativo não faz nada)
  • "Incrementar o contador em 1" — NOT idempotente (cada chamada adiciona mais 1)

Chaves de idempotência

Para operações não idempotentes (pagamentos, e-mails), use chaves de idempotência:

import uuid

def create_payment(amount, idempotency_key):
    # Stripe accepts this header — returns the existing payment if key was used
    return stripe.Charge.create(
        amount=amount,
        currency='usd',
        source=token,
        idempotency_key=idempotency_key
    )

Gerar chaves a partir da intenção

Use um hash de (nome_da_ferramenta, argumentos, id_da_execução) para que novas tentativas idênticas reutilizem a mesma chave:

import hashlib, json

def intent_key(tool_name, args, run_id):
    payload = json.dumps([tool_name, args, run_id], sort_keys=True)
    return hashlib.sha256(payload.encode()).hexdigest()

print(intent_key('transfer_money', {'to': 'acc2', 'amount': 100}, 'run-1'))

Inventário de efeitos colaterais

Liste quais ferramentas têm efeitos colaterais:

  • SEND e-mail / SMS
  • CHARGE / reembolso
  • CREATE / DELETE registros do banco de dados
  • POST para APIs externas que alteram o estado

Ferramentas somente de leitura são inerentemente idempotentes. Concentre-se nas gravações.

Envolver ferramentas com efeitos colaterais

Adicione uma camada de idempotência à implementação da ferramenta:

def send_email(to, subject, body, run_id):
    key = intent_key('send_email', {'to': to, 'subject': subject, 'body': body}, run_id)
    if redis.set(f'sent:{key}', 1, nx=True, ex=86400):
        smtp.send(to, subject, body)
        return {'sent': True}
    return {'sent': False, 'reason': 'already-sent'}

Confirmar antes de agir

Para ações de alto risco, adicione uma etapa de confirmação:

def transfer_money(from_acc, to_acc, amount, confirmed=False):
    if not confirmed:
        return {'pending': True, 'msg': 'Call again with confirmed=True to proceed.'}
    return {'pending': False, 'msg': f'Transferred {amount} from {from_acc} to {to_acc}.'}

print(transfer_money('acc1', 'acc2', 100))
print(transfer_money('acc1', 'acc2', 100, confirmed=True))

Ferramentas em duas fases

Divida as ferramentas em fases de "rascunho" e "confirmação":

def draft_email(to, subject, body):
    draft_id = save_draft(to, subject, body)
    return {'draft_id': draft_id, 'preview': body[:200]}

def send_draft(draft_id):
    return smtp.send(load_draft(draft_id))

Ações compensatórias

Se não for possível evitar um efeito colateral, defina uma ferramenta de "desfazer":

def refund_payment(payment_id):
    return stripe.Refund.create(payment=payment_id)
# Now an erroneous create_payment can be undone.

Registros de auditoria

Toda ferramenta com efeitos colaterais MUST registrar: quem a acionou, quais argumentos foram usados, quando e qual foi o resultado. Use registros estruturados que possam ser consultados posteriormente.

Orçamento de efeitos colaterais por execução

Limite os efeitos colaterais por execução como uma rede de segurança:

if state.side_effect_count >= 5:
    return {'error': 'Side-effect budget exhausted for this run.'}

Modo de simulação

Útil durante o desenvolvimento: as ferramentas registram o que WOULD fazer, mas não fazem isso de fato:

import os
os.environ['DRY_RUN'] = '1'
DRY_RUN = os.getenv('DRY_RUN') == '1'

def send_email(to, subject, body):
    if DRY_RUN:
        print(f'would send email to {to}')
        return {'sent': False, 'dry_run': True}
    print(f'sending email to {to}')
    return {'sent': True, 'dry_run': False}

result = send_email('user@example.com', 'Hi', 'Hello there')
print(result)

Definição

O que significa "idempotente" para uma ferramenta?

Recapitulação

Identifique os efeitos colaterais. Use chaves de idempotência. Crie ferramentas em duas fases e ações compensatórias. Audite tudo. Use a simulação durante o desenvolvimento.

Perguntas Frequentes

A aula “Ferramentas idempotentes e efeitos colaterais” é grátis?

Sim — o texto completo de “Ferramentas idempotentes e efeitos colaterais” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.

O que vou aprender em “Ferramentas idempotentes e efeitos colaterais”?

Um agente pode tentar novamente — projete as ferramentas para que chamá-las duas vezes não gere uma cobrança ou um e-mail duplicado. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Agents?

Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Ferramentas idempotentes e efeitos colaterais”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Agents?

Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Ferramentas idempotentes e efeitos colaterais
  2. Novas tentativas com recuo exponencial
  3. Limites de tempo e disjuntores
  4. Validando saídas de ferramentas (Pydantic)
← Voltar para AI Agents