import logging from application.llm.anthropic import AnthropicLLM from application.llm.docsgpt_provider import DocsGPTAPILLM from application.llm.google_ai import GoogleLLM from application.llm.groq import GroqLLM from application.llm.huggingface import HuggingFaceLLM from application.llm.llama_cpp import LlamaCpp from application.llm.novita import NovitaLLM from application.llm.openai import AzureOpenAILLM, OpenAILLM from application.llm.premai import PremAILLM from application.llm.sagemaker import SagemakerAPILLM logger = logging.getLogger(__name__) class LLMCreator: llms = { "openai": OpenAILLM, "azure_openai": AzureOpenAILLM, "sagemaker": SagemakerAPILLM, "huggingface": HuggingFaceLLM, "llama.cpp": LlamaCpp, "anthropic": AnthropicLLM, "docsgpt": DocsGPTAPILLM, "premai": PremAILLM, "groq": GroqLLM, "google": GoogleLLM, "novita": NovitaLLM, } @classmethod def create_llm( cls, type, api_key, user_api_key, decoded_token, model_id=None, *args, **kwargs ): from application.core.model_utils import get_base_url_for_model llm_class = cls.llms.get(type.lower()) if not llm_class: raise ValueError(f"No LLM class found for type {type}") # Extract base_url from model configuration if model_id is provided base_url = None if model_id: base_url = get_base_url_for_model(model_id) return llm_class( api_key, user_api_key, decoded_token=decoded_token, model_id=model_id, base_url=base_url, *args, **kwargs, )