# Скрипты для генерации тестов Эта директория содержит утилиты для автоматизированной генерации и валидации тестовых данных с использованием 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