diff --git a/example.env b/example.env index c20ab69e..8895d9bd 100644 --- a/example.env +++ b/example.env @@ -21,6 +21,7 @@ PROMETHEUS_ANTHROPIC_API_KEY=anthropic_api_key PROMETHEUS_GEMINI_API_KEY=gemini_api_key PROMETHEUS_OPENAI_API_KEY=openai_api_key PROMETHEUS_OPENROUTER_API_KEY=openrouter_api_key +PROMETHEUS_DEEPSEEK_API_KEY=deepseek_api_key # GitHub settings PROMETHEUS_GITHUB_ACCESS_TOKEN=github_access_token diff --git a/prometheus/app/dependencies.py b/prometheus/app/dependencies.py index 0ac6bad1..d482a8fe 100644 --- a/prometheus/app/dependencies.py +++ b/prometheus/app/dependencies.py @@ -41,6 +41,7 @@ def initialize_services() -> ServiceCoordinator: getattr(settings, "ANTHROPIC_API_KEY", None), getattr(settings, "GEMINI_API_KEY", None), getattr(settings, "OPENROUTER_API_KEY", None), + getattr(settings, "DEEPSEEK_API_KEY", None), ) knowledge_graph_service = KnowledgeGraphService( neo4j_service, diff --git a/prometheus/app/services/llm_service.py b/prometheus/app/services/llm_service.py index 6d99d4e9..59449d13 100644 --- a/prometheus/app/services/llm_service.py +++ b/prometheus/app/services/llm_service.py @@ -21,6 +21,7 @@ def __init__( anthropic_api_key: Optional[str] = None, gemini_api_key: Optional[str] = None, open_router_api_key: Optional[str] = None, + deepseek_api_key: Optional[str] = None, ): self.advanced_model = get_model( advanced_model_name, @@ -28,9 +29,15 @@ def __init__( anthropic_api_key, gemini_api_key, open_router_api_key, + deepseek_api_key, ) self.base_model = get_model( - base_model_name, openai_api_key, anthropic_api_key, gemini_api_key, open_router_api_key + base_model_name, + openai_api_key, + anthropic_api_key, + gemini_api_key, + open_router_api_key, + deepseek_api_key, ) @@ -40,6 +47,7 @@ def get_model( anthropic_api_key: Optional[str] = None, gemini_api_key: Optional[str] = None, open_router_api_key: Optional[str] = None, + deepseek_api_key: Optional[str] = None, ) -> BaseChatModel: if "/" in model_name: return CustomChatOpenAI( @@ -74,5 +82,14 @@ def get_model( max_tokens=None, max_retries=3, ) + elif "deepseek" in model_name: + return CustomChatOpenAI( + model=model_name, + api_key=deepseek_api_key, + base_url="https://api.deepseek.com", + temperature=0.0, + max_tokens=None, + max_retries=3, + ) else: raise ValueError(f"Unknown model name: {model_name}") diff --git a/tests/app/services/test_llm_service.py b/tests/app/services/test_llm_service.py index 054d1814..2ea52de7 100644 --- a/tests/app/services/test_llm_service.py +++ b/tests/app/services/test_llm_service.py @@ -100,6 +100,21 @@ def test_get_model_gemini(mock_chat_google): ) +def test_get_model_deepseek(custom_chat_openai): + # Exercise + get_model(model_name="deepseek-r1", deepseek_api_key="deepseek-key") + + # Verify + custom_chat_openai.assert_called_once_with( + model="deepseek-R1", + api_key="deepseek-key", + base_url="https://api.deepseek.com", + temperature=0.0, + max_tokens=None, + max_retries=3, + ) + + def test_get_model_unknown(): # Exercise & Verify with pytest.raises(ValueError, match="Unknown model name: unknown-model"):