Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9944c01
Добавлен новый файл solver.mdc с описанием правил для решателя. Созда…
dog-64 Mar 30, 2025
1750cfc
Обновлены команды в README.md для использования нового исполняемого ф…
dog-64 Mar 30, 2025
7e0a572
Обновлены тесты в help_spec.rb для улучшения проверки функциональност…
dog-64 Mar 30, 2025
bbf837a
Удалены устаревшие модули LogLevels и Logger, которые были заменены н…
dog-64 Mar 30, 2025
4c1c23c
Добавлен класс Model::ToPath для преобразования имен моделей в формат…
dog-64 Mar 30, 2025
e022028
Обновлен генератор отчетов: добавлены новые форматы вывода, улучшена …
dog-64 Mar 30, 2025
d1fb323
Обновлен генератор отчетов: изменены параметры для генерации отчетов,…
dog-64 Mar 30, 2025
5e956da
Удалены модули генерации отчетов и связанные с ними файлы, включая CL…
dog-64 Mar 30, 2025
9d31806
Добавлена новая структура для генерации отчетов: создан модуль report…
dog-64 Mar 30, 2025
1d9d389
Добавлены новые шаблоны отчетов: full.html.erb и total.html.erb для г…
dog-64 Mar 30, 2025
6936cb0
Обновлен генератор отчетов: добавлены методы для преобразования имен …
dog-64 Mar 30, 2025
e71db0f
Добавлены новые тесты для метода Report.cli, включая проверку вызова …
dog-64 Mar 30, 2025
1f56299
Удален устаревший модуль LogLevels, который был объединен с модулем L…
dog-64 Mar 30, 2025
60e5937
Добавлен модуль Assert с методами для проверки условий и генерации ош…
dog-64 Mar 30, 2025
0b3b03b
Добавлен новый файл run_helper.rb для имитации запуска через файл run…
dog-64 Mar 30, 2025
1f5b4fe
rubocop -A
dog-64 Mar 30, 2025
5e5e21d
Обновлен README.md: добавлена команда для создания пустых файлов с ко…
dog-64 Mar 30, 2025
a434b1e
add - qwen_qwen3-235b-a22b - yml
dog-64 May 1, 2025
109ffe5
draft - qwen_qwen3-235b-a22b - не всё
dog-64 May 2, 2025
e0a8fc1
done - qwen_qwen3-235b-a22b - не всё
dog-64 May 2, 2025
22a5e09
add - .env.sample - пример .env
dog-64 May 2, 2025
d2a1386
draft - qwen3_235b - оч медленно
dog-64 May 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file modified .DS_Store
Binary file not shown.
4 changes: 4 additions & 0 deletions .cursor/rules/solver.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Решатель

- должен принимать на вход имя модели
- так как это записано в models.yml в поле name
5 changes: 5 additions & 0 deletions .env.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# API ключ для OpenRouter
OPENROUTER_API_KEY='sk-or-v1-........................'

# Модель AI (опционально)
AI_MODEL=google/gemini-flash-1.5
192 changes: 116 additions & 76 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,29 @@
Что полезно для оценки качества работы LLM именно для Ruby и промптов на русском.

## Рейтинг

