The Brazilian Fiscal LLM is a Python 3.12 library that combines a custom PyTorch Transformer with a complete set of Brazilian tax compliance tools. It is designed to be consumed as a library by any application — there is no CLI or UI bundled in.
The system covers the full lifecycle of Brazilian fiscal obligations:
Intent classification of natural-language fiscal queries (16 obligation classes)
RAG (Retrieval-Augmented Generation) with 25 indexed fiscal knowledge documents
Tax calculators for all major Brazilian taxes (ICMS, IPI, PIS/COFINS, IRPJ/CSLL, ISS, Simples Nacional)
SPED file generators for all federal digital bookkeeping obligations
Electronic document generators (NF-e, NFC-e, CT-e, MDF-e) with digital signatures
SEFAZ SOAP transmitter for NF-e authorization
The single entry point is PipelineFiscal, which orchestrates all components.
Includes TIPI rates by NCM chapter (0% pharmaceuticals, 25% vehicles, 300% tobacco).
PIS/COFINS (src/calculators/pis_cofins.py)
python
1resultado = pipeline.calcular_pis_cofins({2"valor":100000,3"regime":"lucro_real",# or "lucro_presumido"4# Optional credits (non-cumulative regime only):5"receitas":[6{"descricao":"Vendas","valor":100000,"cst_pis":"01","cst_cofins":"01"}7],8})
Regime
PIS
COFINS
Lucro Presumido (cumulative)
0.65%
3.00%
Lucro Real (non-cumulative)
1.65%
7.60%
Supports credits on purchases, energy, rent, depreciation (Lei 10.637/2002 and 10.833/2003).
IRPJ / CSLL (src/calculators/irpj_csll.py)
python
1resultado = pipeline.calcular_irpj_csll({2"valor":500000,# Lucro Real: net profit / Lucro Presumido: gross revenue3"regime":"lucro_presumido",# or "lucro_real"4"atividade":"venda_mercadorias",# or "servicos_em_geral", "intermediacao"5})
Rule
Value
IRPJ base rate
15%
IRPJ surcharge
+10% on profit > R$ 20,000/month
CSLL rate
9% (general) / 15% (financial institutions)
Lucro Presumido — commerce/industry
8% of revenue
Lucro Presumido — services
32% of revenue
Tax loss carryforward limit
30% of taxable profit
ISS (src/calculators/iss.py)
python
1resultado = pipeline.calcular_iss({2"valor_servico":10000,3"codigo_servico":"17",# LC 116/2003 service code4"aliquota":3,# municipal rate (2%–5%)5"retencao_fonte":True,6})
Simples Nacional (src/calculators/simples_nacional.py)
python
1# Single activity DAS calculation2resultado = pipeline.calcular_simples({3"receita_mes":50000,4"rbt12":600000,# 12-month accumulated revenue5"anexo":"I",# I=commerce, II=industry, III-V=services6})78# Full PGDAS-D with multiple activities9resultado = pipeline.calcular_pgdas({10"periodo":"2024-01",11"rbt12":600000,12"atividades":[13{"tipo":"comercio","receita":30000},14{"tipo":"servicos_advocacia","receita":20000},15],16})
Covers all 5 annexes (6 revenue brackets each), Fator R calculation for Annex III vs V, and MEI fixed amounts.
SPED / DFe Generators
EFD ICMS/IPI (src/generators/efd_icms_ipi.py)
Layout version 017. Generates all mandatory blocks:
1from src.transmitters.receita_federal import TransmissorSPEDLocal, ValidadorArquivoSPED
23# Validates required records and line counts4valido, erros = ValidadorArquivoSPED().validar(caminho_arquivo)56# Prepares file for PGE (Java program) transmission7resultado = TransmissorSPEDLocal("./output").preparar_efd_icms_ipi(caminho)
Note: EFD ICMS/IPI, EFD Contribuições, and ECD files must be transmitted through the Receita Federal's local PGE/Validador program — direct HTTP upload is not supported for SPED. Only NF-e uses direct SEFAZ SOAP webservices.
Training the Model
The TransformerFiscal ships with random weights. Use TrainerFiscal to train it on the built-in dataset (173 labeled examples) or your own data.
O LLM Fiscal Brasileiro é uma biblioteca Python 3.12 que combina um Transformer PyTorch customizado com um conjunto completo de ferramentas de compliance tributário brasileiro. O sistema é projetado para ser consumido como biblioteca por qualquer aplicação — não há CLI ou interface gráfica embutida.
O sistema cobre o ciclo de vida completo das obrigações fiscais brasileiras:
Classificação de intenção de consultas fiscais em linguagem natural (16 classes de obrigações)
RAG (Geração Aumentada por Recuperação) com 25 documentos de conhecimento fiscal indexados
Calculadoras tributárias para todos os principais tributos brasileiros (ICMS, IPI, PIS/COFINS, IRPJ/CSLL, ISS, Simples Nacional)
Geradores de arquivos SPED para todas as obrigações de escrituração digital federal
Geradores de documentos eletrônicos (NF-e, NFC-e, CT-e, MDF-e) com assinatura digital
Transmissor SOAP SEFAZ para autorização de NF-e
O ponto de entrada único é o PipelineFiscal, que orquestra todos os componentes.
1from src import PipelineFiscal
23# Instanciar o pipeline LLM (pesos aleatórios até ser treinado)4pipeline = PipelineFiscal(diretorio_saida="./output")56# --- Processamento em linguagem natural ---7resultado = pipeline.processar(8"calcule o ICMS de uma venda",9{"valor_mercadoria":10000,"aliquota":18,"uf_origem":"SP","uf_destino":"RJ"}10)11print(resultado.resumo())12# [calcular_icms]13# base_calculo: R$ 10.000,0014# valor_icms: R$ 1.800,0015# valor_total_icms: R$ 1.800,001617# --- Cálculo direto de tributos ---18r = pipeline.calcular_pis_cofins({19"valor":100000,20"regime":"lucro_presumido",21})22print(r["pis_a_recolher"])# 650.0023print(r["cofins_a_recolher"])# 3000.002425# --- Gerar obrigações SPED do período ---26from src.fiscal.entities import PeriodoApuracao, Empresa,...27periodo = PeriodoApuracao(...)28arquivos = pipeline.gerar_obrigacoes(periodo)29# Retorna: {"EFD_ICMS_IPI": ResultadoFiscal, "EFD_CONTRIBUICOES": ..., ...}3031# --- Verificar status SEFAZ ---32status = pipeline.verificar_sefaz(uf="SP")33print(status["mensagem"])
Modelo LLM
TransformerFiscal
Encoder Transformer compacto treinado para classificação de intenção fiscal brasileira.
Parâmetro
Valor
Arquitetura
Transformer Encoder (Pre-LN)
Camadas
4
d_model
256
Cabeças de atenção
8
Dimensão FFN
1.024
Tokenizador
Nível de caractere (vocab ~200 chars)
Comprimento máximo de sequência
1.024 tokens
Classes de saída
16 tipos de obrigação fiscal
16 Classes de Intenção:
Classe
Descrição
EFD_ICMS_IPI
Gerar EFD ICMS/IPI
EFD_CONTRIBUICOES
Gerar EFD Contribuições (PIS/COFINS)
ECD
Gerar Escrituração Contábil Digital
ECF
Gerar Escrituração Contábil Fiscal
NFe
Emitir/cancelar NF-e ou NFC-e
NFSe
Emitir NFS-e (nota de serviço municipal)
CTe
Gerar CT-e (conhecimento de transporte)
eSocial
Gerar eventos e-Social (folha/admissão)
EFD_REINF
Gerar eventos EFD-Reinf (retenções)
DCTF
Gerar DCTF (débitos tributários federais)
PGDAS
Calcular DAS Simples Nacional / PGDAS-D
calculo_icms
Calcular ICMS de uma operação
calculo_ipi
Calcular IPI de produto industrializado
calculo_pis_cofins
Calcular PIS e COFINS sobre receitas
calculo_irpj_csll
Calcular IRPJ e CSLL (tributos corporativos)
calculo_iss
Calcular ISS (imposto municipal sobre serviços)
Base de Conhecimento RAG
BancoEmbeddingsFiscais indexa 25 documentos de conhecimento fiscal cobrindo todas as principais obrigações, alíquotas, prazos e legislação. A recuperação usa similaridade cosseno nos embeddings do token CLS.
Todas as calculadoras estão disponíveis via PipelineFiscal ou importadas de src.calculators.*. Todos os valores monetários usam Decimal com ROUND_HALF_UP.
Inclui alíquotas TIPI por capítulo NCM (0% farmacêuticos, 25% veículos, 300% cigarro).
PIS/COFINS (src/calculators/pis_cofins.py)
python
1resultado = pipeline.calcular_pis_cofins({2"valor":100000,3"regime":"lucro_real",# ou "lucro_presumido"4"receitas":[5{"descricao":"Vendas","valor":100000,"cst_pis":"01","cst_cofins":"01"}6],7})
Regime
PIS
COFINS
Lucro Presumido (cumulativo)
0,65%
3,00%
Lucro Real (não cumulativo)
1,65%
7,60%
Suporta créditos sobre compras, energia, aluguéis, depreciação (Leis 10.637/2002 e 10.833/2003).
IRPJ / CSLL (src/calculators/irpj_csll.py)
python
1resultado = pipeline.calcular_irpj_csll({2"valor":500000,# Lucro Real: lucro líquido / Lucro Presumido: receita bruta3"regime":"lucro_presumido",# ou "lucro_real"4"atividade":"venda_mercadorias",# ou "servicos_em_geral", "intermediacao"5})
Regra
Valor
IRPJ alíquota base
15%
IRPJ adicional
+10% sobre lucro > R$ 20.000/mês
CSLL alíquota
9% (geral) / 15% (financeiras)
Lucro Presumido — comércio/indústria
8% da receita
Lucro Presumido — serviços
32% da receita
Limite compensação prejuízos
30% do lucro tributável
ISS (src/calculators/iss.py)
python
1resultado = pipeline.calcular_iss({2"valor_servico":10000,3"codigo_servico":"17",# código da LC 116/20034"aliquota":3,# alíquota municipal (2%–5%)5"retencao_fonte":True,6})
Simples Nacional (src/calculators/simples_nacional.py)
python
1# Cálculo do DAS para uma atividade2resultado = pipeline.calcular_simples({3"receita_mes":50000,4"rbt12":600000,# receita acumulada 12 meses5"anexo":"I",# I=comércio, II=indústria, III-V=serviços6})78# PGDAS-D completo com múltiplas atividades9resultado = pipeline.calcular_pgdas({10"periodo":"2024-01",11"rbt12":600000,12"atividades":[13{"tipo":"comercio","receita":30000},14{"tipo":"servicos_advocacia","receita":20000},15],16})
Cobre todos os 5 anexos (6 faixas cada), cálculo do Fator R para Anexo III vs V, e valores fixos do MEI.
Geradores SPED / DFe
EFD ICMS/IPI (src/generators/efd_icms_ipi.py)
Layout versão 017. Gera todos os blocos obrigatórios:
Bloco
Conteúdo
0
Identificação do estabelecimento, participantes (0150), produtos (0200)
C
Registros NF-e (C100, C110, C170, C190)
E
Apuração ICMS (E110), apuração IPI (E520)
G
CIAP — crédito ICMS sobre ativo permanente (G001, G110)
H
Inventário físico (H005, H010)
K
Controle de produção e estoque (K100, K200) — indústrias
1from src.transmitters.receita_federal import TransmissorSPEDLocal, ValidadorArquivoSPED
23# Valida presença de registros obrigatórios e contagem de linhas4valido, erros = ValidadorArquivoSPED().validar(caminho_arquivo)56# Prepara arquivo para transmissão via PGE (programa Java)7resultado = TransmissorSPEDLocal("./output").preparar_efd_icms_ipi(caminho)
Observação: Os arquivos EFD ICMS/IPI, EFD Contribuições e ECD devem ser transmitidos pelo programa PGE/Validador da Receita Federal — não há upload HTTP direto para o SPED. Apenas a NF-e usa webservices SOAP diretos da SEFAZ.
Treinamento do Modelo
O TransformerFiscal é iniciado com pesos aleatórios. Use o TrainerFiscal para treiná-lo com o dataset built-in (173 exemplos rotulados) ou seus próprios dados.
python
1from src import PipelineFiscal
23pipeline = PipelineFiscal()45# Treinar com os exemplos built-in6historico = pipeline.treinar(7 epochs=50,# early stopping pode parar antes se val_loss parar de melhorar8 caminho_saida="./checkpoints/fiscal_llm.pt",9)1011# Carregar modelo treinado12pipeline = PipelineFiscal(caminho_modelo="./checkpoints/fiscal_llm.pt")1314# Avaliar acurácia por classe15from src.models.trainer import TrainerFiscal, EXEMPLOS_CLASSIFICACAO
16from src.models.fiscal_llm import TokenizadorFiscal
1718tokenizador = TokenizadorFiscal()19trainer = TrainerFiscal(pipeline.modelo, tokenizador)20metricas = trainer.avaliar_por_classe(EXEMPLOS_CLASSIFICACAO)21print(f"Acurácia geral: {metricas['acuracia_geral']:.1%}")22for classe, acc in metricas["acuracia_por_classe"].items():23print(f" {classe}: {acc:.1%}")
Sistema desenvolvido em Python 3.12 com PyTorch para o ecossistema fiscal brasileiro (SPED).117 testes · 20 obrigações cobertas · 6 tributos calculados