mem0 icon indicating copy to clipboard operation
mem0 copied to clipboard

Create Memory Error: Model does not exist. Please check it carefully

Open HelloJelly2021 opened this issue 2 months ago • 11 comments

🐛 Describe the bug

A error occured when I create a memory. Does anyone know what the problem is?

Version: 1.0.0beta

openmemory-mcp-1 | [10/14/25 10:37:59] INFO HTTP Request: POST _client.py:1025 openmemory-mcp-1 | https://api.siliconflow.cn/v1/chat/ openmemory-mcp-1 | completions "HTTP/1.1 400 Bad openmemory-mcp-1 | Request" openmemory-mcp-1 | ERROR [ERROR] Failed to get categorization.py:38 openmemory-mcp-1 | categories: Error code: 400 - openmemory-mcp-1 | {'code': 20012, 'message': openmemory-mcp-1 | 'Model does not exist. Please openmemory-mcp-1 | check it carefully.', 'data': openmemory-mcp-1 | None}

HelloJelly2021 avatar Oct 14 '25 10:10 HelloJelly2021

Hey @HelloJelly2021 it seems you're trying to use siliconflow as the LLM provider, mem0 doesn't currently support siliconflow and hence you're facing this issue. The error clearly states that Model does not exist causes the problme. Thanks for reaching out

parshvadaftari avatar Oct 14 '25 12:10 parshvadaftari

Hi @parshvadaftari, can you assign me this issue? I'll add the SiliconFlow as an LLM provider

ron-42 avatar Oct 14 '25 17:10 ron-42

Thanks for your feedback and fixes. My api/config.json as flows: { "mem0": { "llm": { "provider": "openai", "config": { "model": "deepseek-ai/DeepSeek-R1", "openai_base_url": "https://api.siliconflow.cn/v1", "api_key": "sk-...", "temperature": 0.1, "max_tokens": 2000 } }, "embedder": { "provider": "openai", "config": { "model": "BAAI/bge-m3", "openai_base_url": "https://api.siliconflow.cn/v1", "api_key": "sk-..." } } } } According to the above configuration, Openmemory can optimize user conversations and vectorize data to the Milvus database. Prove that the above two configurations work. Why does the classification operation report an error? Is the classification operation not using the LLM configuration above?

HelloJelly2021 avatar Oct 15 '25 01:10 HelloJelly2021

@HelloJelly2021 According to the API documentation, the base URL is 'https://api.siliconflow.com/v1/' not 'https://api.siliconflow.cn/v1/'

ron-42 avatar Oct 15 '25 03:10 ron-42

@HelloJelly2021 According to the API documentation, the base URL is 'https://api.siliconflow.com/v1/' not 'https://api.siliconflow.cn/v1/'

CN for big China.

HelloJelly2021 avatar Oct 15 '25 03:10 HelloJelly2021

The root cause is that the categorization Mode name is hard code to be "gpt-4o-mini", and SiliconFlow does not provide the model "gpt-4o-mini".

@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=15)) def get_categories_for_memory(memory: str) -> List[str]: try: messages = [ {"role": "system", "content": MEMORY_CATEGORIZATION_PROMPT}, {"role": "user", "content": memory} ]

      # Let OpenAI handle the pydantic parsing directly
      completion = openai_client.beta.chat.completions.parse(
          model="gpt-4o-mini",
          messages=messages,
          response_format=MemoryCategories,
          temperature=0
      )

      parsed: MemoryCategories = completion.choices[0].message.parsed
      return [cat.strip().lower() for cat in parsed.categories]

  except Exception as e:
      logging.error(f"[ERROR] Failed to get categories: {e}")
      try:
          logging.debug(f"[DEBUG] Raw response: {completion.choices[0].message.content}")
      except Exception as debug_e:
          logging.debug(f"[DEBUG] Could not extract raw response: {debug_e}")
     raise

HelloJelly2021 avatar Oct 15 '25 06:10 HelloJelly2021

The root cause is that the categorization Mode name is hard code to be "gpt-4o-mini", and SiliconFlow does not provide the model "gpt-4o-mini".

@Retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=15)) def get_categories_for_memory(memory: str) -> List[str]: try: messages = [ {"role": "system", "content": MEMORY_CATEGORIZATION_PROMPT}, {"role": "user", "content": memory} ]

      # Let OpenAI handle the pydantic parsing directly
      completion = openai_client.beta.chat.completions.parse(
          model="gpt-4o-mini",
          messages=messages,
          response_format=MemoryCategories,
          temperature=0
      )

      parsed: MemoryCategories = completion.choices[0].message.parsed
      return [cat.strip().lower() for cat in parsed.categories]

  except Exception as e:
      logging.error(f"[ERROR] Failed to get categories: {e}")
      try:
          logging.debug(f"[DEBUG] Raw response: {completion.choices[0].message.content}")
      except Exception as debug_e:
          logging.debug(f"[DEBUG] Could not extract raw response: {debug_e}")
     raise

