Live multi-provider model evaluation, scoring, reports, and Elo
Project description
LocalArena
Live multi-provider model evaluation, deterministic scoring, standalone HTML reports, and Elo standings.
pip install localarena
LocalArena calls the endpoints you explicitly configure. It does not bundle recorded answers, copy public leaderboard results, download models, or fall back to another provider.
Command line
Create a JSON configuration with one or more model targets and prompt tasks, then run the complete Cartesian product:
localarena run evaluation.json \
--output results.json \
--report report.html
Built-in profiles:
llamacpp—http://127.0.0.1:8080/v1ollama—http://127.0.0.1:11434/v1lmstudio—http://127.0.0.1:1234/v1openrouter—OPENROUTER_API_KEYopenai—OPENAI_API_KEYcustom— an explicit compatible base URL
localarena providers
localarena models ollama
localarena report results.json --output report.html
Config files use api_key_env and headers_env; literal API keys and
sensitive literal headers are rejected. Prompt and answer content is excluded
from results by default. Use --include-content only when it is safe to retain
that content.
See the complete configuration example and provider/task guide.
Python API
from localarena import (
EvaluationRunner,
NumericMatch,
ModelTarget,
PromptTask,
create_provider,
write_html_report,
)
target = ModelTarget(
name="local-model",
provider=create_provider("ollama"),
model="qwen3:0.6b",
max_tokens=64,
temperature=0,
)
task = PromptTask.from_text(
"arithmetic",
"Return only the result of 6 multiplied by 7.",
evaluator=NumericMatch(42),
)
run = EvaluationRunner(
[target],
[task],
max_concurrency=2,
).run(name="Live evaluation")
print(run.to_json())
write_html_report(run, "report.html")
Deterministic evaluators include exact, containment, regular-expression, JSON,
and numeric scoring. ModelJudge supports live rubric scoring with another
configured target. Generation failures and scoring failures remain individual
result rows instead of aborting the run.
Elo arena
The lower-level portable arena remains available:
from localarena import Arena, Result
arena = Arena(["model-a", "model-b"])
arena.record("model-a", "model-b", Result.LEFT)
for row in arena.standings():
print(row.rank, row.name, row.rating)
Arena and evaluation snapshots are JSON-safe. The npm package implements the same arena and evaluation run contracts.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file localarena-0.2.0.tar.gz.
File metadata
- Download URL: localarena-0.2.0.tar.gz
- Upload date:
- Size: 62.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a938515991c0df4fc4092776b3538606ed104a32de437d9843760d4d4747a47
|
|
| MD5 |
478c83290a47cb3730eb6f7d03f0f516
|
|
| BLAKE2b-256 |
f3752100ad0a099a452e7e7edef37e046dd4b0adc686f717374ab64e179767f4
|
File details
Details for the file localarena-0.2.0-py3-none-any.whl.
File metadata
- Download URL: localarena-0.2.0-py3-none-any.whl
- Upload date:
- Size: 54.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c664703aa9a841bf4bffc7ceeb566b81d17dea282f57a8f37dafb2932e3df61a
|
|
| MD5 |
8f7851b8c0d2622c3918d70fad466063
|
|
| BLAKE2b-256 |
406b20b462ba3eb44458e436837c0c533efda41f380b62cdc17d89b29d6696e7
|