Uso de IA no trabalho

Corrigir erros com o Claude Code: reproduzir → causa → mudança mínima → executar novamente

Em vez de apenas dizer à IA que “está dando erro”, você praticará um fluxo em que primeiro reproduz o problema com a mesma entrada, restringe a causa com base na mensagem real de exceção e solicita somente a mudança mínima. Usaremos um CSV cujo amount contém uma vírgula para reproduzir um ValueError no Python e executaremos novamente o código corrigido para verificar o resultado.

Ver o sumário

Para quem éUsuários iniciantes que querem controlar o processo de correção com base em mensagens de erro quando uma pequena ferramenta Python criada com Claude Code falha

Preparação
  • Entender o fluxo de summarize.py e expenses.csv dos artigos anteriores
  • Conseguir executar no terminal comandos no formato python summarize.py nome_do_arquivo
  • Preservar primeiro o arquivo original e a mensagem de erro mesmo quando ocorrer uma falha
  • Usar apenas CSV fictício, não dados pessoais reais

01Antes de corrigir, reproduza primeiro o erro com a mesma entrada

Quando ocorre um erro, o primeiro passo não é adivinhar, mas reproduzi-lo. Neste exemplo, usamos um CSV fictício em que um dos valores de amount foi alterado para a string "1,450". Pelas regras do CSV, como a vírgula está dentro do valor, ele fica entre aspas; depois de ser lido pelo módulo csv, row['amount'] contém a string '1,450'. Se o código existente chamar diretamente int(row['amount']), não conseguirá converter essa string em inteiro.

Prompt
date,category,amount
2026-09-01,food,12000
2026-09-03,transport,"1,450"
2026-09-03,food,8500
2026-09-10,supplies,3200
2026-09-15,transport,1450
2026-10-02,food,9800
Prompt
import csv
import sys
from collections import defaultdict

path = sys.argv[1]
monthly = defaultdict(int)

with open(path, encoding="utf-8", newline="") as f:
    reader = csv.DictReader(f)
    for row in reader:
        month = row["date"][:7]
        monthly[month] += int(row["amount"])

for month in sorted(monthly):
    print(f"{month} = {monthly[month]}")

Ao executar esse código com `python summarize_buggy.py expenses_bad.csv`, ele para na etapa de conversão antes de exibir os totais corretos. O mesmo código foi realmente executado com a ferramenta Python do chat do GPT, e foi confirmado que a string da exceção correspondia exatamente ao texto abaixo.

Prompt
ValueError: invalid literal for int() with base 10: '1,450'

02Ao ler o erro, separe o valor que falhou da operação que falhou

Essa mensagem já contém pistas importantes. A função que falhou é int(), e o valor que falhou é '1,450'. Portanto, não é necessário assumir de início que todo o CSV está errado ou que a lógica de agregação mensal está incorreta. O problema pode ser restringido ao ponto em que a string de amount é convertida em inteiro.

ObservaçãoFato confirmadoO que ainda não deve ser presumido
Tipo de exceçãoValueErrorNão concluir que o arquivo inteiro está corrompido
Valor que falhou'1,450'Não presumir que todas as outras linhas também estão erradas
Operação que falhouConversão com int()Não concluir que a fórmula de agregação está incorreta
Escopo da correçãoPriorizar o ponto de parsing de amountNão reescrever o programa inteiro

Ao pedir ajuda ao Claude Code, forneça também a mensagem de erro, o comando de reprodução e as condições de entrada que causaram o problema. Assim, você pode verificar se a explicação da causa está ligada a evidências reais e reduzir novamente o escopo caso seja proposta uma alteração grande e sem relação com a falha.

03Peça primeiro a explicação da causa e depois somente a correção mínima

Os requisitos desta correção são simples. Se uma string numérica contiver vírgulas, remova-as antes de convertê-la em inteiro; se mesmo assim não for um número, deve ser gerado um erro claro informando em qual linha e com qual valor ocorreu a falha. A forma de agregação mensal e o formato de saída permanecem inalterados.

Prompt
Ao executar python summarize_buggy.py expenses_bad.csv, ocorre o erro abaixo.
ValueError: invalid literal for int() with base 10: '1,450'

Explique primeiro a causa.
Depois, faça apenas a alteração mínima na parte que converte amount.
Requisitos:
- Se uma string numérica contiver vírgulas, remova-as antes de converter para inteiro
- Se ainda assim não for um número, gere um ValueError claro que inclua o número da linha e o valor original
- Mantenha inalterados a agregação mensal e o formato de saída
- Use apenas a biblioteca padrão do Python
- Depois da correção, informe também qual comando usar para executar novamente.

