LLMstats:每 3 小时自动评测 OpenRouter、Groq、Mistral 共 47 个免费模型
Saif658/LLMstats
LLMstats 每约 3 小时自动评测 47 个免费层模型,覆盖 OpenRouter 的 23 个、Groq 的 10 个和 Mistral Experiment 层的 14 个,结果发布到公开的交互式仪表盘。
Real-time benchmarking of free-tier models from OpenRouter, Groq, and Mistral — automated roughly every 3 hours, zero infrastructure.
🌐 saif658.github.io/LLMstats — live, public, refreshes roughly every 3 hours
Forked from the architecture of NIMStats, rebuilt to compare three OpenAI-compatible providers side-by-side.
✨ What is LLMstats?
LLMstats automatically benchmarks 47 free-tier models roughly every 3 hours — 23 served by OpenRouter (the unified router, 11 upstream providers), 10 by Groq (the LPU cloud), and 14 by Mistral (Experiment tier) — and publishes the results to a live, interactive dashboard. No servers, no subscriptions — just fork the repo, drop in three API keys, and go.
| 🏎️ Every ~3h | 📊 Interactive Charts | 🔁 Zero Infra | 🔀 Multi-Provider |
|---|---|---|---|
| GitHub Actions cron | Speed, throughput, reliability | Static site + free CI/CD | OpenRouter ↔ Groq ↔ Mistral comparisons |
⚡ Quick Start
A working dashboard in under 5 minutes.
1. Fork & clone
git clone https://github.com/Saif658/LLMstats.git
cd LLMstats2. Get free API keys
| Provider | Where to get it |
|---|---|
| OpenRouter | openrouter.ai/keys — sign up, generate a key |
| Groq | console.groq.com/keys — sign up, generate a key |
| Mistral | console.mistral.ai/api-keys — sign up, generate a key (La Plateforme / Experiment tier) |
3. Add secrets
In your forked repo: Settings → Secrets and variables → Actions → New repository secret
| Name | Value |
|---|---|
OPENROUTER_API_KEY |
Your OpenRouter API key |
GROQ_API_KEY |
Your Groq API key |
MISTRAL_API_KEY |
Your Mistral API key |
4. Enable GitHub Pages
Settings → Pages → Build from "GitHub Actions".
5. Run your first benchmark
Actions → Benchmark OpenRouter + Groq + Mistral Models → Run workflow.
The dashboard auto-refreshes roughly every 3 hours after that. ✨
📊 Dashboard
| Tab | What you get |
|---|---|
| 📊 Overview | 5 KPI cards · success-rate trend · top-10 speed & throughput bars · per-model reliability pills |
| 🏆 Leaderboard | Composite score · sortable columns · trend indicators · provider chips (OpenRouter vs Groq vs Mistral) |
| 🔬 Explorer | Per-model deep dive · response time history · error breakdown · availability heatmap |
| ⏱ Timeline | Filterable run history · expandable run cards with full per-model detail |
| ⚔️ Compare | Head-to-head overlay · win-rate stats · side-by-side metric comparison |
🤖 Benchmarked models (free tier)
47 models across 3 gateways, 14+ upstream providers
🟣 OpenRouter · 23 models · 11 upstream providers
Upstream
Model
Note
OpenRouter
openrouter/freeOR's own free flagship
OpenRouter
openrouter/owl-alphaOR preview alpha
OpenAI
openai/gpt-oss-120b:freeOpen-source 120B
OpenAI
openai/gpt-oss-20b:freeOpen-source 20B
Meta
meta-llama/llama-3.3-70b-instruct:freeLarge general-purpose
Meta
meta-llama/llama-3.2-3b-instruct:freeLightweight Llama
NVIDIA
nvidia/nemotron-3-ultra-550b-a55b:free550B MoE flagship
NVIDIA
nvidia/nemotron-3-super-120b-a12b:free120B MoE super
NVIDIA
nvidia/nemotron-3-nano-30b-a3b:freeCompact MoE
NVIDIA
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:freeCompact reasoning
NVIDIA
nvidia/nemotron-nano-12b-v2-vl:freeVision-language
NVIDIA
nvidia/nemotron-nano-9b-v2:freeCompact 9B
NVIDIA
nvidia/nemotron-3.5-content-safety:freeContent safety guard
Qwen
qwen/qwen3-coder:freeQwen 3 coding
Qwen
qwen/qwen3-next-80b-a3b-instruct:freeQwen 3 80B MoE
Google
google/gemma-4-26b-a4b-it:freeGemma 4 mid-size
Nous
nousresearch/hermes-3-llama-3.1-405b:freeHermes 3 405B
Nex AGI
nex-agi/nex-n2-pro:freeNex N2 Pro
Poolside
poolside/laguna-m.1:freeLaguna m.1
Poolside
poolside/laguna-xs.2:freeLaguna xs.2
Cohere
cohere/north-mini-code:freeCohere North mini-code
Liquid
liquid/lfm-2.5-1.2b-instruct:freeLiquid LFM 2.5 1.2B
Liquid
liquid/lfm-2.5-1.2b-thinking:freeLiquid LFM 2.5 1.2B thinking
Cognitive Computations
cognitivecomputations/dolphin-mistral-24b-venice-edition:freeDolphin Mistral 24B Venice
🟠 Groq · 10 chat models
Model
Note
llama-3.1-8b-instantUltra-low latency
meta-llama/llama-4-scout-17b-16e-instructLlama 4 Scout MoE
qwen/qwen3-32bQwen 3 flagship
qwen/qwen3.6-27bQwen 3.6 mid-size
openai/gpt-oss-120bOpen-source 120B
openai/gpt-oss-20bOpen-source 20B
openai/gpt-oss-safeguard-20bSafety-guard 20B
groq/compoundGroq compound agentic
groq/compound-miniGroq compound-mini agentic
allam-2-7bAllam (small MoE)
🔵 Mistral · 14 chat models (Experiment tier)
Model
Note
mistral-large-latestMistral Large flagship
mistral-medium-latestMistral Medium
mistral-small-latestMistral Small
mistral-tiny-latestMistral Tiny
ministral-8b-latestMinistral 8B
ministral-3b-latestMinistral 3B
magistral-medium-latestMagistral medium
magistral-small-latestMagistral small
codestral-latestCode-specialized
devstral-latestDeveloper agent
devstral-small-latestDeveloper agent small
open-mistral-7bOpen 7B
open-mixtral-8x7bOpen MoE 8×7B
open-mixtral-8x22bOpen MoE 8×22B
🏗️ How it works
┌─── GitHub Actions (every ~3h) ────────────────────────────────────────────┐
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Job 1 — Group A │ │ Job 2 — Group B │ in parallel │
│ │ 25 models (mixed) │ │ 22 models (mixed) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
│ └──────────────┬───────────────┘ │
│ ┌────────▼────────┐ │
│ │ Merge + commit │ → benchmark/history.db + docs/history.db │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
┌───────────▼──────────┐
│ Static Dashboard │ GitHub Pages
│ (sql.js client) │
└──────────────────────┘
Parallel matrix ≈ 50% faster ⚡
🛠️ Customization
Change the promptEdit PROMPT in benchmark/test_models.py:
PROMPT = "Your custom prompt here"Add or remove models
Edit OPENROUTER_FREE_MODELS, GROQ_MODELS, or MISTRAL_MODELS in benchmark/test_models.py. The lists get split roughly in half between group1 and group2 jobs.
Edit .github/workflows/benchmark.yml:
- cron: '0 */3 * * *' # every 3 hours (default) - cron: '0 */1 * * *' # every hour - cron: '0 0 */6 * *' # every 6 hoursRun locally
# Serve the dashboard from the repo root (serves docs/index.html + docs/history.db) python3 -m http.server 8000 # Open http://localhost:8000/docs/ # Run benchmarks manually (requires API keys as env vars) export OPENROUTER_API_KEY=... export GROQ_API_KEY=... export MISTRAL_API_KEY=... python3 benchmark/test_models.py # all models MODEL_GROUP=group1 python3 benchmark/test_models.py # one half
📦 Data storage
benchmark/history.db is a SQLite database persisted in the repo. The browser loads it via sql.js (WebAssembly) and queries it entirely client-side. benchmark/results*.json are temporary per-job artifacts that never get committed (.gitignored). On every merge the workflow mirrors the latest benchmark/history.db to docs/history.db next to the dashboard.
Schema:
runs (id, timestamp, prompt, success_count, total_models, fastest_model, fastest_time)
model_results (run_id, model, provider, success, error, response_time, tokens_generated, total_tokens, response)
Results are pruned to the most recent 720 runs to keep history.db from growing unbounded.
Benchmark parameters: temperature: 0.7 · top_p: 0.9 · max_tokens: 500 · OpenAI-compatible chat completions API.
🤝 Contributing
PRs and ideas welcome:
- 🆕 Add new free-tier models from each provider
- 📊 New chart types or dashboard widgets
- 🐛 Bug fixes and perf improvements
- 📖 Docs / translations
Inspired by NIMStats · ⚡ Powered by GitHub Actions
来源:GitHub · github.com