Результаты тестирования моделей:
- google_gemini_2_0_flash_001: 87%
- openai_o3_mini_high: 85%
- deepseek_deepseek_chat_v3_0324: 82%
- deepseek_deepseek_chat_free: 79%
- google_gemini_2_0_flash_lite_001: 79%
- deepseek_deepseek_chat: 77%
- google_gemma_3_27b_it: 77%
- openai_gpt_4o_mini: 77%
- qwen_qwen_2_5_coder_32b_instruct: 75%
- mistralai_codestral_2501: 75%
- google_gemini_flash_1_5: 75%
- meta_llama_llama_3_1_70b_instruct: 69%
- mistralai_mistral_small_3_1_24b_instruct: 67%
- qwen_qwen2_5_vl_3b_instruct_free: 41%
- microsoft_phi_4_multimodal_instruct: 35%
- ollama_codellama: 31%
- ollama_codellama:13b: 27%
- ollama_llama3_2: 25%
- ollama_codellama:34b: 17%
- google_gemini_2_5_pro_exp_03_25_free: 1%
- google/gemini-2-5-pro-exp-03-25:free: 1/1 (100%)
- google/gemini-2-0-flash-001: 141/163 (87%)
- openai/o3-mini-high: 139/164 (85%)
- deepseek/deepseek-chat-v3-0324: 134/164 (82%)
- deepseek/deepseek-chat:free: 128/163 (79%)
- google/gemini-2-0-flash-lite-001: 128/163 (79%)
- google/gemini-2.5-pro-exp-03-25:free: 7/9 (78%)
- deepseek/deepseek-chat: 125/163 (77%)
- google/gemma-3-27b-it: 127/164 (77%)
- openai/gpt-4o-mini: 126/164 (77%)
- qwen/qwen-2-5-coder-32b-instruct: 123/164 (75%)
- mistralai/codestral-2501: 123/164 (75%)
- google/gemini-flash-1-5: 123/164 (75%)
- meta/llama-llama-3-1-70b-instruct: 113/164 (69%)
- mistralai/mistral-small-3-1-24b-instruct: 110/164 (67%)
- qwen/qwen3-235b-a22b: 101/164 (62%)
- rekaai/reka-flash-3:free: 95/164 (58%)
- qwen/qwen2-5-vl-3b-instruct:free: 68/164 (41%)
- microsoft/phi-4-multimodal-instruct: 58/164 (35%)
- ollama/codellama-: 51/164 (31%)
- ollama/codellama-13b: 44/164 (27%)
- ollama/llama3-2: 41/163 (25%)
- ollama/codellama-34b: 28/164 (17%)

## Возможности

Expand Down Expand Up @@ -75,6 +76,76 @@ OLLAMA_BASE_URL=http://localhost:11434

## Использование

### Как добавить модель

#### В их список

В файл `models.ym` добавляем описание:
```yml
qwen_qwen3-235b-a22b:
name: qwen/qwen3-235b-a22b
provider: openrouter.ai
note: https://openrouter.ai/qwen/qwen3-235b-a22b
done: false
```

- `done` - boolean - обработана ли модель
- `date` - дата добавления модели на openrouter.ai, со страницы `https://openrouter.ai/google/gemini-2.5-flash-preview`
- `name` - имя модели с той же страницы

#### Решаем моделью

```shell
./bin/solver solve tasks --model "qwen/qwen3-235b-a22b" --keep-existing --create_empty_on_timeout
...
Обработка задачи 97 (162/164)
Модель 1/1: google_gemini-2_5-flash-preview (google/gemini-2.5-flash-preview)
Обработка задачи 98 (163/164)
Модель 1/1: google_gemini-2_5-flash-preview (google/gemini-2.5-flash-preview)
Обработка задачи 99 (164/164)
Модель 1/1: google_gemini-2_5-flash-preview (google/gemini-2.5-flash-preview)
Обработка задач завершена
```

#### Запускаем решения

Все:
```shell
./bin/run
...
Результаты тестирования моделей:
- google_gemini_2_0_flash_001: 86%
- openai_o3_mini_high: 85%
- deepseek_deepseek_chat_v3_0324: 82%
- google_gemini_2_5_flash_preview: 82%
- deepseek_deepseek_chat_free: 78%
- google_gemini_2_0_flash_lite_001: 78%
- google_gemma_3_27b_it: 77%
- openai_gpt_4o_mini: 77%
- deepseek_deepseek_chat: 76%
- qwen_qwen_2_5_coder_32b_instruct: 75%
- mistralai_codestral_2501: 75%
- google_gemini_flash_1_5: 75%
- meta_llama_llama_3_1_70b_instruct: 69%
- mistralai_mistral_small_3_1_24b_instruct: 67%
- qwen_qwen2_5_vl_3b_instruct_free: 41%
- microsoft_phi_4_multimodal_instruct: 35%
- ollama_codellama: 31%
- ollama_codellama_13b: 27%
- ollama_llama3_2: 25%
- ollama_codellama_34b: 17%
```

Только по модели:
```shell
./bin/run --model google_gemini_2_5_flash_preview
...
Результаты тестирования моделей:
- google_gemini_2_5_flash_preview: 82%
...
```
#### Кладем отчет в README.md

### Запуск тестов

