stamatios
← Voltar ao feed
smevals: framework leve para rodar evals em modelos de qualquer tamanho
Open Source · IA & Modelos

smevals: framework leve para rodar evals em modelos de qualquer tamanho

resumo de ~3 min

O que é

smevals é um framework open-source (licença MIT, 145 estrelas no GitHub) criado pela Prime Radiant Inc. para rodar avaliações (evals) contra modelos de linguagem de qualquer tamanho. A instalação é feita via uv tool install smevals, pip install smevals ou diretamente com uvx smevals --help.

Conceitos principais

O framework organiza o trabalho em uma hierarquia clara:

  • Eval: coleção de Tasks que mede uma capacidade específica do modelo (ex.: text-to-SQL, gerar SVG, validar código contra especificação).
  • Suite: agrupamento opcional de Evals relacionados.
  • Task: exercício individual que o modelo deve completar.
  • Config: descreve o setup - modelo, parâmetros, system prompt, tools e o Runner a usar.
  • Run: registro imutável da execução de um Task contra um Config. É possível rodar o mesmo par múltiplas vezes (-n 5 completa até 5 runs bem-sucedidos).
  • Grader: sequência configurada de Checks aplicada a cada Run para produzir um Grade.
  • Checker: operação ou programa executável que implementa um tipo de verificação (ex.: contains, xml-valid, ou scripts customizados como renderizar SVG e pedir a um LLM que avalie a imagem).
  • Grade: resultado final com score (0.0–1.0), outcome (pass/fail), métricas, tags e notas.

Estrutura de um Eval

Um Eval é qualquer diretório com um eval.yaml e subdiretórios tasks/, configs/, graders/ e checkers/. O README traz um exemplo completo: pedir que o modelo escreva um haiku e verificar se a resposta tem exatamente três linhas não vazias.

Contrato do Runner e do Checker

O Runner é um executável que recebe tudo via variáveis de ambiente (SMEVALS_MODEL, SMEVALS_PROMPT, SMEVALS_RUN_DIR, etc.) e escreve a resposta do modelo na saída padrão. Exit code zero significa sucesso; non-zero indica erro de infraestrutura (não é nota sobre o modelo).

O Checker segue contrato semelhante: recebe o diretório do Run e a configuração do Check via variáveis de ambiente, sinaliza pass/fail pelo exit code e pode emitir um JSON com score, metrics, tags, notes e details.

Comandos CLI

Comando Função
smevals run Executa tasks contra modelos, com opção de grading automático (-g) e amostragem repetida (-n).
smevals grade Aplica um Grader a runs ainda não avaliados; --regrade descarta e recria grades.
smevals report Gera relatório markdown com leaderboard (média ± erro padrão, contagem de falhas, tags).
smevals serve Sobe uma UI web ao vivo (porta 7001 por padrão) que atualiza conforme novos runs chegam.
smevals build Gera um site estático autocontido com os resultados, agregável de múltiplos repositórios.

Design decisions

  • Runs são imutáveis; grading apenas adiciona arquivos sob grades/.
  • Cada Grade guarda um snapshot byte-a-byte do Grader usado, garantindo reprodutibilidade.
  • Runs falhos (erro de rede, crash do harness) nunca são avaliados nem contam para metas de amostragem.
  • Múltiplos Graders podem coexistir no mesmo Eval (ex.: um determinístico barato e um baseado em LLM-judge).