feat: initial commit of arena-leaderboard-parser & omniroute benchmark tools
This commit is contained in:
@@ -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")
|
||||
```
|
||||
Reference in New Issue
Block a user