Benchmarks de Qualidade de Dev e de Língua
Throughput não é qualidade. Um modelo pode fazer decode rápido e ainda assim ser inutilizável para
coding agêntico — ele trunca argumentos de tool call, entra em loop em erros ou seu
finetune quebrou silenciosamente outra língua. Esta página reporta resultados reais de
asiai bench --code e asiai bench --language: sinais determinísticos
(sem necessidade de juiz LLM para o núcleo) que medem se um modelo realmente
funciona, não quão rápido ele emite tokens.
Documento vivo. Os números são atualizados à medida que revisões de modelo, engines e templates mudam. Cada bloco nomeia o arquivo exato do modelo e a configuração de serving, de modo que um resultado seja reproduzível.
O que é medido
asiai bench --code (determinístico, sem juiz):
- tool-call — uma sessão agêntica de edição de arquivo de 8 turnos sob contexto
acumulado. Pontua a emissão de tool call, a validade JSON, a não-truncação, a ferramenta
correta, a conformidade com o schema e o bug de objeto vazio: o truncamento do template
|itemsque colapsa um arrayedit_file.editspara{}/[]. - tool-call-stress — o mesmo, mais difícil: contexto mais profundo, arrays de edição com 8–10 elementos, pressão de escaping de JSON (quebras de linha, aspas, contrabarras, unicode). Usado para distinguir os modelos que gabaritam a baseline.
- recovery — injeta um erro de ferramenta sintético no meio da sessão; pontua uma ação corretiva vs. um loop travado (reemitir a chamada que falha).
- thinking — disciplina de thinking-mode: nenhum vazamento de
<think>no conteúdo, saída não-vazia com um budget curto eenable_thinking=falserespeitado. - coding / coding-hard (juiz opcional) — tarefas de coding multi-turno
avaliadas de 1 a 5 por um juiz LLM em
--judge-url(qualquer endpoint compatível com OpenAI).
asiai bench --instruct (seguimento de instruções determinístico):
- verifiable — prompts de turno único no estilo IFEval com instruções verificáveis
programaticamente (contagens de palavras/frases/seções, keywords, somente JSON, caixa, sem
vírgulas, frase final, título em
<<>>, língua…). Reportado como acurácia strict/loose no nível de prompt e no nível de instrução — o formato do leaderboard público. Reimplementação asiai-nativa do paradigma IFEval (Zhou et al. 2023); nenhum código ou dado do IFEval é incorporado. - research-brief — uma tarefa agêntica: pesquisar vários tópicos via ferramentas, então escrever um briefing de várias seções, e então uma ação de ferramenta secundária (salvar) por último. O modelo produz o briefing primário, ou ele faz o trabalho de ferramenta e retorna apenas a confirmação do passo secundário? Um modelo pode gabaritar a confiabilidade de tool call e ainda pular o entregável principal — pontuado deterministicamente verificando que as seções exigidas aparecem após os turnos de ferramenta. order-control inverte a ordem (secundário primeiro) como diagnóstico.
asiai bench --language <code> (determinístico, 8 línguas):
- adherence — o modelo permanece na língua-alvo? (razão de palavras funcionais alvo vs. inglês para escritas latinas; razão de caracteres da escrita-alvo para ja/ko/zh).
- diacritics — prompts-armadilha cuja resposta correta deve conter tokens
acentuados específicos (
café,préféré); uma resposta com ASCII removido falha.
Todos os três modos são somente JSON e comparam entre modelos fazendo o diff da saída.
Exemplo trabalhado — Qwen3.6-35B-A3B vs Qwopus3.6-35B-A3B vs Qwen3.6-27B denso
Um finetune (Qwopus3.6, um finetune destilado de Opus do MoE Qwen3.6-35B-A3B)
vs. sua base, vs. um modelo denso com metade do tamanho. Mesmo llama.cpp, mesmo chat
template mantido constante (só o arquivo do modelo trocado), thinking desativado, 3
repetições. Apple Silicon M5 Max, High Power Mode.
Confiabilidade de tool call
| model · quant | tool-call clean | empty-object bug | under stress |
|---|---|---|---|
| Qwen3.6-35B-A3B base · Q4 / Q5 | 87.5% | 3 | 87.5% · 3 bugs |
| Qwopus3.6-35B-A3B · Q4 | 100% | 0 | 100% · 0 |
| Qwen3.6-27B dense · Q5 | 100% | 0 | 88.9% · 3 bugs |
- O MoE 35B base tem um defeito residual de tool call que o fix de template não
fecha completamente. Ele colapsa
edit_file.editsno bug de objeto vazio 3/3 em um turno de contexto profundo — em ambos os quants Q4 e Q5 (portanto é um comportamento de geração, não de quantização). O template da comunidadefroggeric, que corrige o bug|itemsem chamadas simples, não salva o MoE base no fundo do contexto. - O finetune destilado de Opus o repara completamente — 0 bugs, 100% clean — e em um quant mais baixo (Q4 vs Q5), o que torna a vitória mais forte.
- Sob stress, o finetune é o agente mais robusto que o denso 27B: o 27B racha (3 bugs de objeto vazio na suíte mais difícil) enquanto o finetune fica em 0. Eles empatam na baseline; a suíte de stress os separa.
Correção de código (tarefas difíceis avaliadas por LLM)
Em duas tarefas de coding multi-turno mais complicadas eles se dividem: em um rate
limiter de janela deslizante ambos tratam os edge cases de fronteira/eviction; em um avaliador de
expressões o denso 27B acerta a precedência de operadores (-2**2 == -4, menos unário como
um operador apropriado) enquanto o finetune não (ele incorpora o menos unário no
número → 4.0). Robustez de tool call e correção algorítmica são eixos
diferentes — meça ambos.
Retenção de língua
Rodando --language fr no finetune e em sua base, mesmo quant:
| model | adherence | diacritic traps | ASCII-stripped |
|---|---|---|---|
| Qwen3.6-35B-A3B base | 100% | 4/4 | 0 |
| Qwopus3.6-35B-A3B | 100% | 4/4 | 0 |
Zero regressão de francês. O finetune orientado a coding manteve o francês do modelo base intacto (adherence, diacríticos, sem remoção de ASCII) — um finetune específico de tarefa não custou outra língua, o que vale a pena verificar em vez de presumir.
Como ler isto
- Veredito primeiro, não velocidade primeiro. Estes são sinais de correção/confiabilidade. Para throughput, ver os Benchmarks em Modo Agêntico.
- Núcleo determinístico, juiz opcional. tool-call / recovery / thinking /
adherence / diacritics não precisam de juiz LLM — são reproduzíveis. As
notas de
coding/fluencysão avaliadas por LLM (subjetivas, opcionais). - Compare dentro de uma mudança controlada. O exemplo mantém o template constante e varia apenas o modelo, de modo que uma diferença seja do modelo, não do harness.
Metodologia e ressalvas
asiai bench --code/--language, thinking desativado (chat_template_kwargs.enable_thinking=false), um engine residente por vez.- A quant difere ao longo do exemplo (o finetune Q4 vs os modelos Qwen Q5): o bug de objeto vazio em destaque é dirigido por template/geração e foi confirmado em ambos os quants para a base, então o quant não explica a diferença — e o finetune vence a partir do quant mais baixo.
- O juiz de qualidade de código não é estritamente cego aqui (um modelo de fronteira leu os transcripts pelo mérito); os números determinísticos de tool-call/stress são objetivos.
- Recovery é sensível aos pesos, não um sinal cross-model limpo — o destaque é a confiabilidade de tool-call/objeto-vazio, que é estável ao longo das repetições.
Veja também: Benchmarks em Modo Agêntico · Metodologia de benchmark · Especificação de métricas.