feat: add MongoDB test generation and update dependencies
- Added pymongo==3.13.0 to requirements.txt for MongoDB connectivity - Implemented generate_summarization_from_mongo.py script to generate summarization tests from MongoDB - Updated run.sh to support 'gen-mongo' command for MongoDB test generation - Enhanced scripts/README.md with documentation for new MongoDB functionality - Improved help text in run.sh to clarify available commands and usage examples ``` This commit adds MongoDB integration for test generation and updates the documentation and scripts accordingly.
This commit is contained in:
@@ -1,86 +1,69 @@
|
||||
# Скрипты для генерации тестов
|
||||
|
||||
Эта директория содержит утилиты для автоматизированной генерации и валидации тестовых данных с использованием Ollama.
|
||||
Эта директория содержит скрипты для генерации тестовых данных для AI бенчмарка.
|
||||
|
||||
## generate_tests.py
|
||||
## Доступные скрипты
|
||||
|
||||
Скрипт для генерации тестовых данных для AI бенчмарка через LLM.
|
||||
### 1. `generate_tests.py`
|
||||
|
||||
### Использование
|
||||
Скрипт для генерации тестовых данных через LLM (Ollama).
|
||||
|
||||
**Функциональность:**
|
||||
- Генерация тестов для переводов (translation)
|
||||
- Генерация тестов для пересказов (summarization)
|
||||
- Генерация тестов для генерации кода (codegen)
|
||||
- Валидация generated тестов
|
||||
|
||||
**Использование:**
|
||||
```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
|
||||
python scripts/generate_tests.py --count 2 --category translation --model second_constantine/t-lite-it-1.0:7b --ollama-url http://10.0.0.4:11434
|
||||
```
|
||||
|
||||
### Аргументы
|
||||
|
||||
**Параметры:**
|
||||
- `--count`: Количество тестов для генерации (по умолчанию: 1)
|
||||
- `--category`: Категория тестов (translation, summarization, codegen, или all) (по умолчанию: all)
|
||||
- `--model`: Название модели для генерации тестов (обязательный параметр, например: llama3)
|
||||
- `--ollama-url`: URL подключения к Ollama серверу (обязательный параметр, например: http://localhost:11434)
|
||||
- `--model`: Название модели для генерации тестов (обязательный параметр)
|
||||
- `--ollama-url`: URL подключения к Ollama серверу (обязательный параметр)
|
||||
- `--validate`: Валидировать тесты в указанной директории
|
||||
|
||||
### Поддерживаемые категории
|
||||
### 2. `generate_summarization_from_mongo.py`
|
||||
|
||||
1. **translation** - тесты переводов с английского на русский (LLM генерирует английский текст и его перевод)
|
||||
2. **summarization** - тесты пересказов текстов (LLM генерирует текст и его пересказ)
|
||||
3. **codegen** - тесты генерации Python кода (LLM генерирует задание и код)
|
||||
Скрипт для генерации тестов пересказов из MongoDB.
|
||||
|
||||
### Как работает генерация
|
||||
**Функциональность:**
|
||||
- Извлекает текст статьи из коллекции `rssNotification` (поле `.meta.topicContent`)
|
||||
- Генерирует тестовые данные в формате JSON для бенчмарка AI
|
||||
- Валидирует generated тесты
|
||||
|
||||
Скрипт использует LLM для динамической генерации тестов:
|
||||
- **Translation**: LLM создает английский текст, затем переводит его на русский
|
||||
- **Summarization**: LLM генерирует текст о технологиях, затем создает его пересказ
|
||||
- **Codegen**: LLM формулирует задачу по программированию, затем пишет решение
|
||||
**Использование:**
|
||||
```bash
|
||||
python scripts/generate_summarization_from_mongo.py --record-id 507f1f77bcf86cd799439011
|
||||
```
|
||||
|
||||
### Примеры generated тестов
|
||||
**Параметры:**
|
||||
- `--record-id`: ID записи в MongoDB (обязательный параметр)
|
||||
- `--output-dir`: Директория для сохранения generated тестов (по умолчанию: tests/summarization)
|
||||
|
||||
#### Translation
|
||||
**Требования:**
|
||||
- Доступ к MongoDB кластеру (10.0.0.3, 10.0.0.4, 10.0.0.5)
|
||||
- Установленный пакет `pymongo` (автоматически устанавливается при первом запуске)
|
||||
|
||||
**Формат generated тестов:**
|
||||
```json
|
||||
{
|
||||
"prompt": "Translate the following English text to Russian: 'Hello, how are you today?'",
|
||||
"expected": "Привет, как дела сегодня?"
|
||||
"prompt": "Summarize the following text in 1-2 sentences: 'Текст статьи из MongoDB'",
|
||||
"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."
|
||||
}
|
||||
**Примечание:** Поле "expected" будет пустым, так как ожидаемый результат нужно будет сгенерировать отдельно через LLM или вручную.
|
||||
|
||||
## Установка зависимостей
|
||||
|
||||
Для работы скриптов требуются следующие зависимости:
|
||||
|
||||
```bash
|
||||
pip install pymongo
|
||||
```
|
||||
|
||||
#### 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
|
||||
Все зависимости указаны в файле `requirements.txt` в корне проекта.
|
||||
|
||||
Reference in New Issue
Block a user