language:
- pt
language_bcp47: - pt-BR
license: apache-2.0
task_categories: - text-generation
size_categories: - n<1K
pretty_name: IFEval-pt (instruções verificáveis em português do Brasil)
tags: - instruction-following
- portuguese
- ifeval
- evaluation
configs: - config_name: default
data_files: ifeval_pt_input_data.jsonl
IFEval-pt
Benchmark de seguimento de instrução em português do Brasil, com 308 itens cuja
verificação é feita por código — sem juiz LLM, sem GPU, sem opinião. Reproduzir custa
alguns minutos de CPU.
O que ele tem de diferente
Já existem versões do IFEval em português: amalia-llm/IFEval-mt-pt (541 itens, pt-PT),Polygl0t/IFEval-PT (300), a fatia pt do facebook/Multi-IF (524) eakawaai/Portuguese-IFEval (618). Todas são tradução do conjunto em inglês — medem,
portanto, inglês vertido para o português.
Este aqui testa restrições que só existem na língua portuguesa e que uma tradução não
poderia conter:
| Restrição | Exemplo de instrução |
|---|---|
ptbr:crase / ptbr:sem_crase |
"Use crase pelo menos uma vez" |
ptbr:mesoclise |
"Use uma mesóclise, como em 'dar-lhe-ei'" |
ptbr:proclise |
"Use próclise depois de palavra atrativa, como em 'não me diga'" |
ptbr:enclise |
"Use ênclise, como em 'diga-me'" |
ptbr:porque_ambos |
"Use 'por que' e 'porque' na mesma resposta" |
ptbr:cedilha |
"Use pelo menos três palavras com ç" |
ptbr:sem_til |
"Escreva sem usar nenhum til (ã, õ)" |
ptbr:so_voce |
"Trate o leitor por 'você' e nunca por 'tu'" |
ptbr:sem_diacritico |
"Escreva sem nenhum acento ou cedilha" |
ptbr:sem_digito |
"Escreva os números por extenso" |
ptbr:agudo_e_circunflexo |
"Use uma palavra com agudo e uma com circunflexo" |
A de próclise é a mais direta: a regra gramatical é o próprio teste — próclise é
obrigatória depois de palavra atrativa, então o verificador procura exatamente
atrativo + pronome + verbo.
Além dessas, há as restrições genéricas herdadas do IFEval original (número de frases,
número de palavras, palavra obrigatória, palavra proibida, começar/terminar com, caixa
baixa).
Formato
Mesmas quatro colunas do google/IFEval, para ser compatível de imediato com quem já
avalia o original:
{"key": 11,
"prompt": "Explique o que é reciclagem. Use crase pelo menos uma vez na resposta.",
"instruction_id_list": ["ptbr:crase"],
"kwargs": [{}]}
308 itens = 14 tarefas-base × 22 restrições. O número foi escolhido por itens por
restrição (14), não pelo total: é o que permite reportar taxa por restrição com
intervalo de confiança utilizável (±5,5 pontos a 95%, contra ±9,5 se fossem 100 itens).
Duas notas, como no original
- estrita: a restrição vale no texto exatamente como veio.
- frouxa: vale depois de remover marcação de markdown, aspas e espaço sobrando —
modelo pequeno erra por embrulhar a resposta, não por desobedecer.
Como rodar
python ifeval_pt.py --url http://SEU-ENDPOINT/v1 --modelo NOME --saida resultado.json
Qualquer endpoint compatível com a API da OpenAI serve. O script está no mesmo
repositório e não depende de nada além da biblioteca padrão.
Resultado de referência
| Modelo | Estrita | Frouxa |
|---|---|---|
| Pocket-LM 269M (pré-instrução) | 32,8% | 32,8% |
O padrão que aparece nesse resultado vale como aviso a quem for usar o benchmark:
restrições passivas ("não use crase") são satisfeitas por acidente quando a resposta é
curta — 12/14 — enquanto as ativas ("use crase") falham — 1/14. Ao comparar modelos,
olhar a tabela por restrição, não só a média.
Armadilhas de medição já tratadas
- Abreviações comuns ("Sr.", "etc.", "p.ex.") não contam como fim de frase — sem isso a
contagem infla e o modelo é reprovado por erro do medidor. - Palavra proibida é detectada com e sem acento: pedir para não usar "você" pega
também "voce". - Contagem de palavras aceita caracteres acentuados.
Licença e citação
Apache 2.0. Se usar, cite este repositório. Construído como parte do projeto Pocket-LM,
um modelo de linguagem pt-BR de 269M treinado do zero para rodar offline no celular.