| #!/usr/bin/env python3 | |
| """Single-language summary smoke test (LLM).""" | |
| from __future__ import annotations | |
| import os, sys, pytest | |
| from pathlib import Path | |
| if os.getenv("VOXSUM_SKIP_LLM_TESTS") == "1": | |
| pytest.skip("LLM tests skipped (unset VOXSUM_SKIP_LLM_TESTS to run)", allow_module_level=True) | |
| ROOT = Path(__file__).resolve().parent.parent | |
| if str(ROOT) not in sys.path: | |
| sys.path.insert(0, str(ROOT)) | |
| from src.summarization import summarize_transcript # noqa: E402 | |
| from src.utils import available_gguf_llms # noqa: E402 | |
| def _select_model(): | |
| env_choice = os.getenv("VOXSUM_GGUF_MODEL") | |
| if env_choice and env_choice in available_gguf_llms: | |
| return env_choice | |
| for cand in ["Gemma-3-270M", "Gemma-3-3N-E2B", "Gemma-3-3N-E4B", "Gemma-3-1B"]: | |
| if cand in available_gguf_llms: | |
| return cand | |
| return next(iter(available_gguf_llms)) | |
| def test_single_language_summary(): | |
| model = _select_model() | |
| transcript = ("Bonjour à tous, aujourd'hui nous allons discuter de l'intelligence artificielle et " | |
| "de son impact sur la société moderne. L'IA transforme déjà nos usages.") | |
| parts = list(summarize_transcript(transcript, model, "Résumez ce transcript")) | |
| summary = "".join(parts) | |
| assert summary | |
| assert len(summary) < 2000 | |