from __future__ import annotations import unittest from models.llama_cpp_python_service import LlamaCppPythonService from models.model_catalog import load_model_catalog from models.service_factory import create_text_service class LlamaCppPythonServiceTest(unittest.TestCase): def test_factory_creates_llama_cpp_python_service(self) -> None: catalog = load_model_catalog("config/models.yaml") service = create_text_service(catalog["minicpm5_1b"], "llama-cpp-python") self.assertIsInstance(service, LlamaCppPythonService) def test_status_reports_missing_package_or_missing_model(self) -> None: status = LlamaCppPythonService.status() self.assertFalse(status.available) self.assertTrue( "not installed" in status.detail or "no GGUF model path" in status.detail ) def test_chat_returns_clear_unavailable_message(self) -> None: catalog = load_model_catalog("config/models.yaml") response = LlamaCppPythonService(catalog["minicpm5_1b"]).chat("", "Hello") self.assertIn("[llama-cpp-python unavailable]", response) def test_extracts_chat_completion_response(self) -> None: response = LlamaCppPythonService._extract_response( {"choices": [{"message": {"content": "hello"}}]} ) self.assertEqual(response, "hello") if __name__ == "__main__": unittest.main()