{"record":{"id":"9aca822fc152b7e5","repo":"agentscope-ai/agentscope","slug":"agentscopeembedding-requires-model-in-the-confi","errorCode":null,"errorMessage":"\"AgentScopeEmbedding requires `model` in the config to be an AgentScope EmbeddingModelBase instance.\"","messagePattern":"\"AgentScopeEmbedding requires `model` in the config to be an AgentScope EmbeddingModelBase instance\\.\"","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/agentscope/middleware/_longterm_memory/_mem0/_agentscope_adapter.py","lineNumber":246,"sourceCode":"# ----------------------------------------------------------------------\n\n\nclass AgentScopeEmbedding(EmbeddingBase):\n    \"\"\"mem0 ``EmbeddingBase`` backed by an AgentScope\n    ``EmbeddingModelBase``.\"\"\"\n\n    def __init__(\n        self,\n        config: BaseEmbedderConfig | dict | None = None,\n    ) -> None:\n        # mem0's EmbeddingBase (unlike LLMBase) does NOT auto-convert\n        # dict configs — it stores whatever is passed. Normalize here\n        # so callers can use the same dict-config style as the LLM.\n        if isinstance(config, dict):\n            config = BaseEmbedderConfig(**config)\n        super().__init__(config)\n        if self.config.model is None:\n            raise ValueError(\n                \"AgentScopeEmbedding requires `model` in the config \"\n                \"to be an AgentScope EmbeddingModelBase instance.\",\n            )\n        if not isinstance(self.config.model, EmbeddingModelBase):\n            raise TypeError(\n                f\"AgentScopeEmbedding `model` must be an \"\n                f\"EmbeddingModelBase, got \"\n                f\"{type(self.config.model).__name__}.\",\n            )\n        self._agentscope_model: EmbeddingModelBase = self.config.model\n        self._bridge = _AsyncBridge()\n\n    # ----- EmbeddingBase interface -----\n    # pylint: disable=unused-argument\n    def embed(\n        self,\n        text: str | list[str],\n        memory_action: str | None = None,  # mem0 contract — unused","sourceCodeStart":228,"sourceCodeEnd":264,"githubUrl":"https://github.com/agentscope-ai/agentscope/blob/e90f1c7592896cc95f6e5ee506194f533378247d/src/agentscope/middleware/_longterm_memory/_mem0/_agentscope_adapter.py#L228-L264","documentation":"AgentScopeEmbedding is mem0's embedding adapter and requires config.model to be an AgentScope EmbeddingModelBase instance. A None model raises this ValueError at construction time since embedding calls would have nothing to dispatch to.","triggerScenarios":"AgentScopeEmbedding(BaseEmbedderConfig()) or a dict config without a 'model' key; copying a mem0 embedder config that uses provider/model-name strings.","commonSituations":"Building MemoryConfig embedder blocks by hand; forgetting the embedding model when only the LLM was configured.","solutions":["Pass an EmbeddingModelBase instance (e.g. OpenAIEmbedding(model='text-embedding-3-small')) in config.model","Use Mem0Middleware(embedding_model=..., chat_model=...) or build_mem0_config to assemble both adapters"],"exampleFix":"// before\nemb = AgentScopeEmbedding(BaseEmbedderConfig(provider='agentscope'))\n// after\nfrom agentscope.model import OpenAIEmbedding\nemb = AgentScopeEmbedding(BaseEmbedderConfig(model=OpenAIEmbedding(model='text-embedding-3-small')))","handlingStrategy":"validation","validationCode":"from agentscope.model import EmbeddingModelBase\nif getattr(config, 'model', None) is None:\n    raise ValueError('config.model must be an EmbeddingModelBase instance')","typeGuard":"from agentscope.model import EmbeddingModelBase\ndef has_embedding_model(cfg) -> bool:\n    return isinstance(getattr(cfg, 'model', None), EmbeddingModelBase)","tryCatchPattern":"try:\n    emb = AgentScopeEmbedding(cfg)\nexcept ValueError as e:\n    if 'model' in str(e):\n        cfg['model'] = OpenAIEmbedding(model='text-embedding-3-small')\n        emb = AgentScopeEmbedding(cfg)\n    else:\n        raise","preventionTips":["Prefer build_mem0_config(embedding_model=...) over manual embedder configs","Set model before constructing the embedder"],"tags":["agentscope","mem0","embedding","config"],"backgroundTag":"missing-required-config-field","analyzedSha":"e90f1c7592896cc95f6e5ee506194f533378247d","analyzedAt":"2026-08-28T18:24:12.087Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}