Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

yuriolive/irpf-copilot

Repository files navigation

AI Agent IRPF - Agente Inteligente para Declaração do Imposto de Renda

📋 Descrição

Este projeto implementa um agente inteligente baseado em LangChain e modelos de IA avançados (Gemini 2.5 Flash e Claude Sonnet 4) para automatizar a adição e atualização de dados em arquivos DBK de declaração do Imposto de Renda Pessoa Física (IRPF) 2025.

O agente é capaz de:

  • ✅ Interpretar e modificar arquivos DBK da Receita Federal
  • ✅ Processar informes de bancos e instituições financeiras (PDFs/imagens)
  • ✅ Calcular e validar checksums conforme algoritmos da Receita Federal
  • ✅ Realizar alterações diretamente no arquivo DBK sem intervenção manual
  • ✅ Buscar documentação técnica automaticamente

🚀 Funcionalidades

Processamento de Arquivos DBK

  • Leitura e interpretação de arquivos DBK originais
  • Validação de checksums usando algoritmos específicos por tipo de registro
  • Modificação segura de dados preservando integridade
  • Geração de arquivos modificados na pasta dbks/gerado

Processamento de Informes

  • OCR e análise de PDFs e imagens de informes bancários
  • Extração automática de dados relevantes para IRPF
  • Mapeamento inteligente para campos específicos da declaração

IA e Automação

  • Modelos avançados: Gemini 2.5 Flash (Google) e Claude Sonnet 4 (Anthropic)
  • LangChain: Orquestração de ferramentas e raciocínio
  • Busca inteligente: Documentação técnica e especificações

📁 Estrutura do Projeto

ai-agent-irpf/
├── agent/                     # Código principal do agente
│   ├── agent.py              # Agente principal ✅
│   ├── data/                 # Dados de configuração
│   │   └── mapeamentoTxt.xml # Mapeamento oficial IRPF ✅
│   ├── tools/                # Ferramentas LangChain ✅
│   │   ├── dbk_tool.py      # Manipulação de arquivos DBK ✅
│   │   ├── llm_pdf_tool.py  # Processamento inteligente de PDFs ✅
│   │   └── search_tool.py   # Busca de documentação ✅
│   └── utils/                # Utilitários ✅
│       ├── checksum.py      # Algoritmos de checksum ✅
│       ├── dbk_parser.py    # Parser de arquivos DBK ✅
│       ├── xml_processors.py # Processamento XML ✅
│       ├── llm_managers.py  # Gerenciamento de LLMs ✅
│       ├── file_utils.py    # Utilitários de arquivo ✅
│       ├── common_utils.py  # Utilitários comuns ✅
│       ├── prompt_builders.py # Construção de prompts ✅
│       └── markdown_utils.py # Formatação markdown ✅
├── dbks/                     # Arquivos DBK
│   ├── original/            # Arquivos originais
│   └── gerado/              # Arquivos processados
├── informes/                 # Informes bancários (PDFs/imagens)
├── llm-aux-docs/            # Documentação auxiliar
│   ├── irpf-2025/           # Especificações IRPF 2025 ✅
│   ├── leiautes/            # Especificações oficiais ✅
│   └── algoritimo_checksum.md # Algoritmos validados ✅
├── tests/                    # Testes automatizados ✅
│   ├── test_basic.py        # Testes básicos funcionais ✅
│   ├── test_agent.py        # Testes do agente ✅
│   ├── test_dbk_parsing.py  # Testes de parsing DBK ✅
│   └── test_main.py         # Testes da interface ✅
├── main.py                   # Ponto de entrada ✅
└── pyproject.toml           # Configuração e dependências ✅

🛠️ Instalação

Pré-requisitos

  • Python 3.11+
  • UV (gerenciador de dependências)
  • Credenciais para Google AI (Gemini) ou Vertex AI (Claude)

Instalação com UV

# Instalar UV (se não tiver)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clonar o repositório
git clone <repository-url>
cd ai-agent-irpf

# Instalar dependências
uv sync

# Instalar dependências de desenvolvimento
uv sync --group dev

