feat: initial commit of arena-leaderboard-parser & omniroute benchmark tools

This commit is contained in:
2026-10-16 12:05:02 +00:00
commit f81b866e34
5 changed files with 818 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
# Arena.ai Leaderboard Parser & OmniRoute Benchmark
Парсер лидерборда [arena.ai](https://arena.ai/) (LMSYS Chatbot Arena) с 24-часовым кешированием и обходом Cloudflare WAF, а также инструмент бенчмаркинга и матчинга моделей со шлюзом **OmniRoute**.
## 🚀 Возможности
1. **Обход Cloudflare WAF / Anti-Bot**:
- Автоматически использует stealth-экстрактор (Firecrawl / keyless failover-кольцо) для гарантированного получения актуальных данных таблицы арены без блокировок HTTP 403.
- Fallback на сырой HTML при отсутствии WAF.
2. **Поддержка бордов**:
- `text` (416 моделей): Rank, Arena Score (ELO ±CI), Spread, Votes, Price, Context.
- `agent` (54 модели): Tool-calling метрики (Net Improvement, Confirmed Success, Steerability, Bash Recovery, Tool Hallucination, Sessions, Cost/Task).
3. **Интеграция с OmniRoute (`omniroute_arena_report.py`)**:
- Авторизация через Bearer `OMNIROUTE_API_KEY`.
- Liveness-проверка всех моделей провайдера коротким вызовом («2+2»).
- Интеллектуальный матчинг моделей гейтвея с мировым рейтингом LMSYS Arena (учёт reasoning-суффиксов `-high`, `-medium`, `-low`, `-thinking`).
- Формирование наглядного отчёта в Markdown.
---
## 📦 Структура репозитория
- `arena_leaderboard.py` — основной CLI и Python API парсера лидерборда.
- `omniroute_arena_report.py` — прогон моделей OmniRoute и генерация арена-отчёта.
- `arena_cache_refresh.py` — легковесный скрипт для запуска через cron (обновление кеша раз в сутки).
---
## 🛠 Использование
### CLI
```bash
# Топ-10 моделей текстового лидерборда
python3 arena_leaderboard.py
# Рейтинг конкретной модели
python3 arena_leaderboard.py glm-5.3-max
# Поиск моделей по подстроке
python3 arena_leaderboard.py --search gemini
# Принудительное обновление кеша мимо TTL
python3 arena_leaderboard.py --refresh
# Агентный лидерборд (tool-calling)
python3 arena_leaderboard.py --board agent
python3 arena_leaderboard.py --board agent "Claude Opus 5.5 (Max)"
```
### OmniRoute Liveness & Arena Match Report
```bash
# Проверить всех провайдеров / конкретного провайдера (например, agy, openrouter, zai)
python3 omniroute_arena_report.py --provider agy
python3 omniroute_arena_report.py --provider zai
```
### Python API
```python
from arena_leaderboard import get_leaderboard, get_model_rating, search_models
# Получить рейтинг модели
rating = get_model_rating("glm-5.3-max")
print(rating)
# Поиск
gemini_models = search_models("gemini-3.8")
```