```bash
Expand All @@ -101,19 +172,22 @@ OLLAMA_BASE_URL=http://localhost:11434

```bash
# Решение всех задач конкретной моделью
./bin/human_eval_solver solve tasks --model "MODEL_NAME"
./bin/solver solve tasks --model "MODEL_NAME"

# Решение конкретной задачи
./bin/human_eval_solver solve tasks --task t1 --model "MODEL_NAME"
./bin/solver solve tasks --task t1 --model "MODEL_NAME"

# Сохранение промежуточных результатов
./bin/human_eval_solver solve tasks --model "MODEL_NAME" --keep-existing
./bin/solver solve tasks --model "MODEL_NAME" --keep-existing

# Включение подробного логирования
./bin/human_eval_solver solve tasks --model "MODEL_NAME" --log-level debug
./bin/solver solve tasks --model "MODEL_NAME" --log-level debug

# Создание пустых файлов с комментарием при ошибке или таймауте
./bin/solver solve tasks --model "MODEL_NAME" --create-empty-on-timeout

# Вывод всех доступных команд и опций
./bin/human_eval_solver
./bin/solver
```

Доступные модели:
Expand Down Expand Up @@ -171,7 +245,7 @@ OLLAMA_BASE_URL=http://localhost:11434

4. Теперь вы можете использовать модель для решения задач:
```bash
./bin/human_eval_solver solve tasks --model "ollama_<model_id>" --log-level debug
./bin/solver solve tasks --model "ollama_<model_id>" --log-level debug
```

5. Для тестирования модели вы можете запустить её напрямую:
Expand All @@ -182,7 +256,7 @@ OLLAMA_BASE_URL=http://localhost:11434

6. Для отладки и анализа ответов модели используйте команду с подробным логированием:
```bash
./bin/human_eval_solver solve tasks --task t2 --model "ollama_codellama" --log-level debug
./bin/solver solve tasks --task t2 --model "ollama_codellama" --log-level debug
```
Эта команда покажет:
- Полный текст запроса к модели
Expand All @@ -195,66 +269,32 @@ OLLAMA_BASE_URL=http://localhost:11434
- Модель может добавлять лишние комментарии или пояснения
- Могут быть проблемы с извлечением кода из ответа

### Генерация отчетов

```bash
# Генерация отчетов (HTML и Markdown)
./bin/reports

# Генерация только HTML отчета
./bin/reports generate --format html

# Генерация отчетов в указанную директорию
./bin/reports generate --output-dir my_reports

