feat: upd tests
This commit is contained in:
38
scripts/SUMMARIZATION_GENERATION.md
Normal file
38
scripts/SUMMARIZATION_GENERATION.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Генерация тестов пересказов из MongoDB
|
||||
|
||||
Этот скрипт автоматически генерирует тестовые данные для бенчмарка пересказов, извлекая статьи из MongoDB и создавая ожидаемые пересказы с помощью Ollama.
|
||||
|
||||
## Использование
|
||||
|
||||
```bash
|
||||
# Для одной записи
|
||||
python scripts/generate_summarization_from_mongo.py --record-id <ID_записи>
|
||||
|
||||
# Для нескольких записей из файла
|
||||
python scripts/generate_summarization_from_mongo.py --id-file ids.txt
|
||||
```
|
||||
|
||||
## Как это работает
|
||||
|
||||
1. **Извлечение данных**: Скрипт подключается к MongoDB кластеру и извлекает статьи из коллекции `rssNotification`
|
||||
2. **Генерация пересказов**: Использует Ollama с моделью `translategemma:4b` для генерации ожидаемых пересказов
|
||||
3. **Форматирование**: Сохраняет тесты в формате:
|
||||
```
|
||||
Текст статьи
|
||||
==============
|
||||
Ожидаемый пересказ
|
||||
```
|
||||
|
||||
## Конфигурация Ollama
|
||||
|
||||
- **URL**: `http://10.0.0.9:11434`
|
||||
- **Модель**: `translategemma:4b`
|
||||
- **Контекст**: 128000 токенов
|
||||
|
||||
## Обработка ошибок
|
||||
|
||||
Если Ollama недоступен или происходит ошибка, скрипт сохраняет пустой пересказ, обеспечивая обратную совместимость.
|
||||
|
||||
## Выходные файлы
|
||||
|
||||
Тесты сохраняются в `tests/summarization/` с именами файлов, соответствующими ID записей из MongoDB.
|
||||
@@ -19,6 +19,7 @@ from pymongo import MongoClient
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent))
|
||||
|
||||
from src.constants import TEST_SEPARATOR
|
||||
from src.models.ollama_client import OllamaClient
|
||||
|
||||
def sanitize_filename(filename: str) -> str:
|
||||
"""
|
||||
@@ -125,15 +126,32 @@ def generate_test_from_mongo_record(record_id: str, verbose: bool = True) -> boo
|
||||
# Генерируем пересказ через LLM (если доступно)
|
||||
expected_summary = ""
|
||||
try:
|
||||
# Пытаемся сгенерировать пересказ
|
||||
summary_prompt = f"""Summarize the following text in 1-2 sentences:
|
||||
"{article_text}"
|
||||
Provide only the summary, no additional text."""
|
||||
# Если Ollama доступен, можно было бы использовать его здесь
|
||||
# Для простоты оставляем пустым или можно добавить логику позже
|
||||
expected_summary = ""
|
||||
except:
|
||||
# Если генерация не удалась, оставляем пустым
|
||||
# Создаем клиент Ollama для генерации пересказа
|
||||
ollama_client = OllamaClient(base_url="http://10.0.0.9:11434")
|
||||
|
||||
# Загружаем промпт для пересказа
|
||||
with open('prompts/summarization.txt', 'r', encoding='utf-8') as f:
|
||||
summarization_prompt = f.read().strip()
|
||||
|
||||
# Формируем промпт с текстом статьи
|
||||
prompt = summarization_prompt.format(text=article_text)
|
||||
|
||||
# Генерация пересказа с использованием модели translategemma:4b
|
||||
# Контекст 128000 как указано в задаче
|
||||
expected_summary = ollama_client.generate(
|
||||
model="translategemma:4b",
|
||||
prompt=prompt,
|
||||
num_ctx=128000
|
||||
)
|
||||
|
||||
if verbose:
|
||||
print(f"🤖 Сгенерирован пересказ: {expected_summary[:200]}...")
|
||||
|
||||
except Exception as e:
|
||||
if verbose:
|
||||
print(f"⚠️ Не удалось сгенерировать пересказ через Ollama: {e}")
|
||||
print(" Будет использован пустой пересказ")
|
||||
# Если генерация не удалась, оставляем пустым (сохраняем обратную совместимость)
|
||||
expected_summary = ""
|
||||
|
||||
# Создаем директорию для сохранения теста (всегда в tests/summarization)
|
||||
|
||||
Reference in New Issue
Block a user