Arquitetura¶
O ollabench corre cada caso contra cada modelo, pontua os outputs com checks declarativos, e resume num relatório ordenado.
flowchart LR
SU["suite.json<br/>(cases + checks)"] --> RUN["runSuite"]
M["--models a,b"] --> RUN
RUN -->|por modelo × caso| CLI["OllamaModelClient.generate"]
CLI --> OUT["output + latência"]
OUT --> SC["scoreCheck<br/>(contains · regex · jsonValid · maxLatencyMs · …)"]
SC --> REP["renderReport<br/>(tabela ordenada + matriz por caso)"]
Mapa de módulos¶
| Módulo | Responsabilidade |
|---|---|
suite.ts |
Carregar/validar uma suite JSON |
scorers.ts |
Tipos Check e scoreCheck (puro) |
model.ts |
Interface ModelClient + OllamaModelClient |
run.ts |
Correr casos × modelos, agregar resumos por modelo |
report.ts |
Renderizar a comparação em markdown |
Princípios de design¶
- Scoring determinístico — os checks são funções puras, por isso os resultados são reprodutíveis e testáveis.
- Erros não abortam — um modelo a falhar um caso é capturado, não lançado; a execução conclui.
- Offline — fala apenas com o teu servidor Ollama local; sem chaves.
- Extensível — novos tipos de check e backends de modelo encaixam atrás das mesmas interfaces.