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:
135
CONVERSION_GUIDE.md
Normal file
135
CONVERSION_GUIDE.md
Normal file
@@ -0,0 +1,135 @@
|
||||
# Руководство по конвертации тестов из JSON в TXT формат
|
||||
|
||||
## Обзор изменений
|
||||
|
||||
В рамках улучшения наглядности тестовых данных все тесты были конвертированы из JSON формата в TXT формат с использованием разделителя.
|
||||
|
||||
## Новый формат TXT файлов
|
||||
|
||||
### Структура файла
|
||||
|
||||
Каждый TXT файл содержит два раздела, разделенных константой:
|
||||
|
||||
```
|
||||
prompt
|
||||
==============
|
||||
expected
|
||||
```
|
||||
|
||||
Где:
|
||||
- `prompt` - текст запроса для модели
|
||||
- `expected` - ожидаемый ответ от модели
|
||||
- `==============` - разделитель (константа `TEST_SEPARATOR`)
|
||||
|
||||
### Пример
|
||||
|
||||
**test1.txt:**
|
||||
```
|
||||
Translate the following English text to Russian: 'Hello, how are you?'
|
||||
==============
|
||||
Привет, как дела?
|
||||
```
|
||||
|
||||
## Измененные файлы
|
||||
|
||||
### 1. Скрипты генерации тестов
|
||||
|
||||
**Файл:** `scripts/generate_tests.py`
|
||||
|
||||
**Изменения:**
|
||||
- Теперь генерирует TXT файлы вместо JSON
|
||||
- Использует константу `TEST_SEPARATOR` для разделения prompt и expected
|
||||
- Валидация теперь проверяет TXT файлы на наличие разделителя
|
||||
|
||||
### 2. Бенчмарки
|
||||
|
||||
**Файлы:**
|
||||
- `src/benchmarks/translation.py`
|
||||
- `src/benchmarks/summarization.py`
|
||||
- `src/benchmarks/codegen.py`
|
||||
|
||||
**Изменения:**
|
||||
- Все бенчмарки теперь читают TXT файлы вместо JSON
|
||||
- Используют константу `TEST_SEPARATOR` для парсинга файлов
|
||||
- Логика загрузки тестов обновлена для работы с TXT форматом
|
||||
|
||||
### 3. Базовый класс бенчмарка
|
||||
|
||||
**Файл:** `src/benchmarks/base.py`
|
||||
|
||||
**Изменения:**
|
||||
- Добавлена константа `TEST_SEPARATOR`
|
||||
- Обновлены импорты для поддержки нового формата
|
||||
|
||||
### 4. Скрипт конвертации
|
||||
|
||||
**Файл:** `scripts/convert_json_to_txt.py` (новый)
|
||||
|
||||
**Назначение:**
|
||||
- Конвертирует существующие JSON тесты в новый TXT формат
|
||||
- Сохраняет все тесты с тем же именем, но расширением .txt
|
||||
- Использует константу `TEST_SEPARATOR` для разделения данных
|
||||
|
||||
## Как использовать
|
||||
|
||||
### 1. Конвертация существующих тестов
|
||||
|
||||
```bash
|
||||
python scripts/convert_json_to_txt.py tests/translation
|
||||
python scripts/convert_json_to_txt.py tests/summarization
|
||||
python scripts/convert_json_to_txt.py tests/codegen
|
||||
```
|
||||
|
||||
### 2. Генерация новых тестов
|
||||
|
||||
```bash
|
||||
python scripts/generate_tests.py --count 5 --category translation --model second_constantine/t-lite-it-1.0:7b --ollama-url http://localhost:11434
|
||||
```
|
||||
|
||||
### 3. Валидация тестов
|
||||
|
||||
```bash
|
||||
python scripts/generate_tests.py --validate tests/translation
|
||||
```
|
||||
|
||||
### 4. Запуск бенчмарков
|
||||
|
||||
```bash
|
||||
python src/main.py -m second_constantine/t-lite-it-1.0:7b -u http://localhost:11434 -b translation
|
||||
```
|
||||
|
||||
## Преимущества нового формата
|
||||
|
||||
1. **Наглядность**: Легче читать и понимать содержимое тестов
|
||||
2. **Простота редактирования**: Можно редактировать тесты в любом текстовом редакторе
|
||||
3. **Контроль версий**: Лучше отслеживаются изменения в тестах в системах контроля версий
|
||||
4. **Универсальность**: Формат более универсальный и понятный
|
||||
|
||||
## Технические детали
|
||||
|
||||
### Константа TEST_SEPARATOR
|
||||
|
||||
```python
|
||||
TEST_SEPARATOR = "\n==============\n"
|
||||
```
|
||||
|
||||
Эта константа используется во всех частях системы для:
|
||||
- Генерации TXT файлов
|
||||
- Парсинга TXT файлов
|
||||
- Валидации тестов
|
||||
|
||||
### Импорты
|
||||
|
||||
Все файлы, использующие `TEST_SEPARATOR`, импортируют его из:
|
||||
- `src/constants.py` (для скриптов)
|
||||
- `constants.py` (для бенчмарков, так как они запускаются из src/)
|
||||
|
||||
## Миграция
|
||||
|
||||
1. Запустите скрипт конвертации для всех существующих тестов
|
||||
2. Удалите старые JSON файлы (по желанию)
|
||||
3. Обновите любые внешние скрипты, которые могут ссылаться на старый формат
|
||||
|
||||
## Поддержка
|
||||
|
||||
При возникновении вопросов или проблем обратитесь к разработчикам проекта.
|
||||
Reference in New Issue
Block a user