@HelloJelly2021 Yah that's right. they support these llms in chat-completion api:


- deepseek-ai/DeepSeek-R1, 
- deepseek-ai/DeepSeek-R1-Distill-Qwen-14B, 
- deepseek-ai/DeepSeek-R1-Distill-Qwen-32B, 
- deepseek-ai/DeepSeek-R1-Distill-Qwen-7B, 
- deepseek-ai/DeepSeek-V3, 
- deepseek-ai/DeepSeek-V3.1, 
- deepseek-ai/DeepSeek-V3.1-Terminus, 
- deepseek-ai/DeepSeek-V3.2-Exp, 
- deepseek-ai/deepseek-vl2, 
- baidu/ERNIE-4.5-300B-A47B, 
- THUDM/GLM-4-32B-0414, 
- THUDM/GLM-4-9B-0414, 
- THUDM/GLM-4.1V-9B-Thinking, 
- zai-org/GLM-4.5, 
- zai-org/GLM-4.5-Air, 
- zai-org/GLM-4.5V, 
- zai-org/GLM-4.6, 
- THUDM/GLM-Z1-32B-0414, 
- THUDM/GLM-Z1-9B-0414, 
- tencent/Hunyuan-A13B-Instruct, 
- tencent/Hunyuan-MT-7B, 
- moonshotai/Kimi-Dev-72B, 
- moonshotai/Kimi-K2-Instruct, 
- moonshotai/Kimi-K2-Instruct-0905, 
- inclusionAI/Ring-1T, 
- inclusionAI/Ling-1T, 
- inclusionAI/Ling-flash-2.0, 
- inclusionAI/Ling-mini-2.0, 
- inclusionAI/Ring-flash-2.0, 
- meta-llama/Meta-Llama-3.1-8B-Instruct, 
- MiniMaxAI/MiniMax-M1-80k, 
- Qwen/QwQ-32B, 
- Qwen/Qwen2.5-14B-Instruct, 
- Qwen/Qwen2.5-32B-Instruct, 
- Qwen/Qwen2.5-72B-Instruct, 
- Qwen/Qwen2.5-72B-Instruct-128K, 
- Qwen/Qwen2.5-7B-Instruct, 
- Qwen/Qwen2.5-Coder-32B-Instruct, 
- Qwen/Qwen2.5-VL-32B-Instruct, 
- Qwen/Qwen2.5-VL-72B-Instruct, 
- Qwen/Qwen2.5-VL-7B-Instruct, 
- Qwen/Qwen3-14B, 
- Qwen/Qwen3-235B-A22B, 
- Qwen/Qwen3-235B-A22B-Instruct-2507, 
- Qwen/Qwen3-235B-A22B-Thinking-2507, 
- Qwen/Qwen3-30B-A3B, 
- Qwen/Qwen3-30B-A3B-Instruct-2507, 
- Qwen/Qwen3-30B-A3B-Thinking-2507, 
- Qwen/Qwen3-32B, 
- Qwen/Qwen3-8B, 
- Qwen/Qwen3-Coder-30B-A3B-Instruct, 
- Qwen/Qwen3-Coder-480B-A35B-Instruct, 
- Qwen/Qwen3-Next-80B-A3B-Instruct, 
- Qwen/Qwen3-Next-80B-A3B-Thinking, 
- Qwen/Qwen3-Omni-30B-A3B-Captioner, 
- Qwen/Qwen3-Omni-30B-A3B-Instruct, 
- Qwen/Qwen3-Omni-30B-A3B-Thinking, 
- ByteDance-Seed/Seed-OSS-36B-Instruct, 
- openai/gpt-oss-120b, 
- openai/gpt-oss-20b, 
- stepfun-ai/step3 

ron-42 avatar Oct 15 '25 06:10 ron-42

The root cause is that the categorization Mode name is hard code to be "gpt-4o-mini", and SiliconFlow does not provide the model "gpt-4o-mini". @Retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=15)) def get_categories_for_memory(memory: str) -> List[str]: try: messages = [ {"role": "system", "content": MEMORY_CATEGORIZATION_PROMPT}, {"role": "user", "content": memory} ]

      # Let OpenAI handle the pydantic parsing directly
      completion = openai_client.beta.chat.completions.parse(
          model="gpt-4o-mini",
          messages=messages,
          response_format=MemoryCategories,
          temperature=0
      )

      parsed: MemoryCategories = completion.choices[0].message.parsed
      return [cat.strip().lower() for cat in parsed.categories]

  except Exception as e:
      logging.error(f"[ERROR] Failed to get categories: {e}")
      try:
          logging.debug(f"[DEBUG] Raw response: {completion.choices[0].message.content}")
      except Exception as debug_e:
          logging.debug(f"[DEBUG] Could not extract raw response: {debug_e}")
     raise

@HelloJelly2021 Yah that's right. they support these llms in chat-completion api:


