Комплексный бенчмарк для оценки способностей больших языковых моделей (LLM) вызывать инструменты (function calling). Проект объединяет оригинальные сценарии тестирования с официальным набором Berkeley Function Calling Leaderboard (BFCL V4), адаптированным для локального запуска.
Фреймворк предназначен для глубокого анализа того, как модели справляются с реальными задачами автоматизации:
--suite), языкам (--lang), уровням сложности (--levels) и температурам.В бенчмарк включено 53 уникальных теста, разделенных по сложности и происхождению:
| Набор (Suite) | Single-Turn | Multi-Turn | Всего | Особенности |
|---|---|---|---|---|
| Custom | 18 | 10 | 28 | Бизнес-логика, системные вызовы и цепочки (L1-L5) |
| BFCL-V4 | 19 | 6 | 25 | Академические тесты, API и веб-поиск (L1-L4) |
| Всего | 37 | 16 | 53 | Полное покрытие функционала |
# Клонирование репозитория
git clone https://github.com/MKreGGo/ru_tool_calling_tests.git
cd ru_tool_calling_tests
# Создание виртуального окружения
python -m venv venv
# Активация (Windows)
.\venv\Scripts\activate
# Активация (Linux/macOS)
# source venv/bin/activate
# Установка зависимостей
pip install -r requirements.txt
Убедитесь, что ваша модель доступна через API (например, LM Studio, vLLM, Ollama) по адресу http://localhost:8000/v1 (или укажите свой URL).
Базовый запуск (все тесты, En):
python main.py --model "qwen2.5-7b"
Русская версия BFCL тестов:
python main.py --model "mistral-nemo" --suite bfcl --lang ru
Полный прогон (3 попытки, разные температуры):
python main.py --model "llama-3.1-8b" --runs 3 --temperatures 0.1,0.5,0.8
main.py — Точка входа CLI.core/ — Конфигурация и API-клиент (OpenAI-compatible).benchmark/ — Движки для Single-turn и Multi-turn тестов.parsers/ — Парсеры форматов ответов (OpenAI, Anthropic, Hermes, Mistral, Raw JSON).tools/ — Реестр и схемы инструментов (с поддержкой RU/EN описаний) + утилиты анализа.tests/ — Определения тестовых сценариев и генераторы (Custom & BFCL).benchmark_logging/ — Логгеры и генератор финальных отчётов.| Аргумент | Описание | По умолчанию |
|---|---|---|
--model, -m | Обязательно. Имя модели как в API. | — |
--suite, -s | Набор тестов: all, custom, bfcl. | all |
--lang, -L | Язык промптов: en (Английский), ru (Русский). | en |
--levels, -l | Список уровней сложности. | 1,2,3,4,5 |
--api-url, -u | URL API сервера. | http://172.26.16.1:8000/v1 |
--format, -f | Формат ответа: auto, openai, anthropic, mistral, hermes, raw_json. | auto |
--runs, -r | Количество прогонов на каждую температуру. | 3 |
--temperatures, -t | Список температур через запятую. | 0.1,0.5,0.8 |
Разработан для проверки прикладных сценариев использования агентов.
Адаптация Berkeley Function Calling Leaderboard V4.
Для глубокого исследования результатов используйте встроенные инструменты:
tools/log_explorer.py: Интерактивный поиск, инспекция конкретных прогонов и сравнение двух разных логов.tools/analyze_logs.py: Сводная аналитика по группе логов.Бенчмарк предоставляет более 50 мок-инструментов (Mock Tools), полностью имитирующих реальные API:
read_file, list_directory, archive_files.send_email, create_ticket, schedule_meeting.search_database, analyze_investment, memory_store.get_weather, web_search, uber_request, stock_price.calculate_geometry, statistics, validation.Бенчмарк предоставляет детальную аналитику как в процессе выполнения, так и по завершении:
По завершении тестов выводится структурированный отчёт:
Пример реального вывода:
╭─ 📊 Benchmark Results ───────────────────────────────────────────────────────╮
│ LLM Tool Calling Benchmark Report │
│ Model: qwen2.5-7b-instruct │
│ Total Tests: 50 | Total Runs: 150 | Avg Time: 1250ms │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ 🔢 Token Usage ─────────────────────────────────────────────────────────────╮
│ Prompt Tokens: 145,200 │
│ Completion Tokens: 12,450 │
│ Reasoning Tokens: 5,100 │
│ Total Tokens: 162,750 │
╰──────────────────────────────────────────────────────────────────────────────╯
Custom Tests Results
┏━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ Level ┃ T=0.2 ┃ T=0.5 ┃ T=0.8 ┃ Overall ┃ Tokens ┃
┡━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩
│ L1 Simple │ 100% │ 100% │ 100% │ 100% │ 15,200 │
│ L2 Select │ 100% │ 90% │ 80% │ 90% │ 24,500 │
│ L3 Seq │ 80% │ 70% │ 60% │ 70% │ 42,100 │
│ L4 Par │ 70% │ 60% │ 50% │ 60% │ 35,000 │
│ L5 Chain │ 50% │ 40% │ 30% │ 40% │ 55,200 │
├────────────┼───────┼───────┼───────┼─────────┼────────┤
│ TOTAL │ 80% │ 72% │ 64% │ 72% │ 172K │
└────────────┴───────┴───────┴───────┴─────────┴────────┘
.jsonl)Каждый запуск сохраняется в файл logs/benchmark_{model}_{suite}_{lang}_{timestamp}.jsonl. Каждая строка — это полный JSON-объект записи:
.summary.md)Автоматически создаётся рядом с основным логом:
log_explorer.py)Для удобного анализа результатов, поиска ошибок и сравнения запусков используйте универсальный скрипт:
# Список всех доступных логов
python tools/log_explorer.py ls
# Сводная статистика по конкретному логу (можно использовать часть имени)
python tools/log_explorer.py summary "qwen3-4b"
# Просмотр списка проваленных тестов (с фильтрацией по уровню)
python tools/log_explorer.py failures "qwen3-4b" --level 3
# Детальная инспекция конкретного теста (промпты, ответы, ошибки валидации)
python tools/log_explorer.py inspect "qwen3-4b" BFCL-3.4 --run 0
# Сравнение двух запусков моделей
python tools/log_explorer.py compare "log1.jsonl" "log2.jsonl"
# Полнотекстовый поиск по промптам и ответам в логе
python tools/log_explorer.py search "qwen3-4b" "погода в Москве"
Created for deep analysis of LLM Agentic Capabilities.
Python
100.0%
Комплексный бенчмарк для оценки способностей больших языковых моделей (LLM) вызывать инструменты (function calling). Проект объединяет оригинальные сценарии тестирования с официальным набором Berkeley Function Calling Leaderboard (BFCL V4), адаптированным для локального запуска.
Фреймворк предназначен для глубокого анализа того, как модели справляются с реальными задачами автоматизации:
--suite), языкам (--lang), уровням сложности (--levels) и температурам.В бенчмарк включено 53 уникальных теста, разделенных по сложности и происхождению:
| Набор (Suite) | Single-Turn | Multi-Turn | Всего | Особенности |
|---|---|---|---|---|
| Custom | 18 | 10 | 28 | Бизнес-логика, системные вызовы и цепочки (L1-L5) |
| BFCL-V4 | 19 | 6 | 25 | Академические тесты, API и веб-поиск (L1-L4) |
| Всего | 37 | 16 | 53 | Полное покрытие функционала |
# Клонирование репозитория
git clone https://github.com/MKreGGo/ru_tool_calling_tests.git
cd ru_tool_calling_tests
# Создание виртуального окружения
python -m venv venv
# Активация (Windows)
.\venv\Scripts\activate
# Активация (Linux/macOS)
# source venv/bin/activate
# Установка зависимостей
pip install -r requirements.txt
Убедитесь, что ваша модель доступна через API (например, LM Studio, vLLM, Ollama) по адресу http://localhost:8000/v1 (или укажите свой URL).
Базовый запуск (все тесты, En):
python main.py --model "qwen2.5-7b"
Русская версия BFCL тестов:
python main.py --model "mistral-nemo" --suite bfcl --lang ru
Полный прогон (3 попытки, разные температуры):
python main.py --model "llama-3.1-8b" --runs 3 --temperatures 0.1,0.5,0.8
main.py — Точка входа CLI.core/ — Конфигурация и API-клиент (OpenAI-compatible).benchmark/ — Движки для Single-turn и Multi-turn тестов.parsers/ — Парсеры форматов ответов (OpenAI, Anthropic, Hermes, Mistral, Raw JSON).tools/ — Реестр и схемы инструментов (с поддержкой RU/EN описаний) + утилиты анализа.tests/ — Определения тестовых сценариев и генераторы (Custom & BFCL).benchmark_logging/ — Логгеры и генератор финальных отчётов.| Аргумент | Описание | По умолчанию |
|---|---|---|
--model, -m | Обязательно. Имя модели как в API. | — |
--suite, -s | Набор тестов: all, custom, bfcl. | all |
--lang, -L | Язык промптов: en (Английский), ru (Русский). | en |
--levels, -l | Список уровней сложности. | 1,2,3,4,5 |
--api-url, -u | URL API сервера. | http://172.26.16.1:8000/v1 |
--format, -f | Формат ответа: auto, openai, anthropic, mistral, hermes, raw_json. | auto |
--runs, -r | Количество прогонов на каждую температуру. | 3 |
--temperatures, -t | Список температур через запятую. | 0.1,0.5,0.8 |
Разработан для проверки прикладных сценариев использования агентов.
Адаптация Berkeley Function Calling Leaderboard V4.
Для глубокого исследования результатов используйте встроенные инструменты:
tools/log_explorer.py: Интерактивный поиск, инспекция конкретных прогонов и сравнение двух разных логов.tools/analyze_logs.py: Сводная аналитика по группе логов.Бенчмарк предоставляет более 50 мок-инструментов (Mock Tools), полностью имитирующих реальные API:
read_file, list_directory, archive_files.send_email, create_ticket, schedule_meeting.search_database, analyze_investment, memory_store.get_weather, web_search, uber_request, stock_price.calculate_geometry, statistics, validation.Бенчмарк предоставляет детальную аналитику как в процессе выполнения, так и по завершении:
По завершении тестов выводится структурированный отчёт:
Пример реального вывода:
╭─ 📊 Benchmark Results ───────────────────────────────────────────────────────╮
│ LLM Tool Calling Benchmark Report │
│ Model: qwen2.5-7b-instruct │
│ Total Tests: 50 | Total Runs: 150 | Avg Time: 1250ms │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ 🔢 Token Usage ─────────────────────────────────────────────────────────────╮
│ Prompt Tokens: 145,200 │
│ Completion Tokens: 12,450 │
│ Reasoning Tokens: 5,100 │
│ Total Tokens: 162,750 │
╰──────────────────────────────────────────────────────────────────────────────╯
Custom Tests Results
┏━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓
┃ Level ┃ T=0.2 ┃ T=0.5 ┃ T=0.8 ┃ Overall ┃ Tokens ┃
┡━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩
│ L1 Simple │ 100% │ 100% │ 100% │ 100% │ 15,200 │
│ L2 Select │ 100% │ 90% │ 80% │ 90% │ 24,500 │
│ L3 Seq │ 80% │ 70% │ 60% │ 70% │ 42,100 │
│ L4 Par │ 70% │ 60% │ 50% │ 60% │ 35,000 │
│ L5 Chain │ 50% │ 40% │ 30% │ 40% │ 55,200 │
├────────────┼───────┼───────┼───────┼─────────┼────────┤
│ TOTAL │ 80% │ 72% │ 64% │ 72% │ 172K │
└────────────┴───────┴───────┴───────┴─────────┴────────┘
.jsonl)Каждый запуск сохраняется в файл logs/benchmark_{model}_{suite}_{lang}_{timestamp}.jsonl. Каждая строка — это полный JSON-объект записи:
.summary.md)Автоматически создаётся рядом с основным логом:
log_explorer.py)Для удобного анализа результатов, поиска ошибок и сравнения запусков используйте универсальный скрипт:
# Список всех доступных логов
python tools/log_explorer.py ls
# Сводная статистика по конкретному логу (можно использовать часть имени)
python tools/log_explorer.py summary "qwen3-4b"
# Просмотр списка проваленных тестов (с фильтрацией по уровню)
python tools/log_explorer.py failures "qwen3-4b" --level 3
# Детальная инспекция конкретного теста (промпты, ответы, ошибки валидации)
python tools/log_explorer.py inspect "qwen3-4b" BFCL-3.4 --run 0
# Сравнение двух запусков моделей
python tools/log_explorer.py compare "log1.jsonl" "log2.jsonl"
# Полнотекстовый поиск по промптам и ответам в логе
python tools/log_explorer.py search "qwen3-4b" "погода в Москве"
Created for deep analysis of LLM Agentic Capabilities.
Python
100.0%