Instructions to use mangaba-ai/mangaba-reforma-tributaria-2b with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use mangaba-ai/mangaba-reforma-tributaria-2b with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir mangaba-reforma-tributaria-2b mangaba-ai/mangaba-reforma-tributaria-2b
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
mangaba-reforma-tributaria-2b
Adapter LoRA que especializa mlx-community/gemma-2-2b-it-4bit na Reforma Tributária do consumo no Brasil
— EC 132/2023, LC 214/2025, IBS, CBS e Imposto Seletivo.
Treinado 100% com fontes públicas oficiais, sem dataset sintético gerado por LLM:
| Fonte | O que entrou |
|---|---|
| Planalto (texto consolidado) | EC 132/2023 e LC 214/2025, artigo a artigo |
| Dados Abertos da Câmara dos Deputados | PEC 45/2019, PLP 68/2024, PLP 108/2024 e correlatas: ementa, situação e tramitações |
| Dados Abertos do Senado Federal | Matérias correspondentes: ementa, explicação e indexação |
Uso (MLX, Apple Silicon)
Dois cuidados que mudam completamente o resultado:
- O modelo base não aceita o papel
system— a instrução de sistema tem que ir no início do turno do usuário, que é como o dataset foi construído. Sem isso o adapter responde como o modelo base. - Use grounding: recupere os artigos relevantes e coloque-os no prompt. Sozinho, um 2B inventa o número do dispositivo com toda a confiança do mundo.
from huggingface_hub import snapshot_download
from mlx_lm import generate, load
from mlx_lm.sample_utils import make_logits_processors
SYSTEM = (
"Você é um assistente especialista na Reforma Tributária do consumo no Brasil "
"(EC 132/2023, LC 214/2025, IBS, CBS e Imposto Seletivo). Responda em português do Brasil, "
"de forma objetiva e sempre citando a norma e o artigo que fundamentam a resposta. "
"Se não houver base normativa para a resposta, diga isso explicitamente."
)
modelo, tok = load(
"mlx-community/gemma-2-2b-it-4bit",
adapter_path=snapshot_download("mangaba-ai/mangaba-reforma-tributaria-2b"), # --adapter-path exige diretório local
)
pergunta = "O que estabelece o Art. 112 da LC 214/2025?"
trechos = "..." # artigos recuperados do texto oficial (BM25, embeddings, o que preferir)
conteudo = f"{SYSTEM}\n\n### Trechos oficiais:\n{trechos}\n\n{pergunta}"
prompt = tok.apply_chat_template(
[{"role": "user", "content": conteudo}], add_generation_prompt=True, tokenize=False
)
print(generate(
modelo, tok, prompt=prompt, max_tokens=400,
logits_processors=make_logits_processors(repetition_penalty=1.1), # evita loops
))
Saída real dessa chamada:
"Art. 112. A devolução do IBS a que se refere o inciso II do caput deste artigo será gerida pelo Comitê Gestor do IBS, a quem competirá as atribuições previstas no art. 114 desta Lei Complementar, respeitadas as especificidades." (NR)
Fonte: LC 214/2025, Art. 112.
Dados de treino
- 1257 exemplos de treino, 69 de validação, 69 de teste
- Dataset publicado: https://huggingface.co/datasets/mangaba-ai/reforma-tributaria-instruct
- Quatro formatos: teor do dispositivo, citação inversa (dado o trecho, identificar o artigo), mapa temático (quais artigos tratam de X) e situação legislativa das proposições
Avaliação
30 exemplos do split de teste, geração gulosa (temperatura 0):
| Métrica | Base (sem fine-tuning) | Com adapter |
|---|---|---|
| Acerto do dispositivo citado | 0.2 | 0.5667 |
| Acerto da norma citada | 0.8667 | 0.6667 |
| Cobertura dos termos da referência | 0.1217 | 0.4821 |
- Acerto do dispositivo — a resposta cita o mesmo artigo da referência
- Acerto da norma — cita a norma correta (LC 214/2025 / EC 132/2023)
- Cobertura — fração dos termos relevantes da referência presentes na resposta
O acerto da norma cai de propósito visível: o modelo base escreve "LC 214/2025" em quase toda resposta porque o nome da norma aparece no próprio prompt — acerta a norma e erra o artigo. É uma métrica fácil de saturar. As duas que medem conhecimento real, dispositivo e cobertura, sobem cerca de 3x e 4x.
Treino
LoRA rank 16 (dropout 0.05) nas projeções de atenção das últimas 8 camadas, batch 1, lr 1e-5, gradient checkpointing. 1,97 M de parâmetros treináveis (0,075% do modelo).
800 iterações no total, em duas etapas: 600 com max_seq_length 2048 e mais 200 com 1536,
depois de um estouro de memória da GPU (Metal, Insufficient Memory) em 16 GB por volta da
iteração 640. Os pesos publicados são o checkpoint da iteração 600, que teve o menor
val loss: 3,481 → 0,800.
Limitações
É um modelo de 2 bilhões de parâmetros. O fine-tuning ensinou como citar — formato, vocabulário e o hábito de apontar norma e artigo. Ele não memorizou os 678 artigos.
- Sem grounding, ele alucina o dispositivo: perguntado sobre o Art. 112 sem contexto, respondeu com um texto de outra lei, e entrou em loop de repetição.
- Com grounding, acerta a citação nas perguntas diretas por artigo, mas ainda pode errar o número em perguntas abertas — num teste, atribuiu o cashback ao "Art. 476-A" em vez do Art. 112.
- Use
repetition_penaltyem torno de 1.1.
Sempre confira o dispositivo citado no texto oficial. Isto é ferramenta de consulta, não parecer, e não substitui orientação de profissional habilitado. O texto normativo é o vigente na data da coleta.
Projeto de origem
reforma-tributaria-ft — pipeline completo e reprodutível: coleta nas APIs oficiais,
construção do dataset, LoRA, avaliação e uma API compatível com OpenAI que faz grounding
(recupera os artigos por BM25 e injeta no prompt) e consulta ao vivo a situação das
proposições na Câmara.
Quantized
Model tree for mangaba-ai/mangaba-reforma-tributaria-2b
Base model
mlx-community/gemma-2-2b-it-4bit