diff --git a/backend/src/dna/llm_providers/custom_provider.py b/backend/src/dna/llm_providers/custom_provider.py new file mode 100644 index 00000000..30b1f504 --- /dev/null +++ b/backend/src/dna/llm_providers/custom_provider.py @@ -0,0 +1,27 @@ +"""Custom OpenAI Compatible LLM Provider. + +Custom OpenAI Compatible implementation of the LLM provider interface. +""" + +import os + +from openai import AsyncOpenAI + +from dna.llm_providers.llm_provider_base import LLMProviderBase + + +class CustomProvider(LLMProviderBase): + """Custom OpenAI Compatible implementation of the LLM provider.""" + + LLM_PROVIDER_NAME = "CUSTOM_LLM" + + DEFAULT_MODEL = "gpt-oss-20b" + DEFAULT_URL = "http://localhost:11434/v1" + + def _get_provider_client(self): + """Construct an instance of the LLM provider's client.""" + return AsyncOpenAI( + api_key=self.api_key, + base_url=os.getenv(f"{self.LLM_PROVIDER_NAME}_URL", self.DEFAULT_URL), + timeout=self.timeout, + ) diff --git a/backend/src/dna/llm_providers/llm_provider_base.py b/backend/src/dna/llm_providers/llm_provider_base.py index 017372dd..f1d4cedb 100644 --- a/backend/src/dna/llm_providers/llm_provider_base.py +++ b/backend/src/dna/llm_providers/llm_provider_base.py @@ -346,4 +346,9 @@ def get_llm_provider() -> LLMProviderBase: return OpenAIProvider() + if provider_type == "custom": + from dna.llm_providers.custom_provider import CustomProvider + + return CustomProvider() + raise ValueError(f"Unknown LLM provider: {provider_type}")