import importlib def load_class(class_type): module_path, class_name = class_type.rsplit(".", 1) module = importlib.import_module(module_path) return getattr(module, class_name) class LlmFactory: provider_to_class = { "ollama": "mem0.llms.ollama.py.OllamaLLM", "openai": "mem0.llms.openai.OpenAILLM", "groq": "mem0.llms.groq.GroqLLM", "together": "mem0.llms.together.TogetherLLM", "aws_bedrock": "mem0.llms.aws_bedrock.AWSBedrockLLM", "litellm": "mem0.llms.litellm.LiteLLM", } @classmethod def create(cls, provider_name): class_type = cls.provider_to_class.get(provider_name) if class_type: llm_instance = load_class(class_type)() return llm_instance else: raise ValueError(f"Unsupported Llm provider: {provider_name}") class EmbedderFactory: provider_to_class = { "openai": "mem0.embeddings.openai.OpenAIEmbedding", "ollama": "mem0.embeddings.ollama.OllamaEmbedding", "huggingface": "mem0.embeddings.huggingface.HuggingFaceEmbedding" } @classmethod def create(cls, provider_name): class_type = cls.provider_to_class.get(provider_name) if class_type: embedder_instance = load_class(class_type)() return embedder_instance else: raise ValueError(f"Unsupported Embedder provider: {provider_name}")