Aqui não pedimos “reescreva todo o código”. Como o ponto de falha já foi restringido à conversão de amount, limitamos a alteração a essa parte. Se a IA tentar modificar outros arquivos ou as regras de agregação, peça primeiro que explique por que isso seria necessário e, sem justificativa, volte ao escopo original.

04Reúna a remoção de vírgulas e o erro com número da linha em uma função

A correção abaixo separa o parsing de amount em parse_amount(). Primeiro remove as vírgulas e tenta aplicar int(); se falhar, lança novamente um ValueError que inclui o número da linha de entrada e a string original. Como o cabeçalho de csv.DictReader ocupa a linha 1, os números das linhas de dados são ajustados com enumerate(reader, start=2).

Prompt
import csv
import sys
from collections import defaultdict

def parse_amount(text, line_number):
    cleaned = text.replace(",", "")
    try:
        return int(cleaned)
    except ValueError as exc:
        raise ValueError(
            f"line {line_number}: amount must be an integer, got {text!r}"
        ) from exc

path = sys.argv[1]
monthly = defaultdict(int)

with open(path, encoding="utf-8", newline="") as f:
    reader = csv.DictReader(f)
    for line_number, row in enumerate(reader, start=2):
        month = row["date"][:7]
        monthly[month] += parse_amount(row["amount"], line_number)

for month in sorted(monthly):
    print(f"{month} = {monthly[month]}")

Esta correção não pretende ser um parser geral capaz de tratar todos os formatos monetários, como símbolos de moeda, casas decimais ou negativos entre parênteses. Ela resolve apenas o problema de separador de milhar realmente reproduzido neste exemplo. Para ampliar as regras de entrada, é mais seguro definir primeiro quais formatos serão permitidos e adicioná-los como requisitos separados.

05Execute novamente com o mesmo arquivo e compare com os valores esperados originais

Depois da correção, execute novamente com o mesmo arquivo que causou o problema. Ao executar realmente o código corrigido acima com `expenses_bad.csv` na ferramenta Python do chat do GPT, os totais mensais foram 2026-09 = 26600 e 2026-10 = 9800. Eles coincidem exatamente com os valores esperados definidos desde o início da série.

Prompt
python summarize_fixed.py expenses_bad.csv

2026-09 = 26600
2026-10 = 9800

Não basta confirmar que o erro desapareceu. O ponto principal da reexecução é verificar numericamente que tanto 1450 sem vírgula quanto "1,450" com vírgula sejam interpretados como o mesmo valor e que o resultado correto anterior seja mantido.

06Faça valores não numéricos falharem com a localização, em vez de ignorá-los

Adicionar a remoção de vírgulas não significa que valores inválidos devam ser convertidos para 0 ou ignorados. Por exemplo, se o amount da linha 3 for abc, o programa deve falhar para que o erro de dados não fique oculto. O mesmo código corrigido foi realmente executado com outra entrada fictícia, e foi confirmado um ValueError que inclui `line 3` e o valor original 'abc'.

Prompt
date,category,amount
2026-09-01,food,12000
2026-09-03,transport,abc
Prompt
ValueError: line 3: amount must be an integer, got 'abc'
  • Primeiro, confirme que o erro é reproduzido com a mesma entrada.
  • Leia o tipo de exceção e o valor que falhou para reduzir o escopo da correção.
  • Peça à IA que explique a causa e depois solicite somente a alteração mínima.
  • Execute novamente com a entrada que causou o problema e compare com os valores esperados originais.
  • Não ignore silenciosamente entradas inválidas; deixe um erro que permita localizá-las.

O que conferir por conta própria

Código Python realmente executado com a ferramenta Python do chat do GPT · Apenas CSV fictício foi usado · Claude Code não foi realmente executado

  • Confirmar que o código existente int(row['amount']) realmente reproduz um ValueError com a entrada '1,450'
  • Confirmar que a string da exceção corresponda exatamente a "invalid literal for int() with base 10: '1,450'"
  • Confirmar que o código corrigido seja executado sem exceções com expenses_bad.csv
  • Confirmar que, após a correção, stdout seja exatamente 2026-09 = 26600 e 2026-10 = 9800
  • Confirmar que com a entrada amount=abc ocorra realmente o ValueError "line 3: amount must be an integer, got 'abc'"
  • Confirmar que foi usada somente a biblioteca padrão do Python
Limites da verificação

A verificação de execução do Python foi realizada com a ferramenta Python do chat do GPT, e não se afirma que tenha sido testada no Claude Code. O parser do exemplo trata apenas vírgulas como separadores de milhar; ele não é generalizado para símbolos de moeda, casas decimais ou formatos numéricos regionais.