From 761a431c55ee4e1c2f41203f5456895858f9a1a7 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sun, 19 Jul 2026 17:22:33 -0600 Subject: [PATCH] Use manual context size if set --- frigate/genai/plugins/llama_cpp.py | 2 +- frigate/test/test_genai_providers.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/frigate/genai/plugins/llama_cpp.py b/frigate/genai/plugins/llama_cpp.py index af3ecc9b18..a217e0d898 100644 --- a/frigate/genai/plugins/llama_cpp.py +++ b/frigate/genai/plugins/llama_cpp.py @@ -192,7 +192,7 @@ class LlamaCppClient(GenAIClient): logger.info( "llama.cpp model '%s' initialized — context: %s, vision: %s, audio: %s, tools: %s, reasoning: %s", configured_model, - self._context_size or "unknown", + self.get_context_size(), self._supports_vision, self._supports_audio, self._supports_tools, diff --git a/frigate/test/test_genai_providers.py b/frigate/test/test_genai_providers.py index d73d632f0a..5352a81e25 100644 --- a/frigate/test/test_genai_providers.py +++ b/frigate/test/test_genai_providers.py @@ -491,6 +491,34 @@ class TestLlamaCppProvider(unittest.TestCase): final = _final_message(self._run_with_lines(client, lines, MULTIMODAL_MESSAGES)) self.assertEqual(final["content"], "ok") + def _validated_client(self, server_context_size, provider_options=None): + """Build a client as if the server reported the given context size.""" + cfg = GenAIConfig( + provider="llamacpp", + model="m", + base_url="http://localhost:9999", + provider_options=provider_options or {}, + ) + info = { + "context_size": server_context_size, + "supports_vision": False, + "supports_audio": False, + "supports_tools": False, + "supports_reasoning": False, + "media_marker": "<__media__>", + } + cls = PROVIDERS[GenAIProviderEnum.llamacpp] + with patch.object(cls, "_get_model_info", return_value=info): + return cls(cfg, timeout=5) + + def test_server_context_size_used_without_override(self): + client = self._validated_client(4096) + self.assertEqual(client.get_context_size(), 4096) + + def test_provider_options_context_size_overrides_server(self): + client = self._validated_client(4096, {"context_size": 32768}) + self.assertEqual(client.get_context_size(), 32768) + if __name__ == "__main__": unittest.main()