# Просмотр доступных команд
./bin/reports help
```

Скрипт создает отчеты в указанной директории (по умолчанию `reports/`):
- `report.html` - интерактивный HTML отчет с таблицами и стилями
- `report.md` - отчет в формате Markdown
- `style.css` - стили для HTML отчета

Отчеты содержат:
- Общую статистику успешности моделей
- Детальные результаты по каждой задаче
- Цветовую индикацию успешных и неуспешных тестов

## Структура проекта

- `tasks/` - задачи и решения
- `t*.md` - описания задач
- `t*-assert.rb` - тесты для задач
- `t*-MODEL_NAME.rb` - решения от моделей
- `lib/` - исходный код
- `human_eval/` - основные компоненты
- `solver.rb` - основной класс для работы с моделями
- `solver_cli.rb` - интерфейс командной строки
- `solver/` - основной компонент для решения задач
- `runner.rb` - основной класс для работы с моделями
- `cli.rb` - интерфейс командной строки
- `help.rb` - модуль справки для CLI
- `human_eval/` - вспомогательные компоненты
- `logger.rb` - модуль логирования
- `test_runner/` - система тестирования
- `runner.rb` - запуск тестов
- `assert.rb` - модуль для тестовых утверждений
- `human_eval/` - основные компоненты
- `reports/` - генерация отчетов
- `generator.rb` - основной генератор отчетов
- `cli.rb` - интерфейс командной строки для отчетов
- `formatters/` - форматтеры отчетов
- `base.rb` - базовый класс форматтера
- `html.rb` - HTML форматтер
- `markdown.rb` - Markdown форматтер
- `runner/` - система тестирования
- `runner.rb` - запуск тестов
- `report/` - генерация отчетов
- `generator.rb` - генератор отчетов в разных форматах
- `runner.rb` - загрузка данных и запуск генерации
- `cli.rb` - интерфейс командной строки для отчетов
- `config/` - конфигурационные файлы
- `models.yml` - конфигурация моделей
- `rules/` - правила и промпты для моделей
- `bin/` - исполняемые скрипты
- `human_eval_solver` - работа с моделями
- `run_tests` - запуск тестов
- `reports` - генерация отчетов
- `reports/` - сгенерированные отчеты
- `report.html` - HTML отчет
- `report.md` - Markdown отчет
- `style.css` - стили для HTML отчета
- `report` - генерация отчетов

## Лицензия

MIT
MIT
4 changes: 2 additions & 2 deletions bin/generate_report
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash

# Инициализируем rbenv и запускаем через bundle exec
eval "$(rbenv init -)" && bundle exec ruby "$(dirname "$0")/generate_report_helper.rb" "$@"
# Инициализируем rbenv и запускаем через report
eval "$(rbenv init -)" && "$(dirname "$0")/report" "$@"
12 changes: 0 additions & 12 deletions bin/generate_report_helper.rb

This file was deleted.

4 changes: 0 additions & 4 deletions bin/human_eval_solver

This file was deleted.

6 changes: 0 additions & 6 deletions bin/human_eval_solver_helper.rb

This file was deleted.

6 changes: 6 additions & 0 deletions bin/report
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

# Инициализируем rbenv и запускаем report_helper
cd "$(dirname "$0")/.." && \
eval "$(rbenv init -)" && \
bundle exec ruby -I lib bin/report_helper "$@"
9 changes: 9 additions & 0 deletions bin/report_helper
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env ruby

require 'bundler/setup'
require_relative '../lib/report'

# Имитируем запуск через файл report вместо report_helper
$0 = File.join(File.dirname($0), 'report')

Report::CLI.start(ARGV)
6 changes: 0 additions & 6 deletions bin/reports

This file was deleted.

5 changes: 0 additions & 5 deletions bin/run.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,4 @@
require "bundler/setup"
require_relative "../lib/runner/cli"

# Добавляем опцию --report-total по умолчанию только в production окружении
# unless ENV['RACK_ENV'] == 'test'
# ARGV << "--report-total" unless ARGV.any? { |arg| arg.include?("report-total") }
# end

Runner::CLI.start(ARGV)
9 changes: 9 additions & 0 deletions bin/run_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env ruby

require "bundler/setup"
require_relative "../lib/runner/cli"

# Имитируем запуск через файл run вместо run_helper
$0 = File.join(File.dirname($0), 'run')

Runner::CLI.start(ARGV)
10 changes: 10 additions & 0 deletions bin/solver
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

# Ensure rbenv is loaded if it exists
if [ -d "$HOME/.rbenv" ]; then
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
fi

# Run the Ruby helper script with Bundler
bundle exec ruby "$(dirname "$0")/solver_helper.rb" "$@"
6 changes: 6 additions & 0 deletions bin/solver_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env ruby

require 'bundler/setup'
require_relative '../lib/solver'

Solver::CLI.start(ARGV)
7 changes: 7 additions & 0 deletions config/models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ openrouter:
note: https://openrouter.ai/google/gemini-2.5-pro-exp-03-25:free
done: true

qwen_qwen3-235b-a22b:
name: qwen/qwen3-235b-a22b
provider: openrouter.ai
note: https://openrouter.ai/qwen/qwen3-235b-a22b
done: true
text: очень долго думает часто упираясь в таймауты

deepseek_deepseek-chat-v3-0324:
name: deepseek/deepseek-chat-v3-0324
provider: openrouter.ai
Expand Down
6 changes: 2 additions & 4 deletions lib/human_eval/assert.rb
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
require_relative 'logger'
require_relative 'log_levels'
require_relative '../logger'

module HumanEval
# Модуль Assert предоставляет набор методов для проверки условий и генерации ошибок
# при невыполнении этих условий. Используется для написания тестов и проверки корректности
# работы кода.
module Assert
include Logger
include LogLevels
include ::Logger

# Исключение, генерируемое при нарушении условия проверки
# Содержит информацию об ожидаемом и фактическом значениях,
Expand Down
Loading
Loading