doc: add test generation instructions and update run.sh

Added documentation for test generation through Ollama, including new command-line arguments for `generate_tests.py` and updated `run.sh` script. Also added a new `gen` command to `run.sh` for generating tests via Ollama. This improves usability by providing clear instructions and automation for test generation.
This commit is contained in:
2026-01-17 02:40:38 +03:00
parent 5c17378ce4
commit f117c7b23c
11 changed files with 393 additions and 1 deletions

86
scripts/README.md Normal file
View File

@@ -0,0 +1,86 @@
# Скрипты для генерации тестов
Эта директория содержит утилиты для автоматизированной генерации и валидации тестовых данных с использованием Ollama.
## generate_tests.py
Скрипт для генерации тестовых данных для AI бенчмарка через LLM.
### Использование
```bash
# Генерировать 2 теста для перевода через Ollama
python scripts/generate_tests.py --count 2 --category translation --model llama3 --ollama-url http://localhost:11434
# Генерировать 1 тест для каждого типа
python scripts/generate_tests.py --count 1 --category all --model llama3 --ollama-url http://localhost:11434
# Генерировать 3 теста для пересказов
python scripts/generate_tests.py --count 3 --category summarization --model llama3 --ollama-url http://localhost:11434
# Валидировать существующие тесты
python scripts/generate_tests.py --validate tests/translation
```
### Аргументы
- `--count`: Количество тестов для генерации (по умолчанию: 1)
- `--category`: Категория тестов (translation, summarization, codegen, или all) (по умолчанию: all)
- `--model`: Название модели для генерации тестов (обязательный параметр, например: llama3)
- `--ollama-url`: URL подключения к Ollama серверу (обязательный параметр, например: http://localhost:11434)
- `--validate`: Валидировать тесты в указанной директории
### Поддерживаемые категории
1. **translation** - тесты переводов с английского на русский (LLM генерирует английский текст и его перевод)
2. **summarization** - тесты пересказов текстов (LLM генерирует текст и его пересказ)
3. **codegen** - тесты генерации Python кода (LLM генерирует задание и код)
### Как работает генерация
Скрипт использует LLM для динамической генерации тестов:
- **Translation**: LLM создает английский текст, затем переводит его на русский
- **Summarization**: LLM генерирует текст о технологиях, затем создает его пересказ
- **Codegen**: LLM формулирует задачу по программированию, затем пишет решение
### Примеры generated тестов
#### Translation
```json
{
"prompt": "Translate the following English text to Russian: 'Hello, how are you today?'",
"expected": "Привет, как дела сегодня?"
}
```
#### Summarization
```json
{
"prompt": "Summarize the following text in 1-2 sentences: 'The quick brown fox jumps over the lazy dog...'",
"expected": "A quick fox jumps over a lazy dog, surprising it. The fox keeps running while the dog barks."
}
```
#### Codegen
```json
{
"prompt": "Write a Python function that calculates the factorial of a number using recursion.",
"expected": "def factorial(n):\n if n == 0 or n == 1:\n return 1\n else:\n return n * factorial(n-1)"
}
```
### Валидация
Скрипт автоматически валидирует generated тесты:
- Проверяет наличие обязательных полей (`prompt`, `expected`)
- Проверяет, что значения являются строками
- Проверяет, что строки не пустые
- Поддерживает ручную валидацию существующих тестов через `--validate`
### Технические детали
- Скрипт использует ollama_client.py для подключения к Ollama серверу
- Каждый generated тест получает уникальный номер (test1.json, test2.json, и т.д.)
- Если тест с таким номером уже существует, используется следующий доступный номер
- Все тесты сохраняются в формате JSON с UTF-8 кодировкой
- Поддерживается любая модель, доступная в Ollama