- deepseek-ai/DeepSeek-R1, 
- deepseek-ai/DeepSeek-R1-Distill-Qwen-14B, 
- deepseek-ai/DeepSeek-R1-Distill-Qwen-32B, 
- deepseek-ai/DeepSeek-R1-Distill-Qwen-7B, 
- deepseek-ai/DeepSeek-V3, 
- deepseek-ai/DeepSeek-V3.1, 
- deepseek-ai/DeepSeek-V3.1-Terminus, 
- deepseek-ai/DeepSeek-V3.2-Exp, 
- deepseek-ai/deepseek-vl2, 
- baidu/ERNIE-4.5-300B-A47B, 
- THUDM/GLM-4-32B-0414, 
- THUDM/GLM-4-9B-0414, 
- THUDM/GLM-4.1V-9B-Thinking, 
- zai-org/GLM-4.5, 
- zai-org/GLM-4.5-Air, 
- zai-org/GLM-4.5V, 
- zai-org/GLM-4.6, 
- THUDM/GLM-Z1-32B-0414, 
- THUDM/GLM-Z1-9B-0414, 
- tencent/Hunyuan-A13B-Instruct, 
- tencent/Hunyuan-MT-7B, 
- moonshotai/Kimi-Dev-72B, 
- moonshotai/Kimi-K2-Instruct, 
- moonshotai/Kimi-K2-Instruct-0905, 
- inclusionAI/Ring-1T, 
- inclusionAI/Ling-1T, 
- inclusionAI/Ling-flash-2.0, 
- inclusionAI/Ling-mini-2.0, 
- inclusionAI/Ring-flash-2.0, 
- meta-llama/Meta-Llama-3.1-8B-Instruct, 
- MiniMaxAI/MiniMax-M1-80k, 
- Qwen/QwQ-32B, 
- Qwen/Qwen2.5-14B-Instruct, 
- Qwen/Qwen2.5-32B-Instruct, 
- Qwen/Qwen2.5-72B-Instruct, 
- Qwen/Qwen2.5-72B-Instruct-128K, 
- Qwen/Qwen2.5-7B-Instruct, 
- Qwen/Qwen2.5-Coder-32B-Instruct, 
- Qwen/Qwen2.5-VL-32B-Instruct, 
- Qwen/Qwen2.5-VL-72B-Instruct, 
- Qwen/Qwen2.5-VL-7B-Instruct, 
- Qwen/Qwen3-14B, 
- Qwen/Qwen3-235B-A22B, 
- Qwen/Qwen3-235B-A22B-Instruct-2507, 
- Qwen/Qwen3-235B-A22B-Thinking-2507, 
- Qwen/Qwen3-30B-A3B, 
- Qwen/Qwen3-30B-A3B-Instruct-2507, 
- Qwen/Qwen3-30B-A3B-Thinking-2507, 
- Qwen/Qwen3-32B, 
- Qwen/Qwen3-8B, 
- Qwen/Qwen3-Coder-30B-A3B-Instruct, 
- Qwen/Qwen3-Coder-480B-A35B-Instruct, 
- Qwen/Qwen3-Next-80B-A3B-Instruct, 
- Qwen/Qwen3-Next-80B-A3B-Thinking, 
- Qwen/Qwen3-Omni-30B-A3B-Captioner, 
- Qwen/Qwen3-Omni-30B-A3B-Instruct, 
- Qwen/Qwen3-Omni-30B-A3B-Thinking, 
- ByteDance-Seed/Seed-OSS-36B-Instruct, 
- openai/gpt-oss-120b, 
- openai/gpt-oss-20b, 
- stepfun-ai/step3 

So do you have any plans to fix this? Can the classification model be set to “mem0.llm.config.model” in the configuration below? { "mem0": { "llm": { "provider": "openai", "config": { "model": "deepseek-ai/DeepSeek-R1", "openai_base_url": "https://api.siliconflow.cn/v1", "api_key": "sk-...", "temperature": 0.1, "max_tokens": 2000 } }, "embedder": { "provider": "openai", "config": { "model": "BAAI/bge-m3", "openai_base_url": "https://api.siliconflow.cn/v1", "api_key": "sk-..." } } } }

HelloJelly2021 avatar Oct 15 '25 07:10 HelloJelly2021

Does anyone know the final solution to this problem? It's not a problem for the LLM provider, it's a problem where the classification model doesn't exist.

HelloJelly2021 avatar Oct 16 '25 06:10 HelloJelly2021

Hey @HelloJelly2021 sorry for the trouble, we'll be fixing the default model provided there.

@ron-42 Let me know if you want to work on it.

parshvadaftari avatar Oct 16 '25 15:10 parshvadaftari

Hey @HelloJelly2021 sorry for the trouble, we'll be fixing the default model provided there.

@ron-42 Let me know if you want to work on it.

@parshvadaftari on it 🫡

ron-42 avatar Oct 16 '25 15:10 ron-42