51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
from enum import Enum
|
|
from langchain_anthropic import ChatAnthropic
|
|
from langchain_deepseek import ChatDeepSeek
|
|
from naliiabot.bot.exceptions import NotFoundProviderError
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
|
|
class LLMProvider(str, Enum):
|
|
"""Supported Providers."""
|
|
|
|
ANTHROPIC = "anthropic"
|
|
DEEPSEEK = "deepseek"
|
|
|
|
|
|
class LLMFactory:
|
|
|
|
def __init__(self, provider):
|
|
self.provider = provider
|
|
|
|
def get_model(self):
|
|
model = None
|
|
|
|
if self.provider == LLMProvider.ANTHROPIC:
|
|
model = self._create_anthropic()
|
|
elif self.provider == LLMProvider.DEEPSEEK:
|
|
model = self._create_deepseek()
|
|
else:
|
|
raise NotFoundProviderError(
|
|
f"{self.provider.upper()} Not Provider Found"
|
|
)
|
|
|
|
return model
|
|
|
|
def _create_anthropic(self):
|
|
model_name = "claude-sonnet-4-5-20250929"
|
|
model = ChatAnthropic(
|
|
model=model_name
|
|
)
|
|
|
|
return model
|
|
|
|
def _create_deepseek(self):
|
|
model_name = "deepseek-chat"
|
|
model = ChatDeepSeek(
|
|
model=model_name
|
|
)
|
|
|
|
return model
|