ai-benchmark/CONVERSION_GUIDE.md
second_constantine 8ef3a16e3a 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.
2026-01-22 20:11:52 +03:00

136 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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