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.
4.5 KiB
4.5 KiB
Скрипты для генерации тестов
Эта директория содержит утилиты для автоматизированной генерации и валидации тестовых данных с использованием Ollama.
generate_tests.py
Скрипт для генерации тестовых данных для AI бенчмарка через LLM.
Использование
# Генерировать 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: Валидировать тесты в указанной директории
Поддерживаемые категории
- translation - тесты переводов с английского на русский (LLM генерирует английский текст и его перевод)
- summarization - тесты пересказов текстов (LLM генерирует текст и его пересказ)
- codegen - тесты генерации Python кода (LLM генерирует задание и код)
Как работает генерация
Скрипт использует LLM для динамической генерации тестов:
- Translation: LLM создает английский текст, затем переводит его на русский
- Summarization: LLM генерирует текст о технологиях, затем создает его пересказ
- Codegen: LLM формулирует задачу по программированию, затем пишет решение
Примеры generated тестов
Translation
{
"prompt": "Translate the following English text to Russian: 'Hello, how are you today?'",
"expected": "Привет, как дела сегодня?"
}
Summarization
{
"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
{
"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