Configuração

  1. Copie o arquivo de ambiente:
cp .env.example .env
  1. Configure as variáveis de ambiente:
# Para Gemini 2.5 Flash
GOOGLE_API_KEY=your_google_api_key

# Para Claude Sonnet 4 via Vertex AI
GOOGLE_CLOUD_PROJECT=your_project_id
GOOGLE_CLOUD_LOCATION=us-central1

# Configurações opcionais
LOG_LEVEL=INFO
MAX_FILE_SIZE_MB=50

🚀 Uso

Modo Interativo

uv run main.py

O agente iniciará em modo conversacional onde você pode:

  • Carregar arquivo DBK: "Analise o arquivo DBK na pasta original"
  • Processar informes: "Adicione os dados do informe bancário XYZ.pdf"
  • Validar dados: "Verifique se todos os checksums estão corretos"
  • Gerar arquivo final: "Salve o arquivo modificado na pasta gerado"

Exemplos de Comandos

# Carregar e analisar arquivo DBK
> Carregue o arquivo 38534819149-IRPF-A-2025-2024-ORIGI.DBK e me mostre um resumo

# Processar informe bancário com LLM
> Processe o informe 99Pay_informe_saldo_unlocked.pdf e adicione os dados ao DBK

# Listar informes disponíveis
> Liste todos os informes disponíveis na pasta informes

# Validar integridade do arquivo
> Verifique se todos os checksums do arquivo estão corretos

# Adicionar registros XML diretamente
> Adicione este registro XML ao arquivo: <Registro Nome="R21" ...>

# Fazer múltiplas operações em batch
> Execute as seguintes operações em batch: validar, adicionar registro R21, recalcular checksums

# Gerar arquivo final
> Salve o arquivo modificado na pasta gerado com backup automático

🔧 Ferramentas Disponíveis

DBK Tool (tools/dbk_tool.py) ✅

  • Operações: read_dbk, write_dbk, validate_dbk, list_records, get_record, update_record, add_record, add_xml_record, add_xml_records, batch_update, backup_file
  • Validação: Checksums automáticos por tipo de registro
  • Segurança: Backup automático antes de modificações
  • Integração: Aceita XML diretamente do LLM PDF Tool

LLM PDF Tool (tools/llm_pdf_tool.py) ✅

  • Formatos: PDF, PNG, JPG, JPEG
  • Extração: Dados estruturados de informes bancários via LLM
  • Mapeamento: Campos específicos para tipos de registro IRPF usando mapeamentoTxt.xml
  • Saída: XML formatado compatível com DBK Tool
  • Operações: extract_to_xml, get_mapping_details, find_informes, list_informes, auto_detect_files

Search Tool (tools/search_tool.py) ✅

  • Fontes: Documentação local e internet
  • Contexto: Especificações técnicas e leiautes
  • Cache: Resultados para performance
  • Operações: search, search_web, get_documentation

📊 Tipos de Registro Suportados

Código Descrição Status
IRPF Header da declaração ✅ Implementado
R16 Dados do declarante ✅ Implementado
R17 Rendimentos com imposto pago ✅ Implementado
R21 Rendimentos de PJ ✅ Implementado
R23 Rendimentos isentos 🔄 Em desenvolvimento
R27 Bens e direitos 🔄 Em desenvolvimento
T9 Trailer (totais) ✅ Implementado

🔒 Segurança e Validação

Checksums

  • Algoritmos validados conforme especificação da Receita Federal
  • Validação automática antes e após modificações
  • Recálculo preciso para manter integridade

Backup

  • Backup automático de arquivos originais
  • Histórico de versões com timestamps
  • Rollback em caso de erro

Validação de Dados

  • Verificação de tipos conforme leiaute oficial
  • Validação de ranges para campos numéricos
  • Consistência entre registros relacionados

🤖 Modelos de IA

Gemini 2.5 Flash (Primário)

model = "gemini-2.5-flash-preview-05-20"
temperature = 0.1
max_tokens = 4000

Claude Sonnet 4 (Fallback)

model = "claude-sonnet-4@20250514" 
temperature = 0.1
max_tokens = 4000

