feat: upd tests

This commit is contained in:
2026-01-26 17:59:25 +03:00
parent 432c292462
commit ec038053ec
221 changed files with 293 additions and 9 deletions

View 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.

View File

@@ -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)