Uso
git clone https://github.com/jaredpalmer/kev && cd kevuv sync --extra serveuv run --extra serve python -m kev.serve --run felhen-ai/saracura-ptbr-4b --port 8009
import requests r = requests.post("http://localhost:8009/v1/systemone", json={ "state": "Requer informações ao Ministro da Saúde sobre a distribuição de vacinas nos municípios do interior.", "questions": { "tema": {"type": "choice", "instructions": "Qual é o tema desta proposição legislativa?", "criteria": {"saude": "Saúde", "educacao": "Educação", "economia": "Economia"}}, "urgente": {"type": "noul", "instructions": "A proposição pede resposta em prazo determinado?"}, }})print(r.json()["answers"])
Contexto: o modelo foi treinado e avaliado com estado de até 2.048 tokens. O kev.benchmark usa 384 por padrão e rejeita itens maiores; para reproduzir os números abaixo, avalie com training_context(2048) (script kev_bench_long.py no repositório do Saracura).
Resultados
Acurácia balanceada (média do acerto por classe) no benchmark PT-BR v1, split de teste, ordem das opções embaralhada por item.
Table with columns: Tarefa, Opções, TF-IDF + reg. logística (uma por tarefa), Saracura PT-BR v0.1 (322M), Saracura PT-BR 4B| Tarefa | Opções | TF-IDF + reg. logística (uma por tarefa) | Saracura PT-BR v0.1 (322M) | Saracura PT-BR 4B |
|---|
| Tema de proposição da Câmara | 24 | 59,7% | 59,2% | 61,0% |
| Veracidade de alegação (FACTCK.BR) | 3 | 43,2% | 44,8% | 48,3% |
| O trecho responde à pergunta (FaQuAD) | sim/não | 56,5% | 89,9% | 93,8% |
| Área de jurisprudência do TCU | 10 | 74,5% | 68,8% | 76,0% |
| Alvo da ofensa (OLID-BR) |
Em uma tarefa fora do treino (FAQ do Banco Central, escolher o início da resposta correta entre 4 trechos, 373 perguntas): v0.1 61,1%, baseline de sobreposição de palavras 71,0%, 4B 96,8%. Em anúncios de marketplace (12 segmentos, dados internos): v0.1 86,8%, 4B 87,2%.
Para referência, o caiovicentino1/Eikos-4B (MIT, modelo de decisão aberto treinado em inglês e português) fez 60,7% de média neste benchmark, rodado com o código de inferência publicado pelo autor (research/eval_eikos.py). O Eikos não viu estas fontes no treino; os dois Saracura viram o split de treino delas. A comparação justa do Eikos é com modelos sem ajuste: Laya multilíngue 39,2%, Qwen/Qwen3.8-27B cerca de 66% na versão anterior do benchmark.
Decision Index (inglês)
No Decision Index 0.3, ranking de modelos de decisão em inglês, o Saracura PT-BR 4B fez 37,96 no índice público (37 benchmarks), igual ao checkpoint de partida, jaredpalmer/kev-4b na revisão 6cfce5c (Kev 4B r10 na tabela, 37,95). O ajuste em português não custou desempenho em inglês. Execução completa com o kit oficial (153.397 requisições, todas respondidas), autoavaliada e submetida aos mantenedores (resultados, submissão); o número só entra na tabela depois da revisão deles, que rodam também a parte privada.
Velocidade: cerca de 100 a 170 ms por decisão em chamadas individuais numa RTX 5090 em bf16 com textos longos, sem kernels otimizados; o servidor do Kev faz cache de prefixo para várias perguntas sobre o mesmo estado.
Triagem de e-mail real (avaliação humana)
Avaliação em 200 e-mails reais da caixa de um executivo da Felhen (julho a outubro de 2026), sorteados e rotulados por ele: tipo do e-mail (8 categorias, como cliente, cobrança, administrativo e notificação), se o e-mail exige uma ação de quem recebe e a urgência. Os textos são privados e não são publicados; só os números. Acerto simples, com a acurácia balanceada entre parênteses.
Table with columns: Tipo, Exige ação, Urgência | Tipo | Exige ação | Urgência |
|---|
| Saracura PT-BR 4B (este modelo), sem ajuste | 62,0% (57,2%) | 74,5% (72,0%) | 68,5% (51,5%) |
| Edição privada, ajustada com 485 outros e-mails revisados da mesma caixa | 91,0% (84,6%) | 93,5% (93,6%) | 89,5% (89,1%) |
A edição ajustada não é publicada porque foi treinada com e-mails de terceiros. A tabela mostra o que uma rodada de ajuste com os dados do próprio usuário entrega: o modelo publicado, sozinho, não chega lá.
Comentários de redes sociais (avaliação humana)
Avaliação em 200 comentários públicos do YouTube sorteados de vídeos de cobertura das eleições de outubro de 2026 (CNN Brasil, GloboNews, Folha, Jovem Pan e Band), rotulados por uma pessoa sem ver as respostas dos modelos; um comentário incompreensível foi descartado (n = 199). Nas respostas, o rótulo considera o comentário anterior. Acerto simples, com a acurácia balanceada entre parênteses.
Table with columns: Sentimento, Assunto, Alvo da crítica, Xinga ou insulta | Sentimento | Assunto | Alvo da crítica | Xinga ou insulta |
|---|
| Saracura PT-BR 4B (este modelo), só o comentário | 75,9% (67,4%) | 73,4% (50,2%) | 59,3% (42,0%) | 84,9% (78,4%) |
| Este modelo, com o comentário anterior junto (respostas) | 75,9% (63,8%) | 79,4% (56,4%) | 57,3% (43,1%) | 84,9% (80,6%) |
Saracura PT-BR 322M (felhen-ai/saracura-ptbr-v0), só o comentário | 68,3% (48,1%) | 51,8% (52,6%) |
Os modelos acertam bem o sentimento negativo e a política, e erram o que é específico do domínio: comentários sobre a emissora e a cobertura (cerca de 1 em 3) e a quem a crítica se dirige. É o tipo de categoria que pede ajuste com rótulos do próprio usuário.
Calibração da confiança
Temperatura por tipo de pergunta, ajustada nas duas avaliações humanas acima (e-mail e comentários) com validação cruzada em duas metades: a probabilidade calibrada é proporcional a p^(1/T). ECE = erro de calibração em 10 faixas. Arquivo: calibration.json.
Table with columns: Tipo de pergunta, Temperatura, ECE sem → com, Confiança ≥ 0,8: cobertura a acerto, Confiança ≥ 0,9: cobertura a acerto| Tipo de pergunta | Temperatura | ECE sem → com | Confiança ≥ 0,8: cobertura a acerto | Confiança ≥ 0,9: cobertura a acerto |
|---|
Escolha (choice) | 2,05 | 0,183 → 0,043 | 36,0% a 90,0% | 17,0% a 95,3% |
Sim/não (noul) | 2,4 | 0,108 → 0,058 | 54,1% a 88,4% | 29,1% a 90,5% |
O modelo sem ajuste é confiante demais (temperatura acima de 2). Mesmo calibrado, poucas respostas chegam a 0,9 de confiança: para automatizar com limiar, ajuste com os seus dados antes (na edição ajustada da triagem de e-mail, confiança calibrada ≥ 0,9 cobre cerca de 80% das respostas com 96% a 98% de acerto).
Treino
55.998 requisições (90.403 perguntas: 56.996 choice, 23.541 noul, 9.866 score), 2 épocas, LoRA rank 16 em todas as projeções, cabeça de ponteiro de 256 dimensões, lr 2e-5, acumulação 8, estado até 2.048 tokens, inicialização de jaredpalmer/kev-4b (--init_from), 14.000 passos numa RTX 5090 em cerca de 21 horas. Receita e trainer são os publicados pelo Kev, sem alteração.
Table with columns: Fonte, Licença / origem| Fonte | Licença / origem |
|---|
| Benchmark PT-BR v1, split de treino (OLID-BR, FACTCK.BR, FaQuAD-NLI, SciELO, JurisTCU, Câmara dos Deputados) | CC BY 4.0 / MIT / dado público, ver card do benchmark |
telepatia-ai/typed-decisions-pt-es, config pt | Apache-2.0 |
| Anúncios de autopeças de marketplace brasileiro, 12 segmentos | dados internos, não redistribuídos; rótulos de Qwen/Qwen3.8-27B |
| Documentos internos da Felhen (tipo, área, estado), excluídos os sensíveis | dados internos, não redistribuídos |
| Perguntas variadas sobre textos reais das fontes acima | perguntas e respostas de Qwen/Qwen3.8-27B (local) e Qwen/Qwen3.5-397B-A17B (via OpenRouter) |
Mesmo conjunto de dados do v0.1. Todas as descrições de opções, rótulos sintéticos e textos sintéticos vêm de modelos de pesos abertos sob Apache-2.0; nenhuma saída de modelo hospedado com restrição de uso entrou no treino.
Limitações
- O teste do benchmark vem das mesmas fontes do treino. Os números medem o quanto o modelo aprende essas tarefas, não generalização para qualquer tarefa em português. A tarefa do Banco Central é a única fora do treino.
- Veracidade de alegação (FACTCK.BR) continua perto do acaso balanceado (48%): três classes desbalanceadas e pouco sinal no texto. Não use para checagem de fatos.
- Precisa de GPU (ou Apple Silicon via MLX, pelo servidor do Kev); para CPU, use o v0.1.
- A confiança reportada não foi calibrada nos seus dados. Antes de usar como limiar de automação, calibre e avalie numa amostra sua.
- Não avaliado para decisões de alto risco. Parte dos dados de treino contém linguagem ofensiva (OLID-BR).
Atribuição
Base Qwen/Qwen3.5-4B-Base (Apache-2.0, Qwen Team). Receita, trainer, servidor e checkpoint inicial do Kev (Apache-2.0, Jared Palmer), jaredpalmer/kev-4b, por sua vez treinado em conjuntos públicos listados no card dele. Benchmark e fontes de dados citados no card do felhen-ai/ptbr-typed-decisions-bench.
Projeto Saracura, da Felhen.