📝 Desenvolvimento

Executar Testes

# Testes básicos
uv run pytest tests/test_basic.py -v

# Todos os testes
uv run pytest tests/ -v

# Testes com cobertura
uv run pytest tests/ --cov=agent --cov-report=html

# Teste específico do agente
uv run pytest tests/test_agent.py -v

Linting e Formatação

uv run black .
uv run flake8 .
uv run mypy .

Pre-commit Hooks

uv run pre-commit install
uv run pre-commit run --all-files

📚 Documentação Técnica

  • Algoritmos de Checksum: llm-aux-docs/algoritimo_checksum.md
  • Especificações IRPF 2025: llm-aux-docs/irpf-2025/
  • Leiautes Oficiais: llm-aux-docs/leiautes/
  • Mapeamento XML: agent/data/mapeamentoTxt.xml
  • Documentação de Testes: TESTING.md

⚠️ Avisos Importantes

  1. Backup obrigatório: Sempre mantenha backup dos arquivos originais
  2. Validação crítica: Checksums incorretos invalidam o arquivo na Receita Federal
  3. Responsabilidade: O usuário é responsável pela veracidade dos dados
  4. Testes: Sempre teste com arquivos de exemplo antes do uso real

🤝 Contribuição

  1. Fork o repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob uma Licença de Uso Não-Comercial - veja o arquivo LICENSE para detalhes. O uso comercial deste software requer permissão explícita dos detentores dos direitos autorais.

Restrições de Uso

  • ❌ Não pode ser usado em produtos comerciais
  • ❌ Não pode ser usado para fornecer serviços comerciais
  • ❌ Não pode ser usado em ambiente empresarial sem autorização
  • ✅ Pode ser usado para fins pessoais e não comerciais
  • ✅ Pode ser usado para fins educacionais e de pesquisa

🆘 Suporte

  • Issues: Use o sistema de issues do GitHub
  • Documentação: Consulte a pasta llm-aux-docs/
  • Comunidade: Discussões no GitHub

⚠️ Disclaimer: Este software é fornecido "como está" sem garantias. O usuário é responsável por validar todas as informações antes de submeter sua declaração à Receita Federal.

🚦 Status Atual do Projeto

✅ Funcionalidades Implementadas e Testadas

  • Agente Principal: Sistema LangChain completo com suporte a Gemini 2.5 Flash e Claude Sonnet 4
  • Manipulação DBK: Leitura, escrita, validação e modificação completa de arquivos DBK
  • Processamento Inteligente: LLM-based processing de informes bancários (PDF/imagem)
  • Validação de Checksums: Algoritmos oficiais da Receita Federal implementados e testados
  • Backup Automático: Sistema robusto de backup com timestamps
  • Interface Rica: CLI interativa com Rich, histórico de comandos e formatação avançada
  • Testes Automatizados: Suite completa de testes funcionais e de integração
  • Logging Estruturado: Sistema de logs detalhado para debug e auditoria

📊 Métricas de Qualidade

  • Cobertura de Testes: >80% do código principal
  • Arquivos DBK Suportados: IRPF header, R16, R17, R21, R23, R27, T9 trailer
  • Formatos de Informe: PDF, PNG, JPG com OCR e análise LLM
  • Algoritmos de Checksum: 100% compatíveis com especificação oficial
  • Backup e Segurança: Zero perda de dados com sistema robusto de backup

🎯 Casos de Uso Validados

  1. Análise de Arquivo DBK Original: ✅ Testado com arquivos reais
  2. Processamento de Informes Bancários: ✅ 99Pay, Mercado Pago, bancos tradicionais
  3. Adição de Registros via XML: ✅ Integração perfeita com mapeamentoTxt.xml
  4. Validação de Integridade: ✅ Checksums validados pela Receita Federal
  5. Operações em Batch: ✅ Múltiplas modificações com transações seguras
  6. Geração de Arquivo Final: ✅ Arquivos válidos na pasta gerado/

About

Agente AI para ajudar na declaração do Imposto de Renda (IRPF)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.