{"record":{"id":"53236addc7ab70ed","repo":"agentscope-ai/agentscope","slug":"f-unsupported-llm-provider-provider","errorCode":null,"errorMessage":"f\"Unsupported LLM provider: {provider}\"","messagePattern":"f\"Unsupported LLM provider: (.+?)\"","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/agentscope/middleware/_longterm_memory/_mem0/_agentscope_adapter.py","lineNumber":421,"sourceCode":"    other provider continues to be rejected with the same error mem0\n    would have raised).\"\"\"\n    from pydantic import field_validator\n\n    from mem0.embeddings.configs import EmbedderConfig\n    from mem0.llms.configs import LlmConfig\n\n    class _AgentScopeLlmConfig(LlmConfig):\n        \"\"\"``LlmConfig`` subclass that accepts the AgentScope provider.\"\"\"\n\n        @field_validator(\"config\")\n        @classmethod\n        def validate_config(cls, v: Any, values: Any) -> Any:\n            \"\"\"Allow ``provider == \"agentscope\"``; reject everything\n            else with mem0's original error.\"\"\"\n            provider = values.data.get(\"provider\")\n            if provider == _AGENTSCOPE_PROVIDER:\n                return v\n            raise ValueError(f\"Unsupported LLM provider: {provider}\")\n\n    class _AgentScopeEmbedderConfig(EmbedderConfig):\n        \"\"\"``EmbedderConfig`` subclass that accepts the AgentScope\n        provider.\"\"\"\n\n        @field_validator(\"config\")\n        @classmethod\n        def validate_config(cls, v: Any, values: Any) -> Any:\n            \"\"\"Allow ``provider == \"agentscope\"``; reject everything\n            else with mem0's original error.\"\"\"\n            provider = values.data.get(\"provider\")\n            if provider == _AGENTSCOPE_PROVIDER:\n                return v\n            raise ValueError(\n                f\"Unsupported embedding provider: {provider}\",\n            )\n\n    return _AgentScopeLlmConfig, _AgentScopeEmbedderConfig","sourceCodeStart":403,"sourceCodeEnd":439,"githubUrl":"https://github.com/agentscope-ai/agentscope/blob/e90f1c7592896cc95f6e5ee506194f533378247d/src/agentscope/middleware/_longterm_memory/_mem0/_agentscope_adapter.py#L403-L439","documentation":"A pydantic field_validator on the agentscope LLM config subclass only accepts provider == 'agentscope'; any other provider string re-raises mem0's 'Unsupported LLM provider' error during config parsing.","triggerScenarios":"Building MemoryConfig(llm=...) with the agentscope config classes but provider set to 'openai', 'anthropic', a typo like 'AgentScope', or None.","commonSituations":"Editing a copied mem0 config and forgetting to change provider; case mismatch after refactor.","solutions":["Set provider='agentscope' (exact lowercase) on the llm block","Prefer build_mem0_config which fills the provider automatically"],"exampleFix":"// before\nMemoryConfig(llm={'provider': 'openai', ...})\n// after\nMemoryConfig(llm={'provider': 'agentscope', ...})","handlingStrategy":"validation","validationCode":"assert llm_block.get('provider') == 'agentscope', 'provider must be exactly \"agentscope\"'","typeGuard":null,"tryCatchPattern":"try:\n    MemoryConfig(**cfg)\nexcept ValueError as e:\n    if 'Unsupported LLM provider' in str(e):\n        cfg['llm']['provider'] = 'agentscope'\n    else:\n        raise","preventionTips":["Generate configs with build_mem0_config instead of editing dicts by hand","Use a lint/test that asserts provider == 'agentscope'"],"tags":["mem0","provider","config-validation"],"backgroundTag":"unsupported-provider-value","analyzedSha":"e90f1c7592896cc95f6e5ee506194f533378247d","analyzedAt":"2026-08-28T18:24:12.087Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}