Create Memory Error: Model does not exist. Please check it carefully
🐛 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}
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
Hi @parshvadaftari, can you assign me this issue? I'll add the SiliconFlow as an LLM provider
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 According to the API documentation, the base URL is 'https://api.siliconflow.com/v1/' not 'https://api.siliconflow.cn/v1/'
@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.
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
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
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-..." } } } }
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.
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.
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 🫡