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:
2026-01-22 20:11:52 +03:00
parent f117c7b23c
commit 8ef3a16e3a
41 changed files with 728 additions and 164 deletions

135
CONVERSION_GUIDE.md Normal file
View 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. Обновите любые внешние скрипты, которые могут ссылаться на старый формат
## Поддержка
При возникновении вопросов или проблем обратитесь к разработчикам проекта.