Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 3 additions & 20 deletions mem0/llms/configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,10 @@ class LlmConfig(BaseModel):

@field_validator("config")
def validate_config(cls, v, values):
from mem0.utils.factory import LlmFactory

provider = values.data.get("provider")
if provider in (
"openai",
"ollama",
"anthropic",
"groq",
"together",
"aws_bedrock",
"litellm",
"azure_openai",
"openai_structured",
"azure_openai_structured",
"gemini",
"deepseek",
"minimax",
"xai",
"sarvam",
"lmstudio",
"vllm",
"langchain",
):
if provider in LlmFactory.provider_to_class:
return v
else:
raise ValueError(f"Unsupported LLM provider: {provider}")
21 changes: 21 additions & 0 deletions tests/utils/test_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,24 @@ def test_dict_config_not_mutated_by_kwargs():
LlmFactory.create("openai", config, api_key="secret")

assert config == {"model": "gpt-4o-mini"}


def test_llm_config_accepts_registered_provider():
from mem0.llms.configs import LlmConfig

provider_name = "test_custom_provider"
try:
LlmFactory.register_provider(provider_name, "mypkg.CustomLLM")
llm_config = LlmConfig(provider=provider_name, config={})
assert llm_config.provider == provider_name
finally:
LlmFactory.provider_to_class.pop(provider_name, None)


def test_llm_config_rejects_unsupported_provider():
import pytest
from mem0.llms.configs import LlmConfig

with pytest.raises(ValueError, match="Unsupported LLM provider: unknown_provider"):
LlmConfig(provider="unknown_provider", config={})

Loading