Repository navigation
[Bug]: Search memory failed with Qwen3.5-xxx thinking mode (default enabled) #1265
Description
Activity
When I reproduce this issue in local lab environment, I get another similar errors. This means we have issue to parse Qwen3.5 response.
2026-03-26 06:00:30,508 [INFO] httpx - HTTP Request: POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions "HTTP/1.1 200 OK" 2026-03-26 06:00:30,511 [ERROR] memmachine_server.semantic_memory.semantic_ingestion - Failed to process message 46 for semantic type profile Traceback (most recent call last): File "/app/.venv/lib/python3.12/site-packages/memmachine_server/semantic_memory/semantic_ingestion.py", line 163, in process_semantic_type commands = await llm_feature_update( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/pydantic/_internal/_validate_call.py", line 34, in wrapper_function return await wrapper(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/memmachine_server/semantic_memory/semantic_llm.py", line 88, in llm_feature_update parsed_output = await model.generate_parsed_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/memmachine_server/common/language_model/openai_chat_completions_language_model.py", line 130, in generate_parsed_response response = await self._client.with_options( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/resources/chat/completions/completions.py", line 1668, in parse return await self._post( ^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_base_client.py", line 1884, in post return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_base_client.py", line 1674, in request return await self._process_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_base_client.py", line 1763, in _process_response return await api_response.parse() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_response.py", line 432, in parse parsed = self._options.post_parser(parsed) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/resources/chat/completions/completions.py", line 1662, in parser return _parse_chat_completion( ^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.py", line 146, in parse_chat_completion "parsed": maybe_parse_content( ^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.py", line 196, in maybe_parse_content return _parse_content(response_format, message.content) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.py", line 245, in _parse_content return cast(ResponseFormatT, model_parse_json(response_format, content)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_compat.py", line 171, in model_parse_json return model.model_validate_json(data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/pydantic/main.py", line 766, in model_validate_json return cls.__pydantic_validator__.validate_json( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for _SemanticFeatureUpdateRes Input should be an object [type=model_type, input_value=[], input_type=list] For further information visit https://errors.pydantic.dev/2.12/v/model_type 2026-03-26 06:00:36,661 [INFO] httpx - HTTP Request: POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions "HTTP/1.1 200 OK" 2026-03-26 06:00:36,664 [ERROR] memmachine_server.semantic_memory.semantic_ingestion - Failed to process message 48 for semantic type profile Traceback (most recent call last): File "/app/.venv/lib/python3.12/site-packages/memmachine_server/semantic_memory/semantic_ingestion.py", line 163, in process_semantic_type commands = await llm_feature_update( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/pydantic/_internal/_validate_call.py", line 34, in wrapper_function return await wrapper(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/memmachine_server/semantic_memory/semantic_llm.py", line 88, in llm_feature_update parsed_output = await model.generate_parsed_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/memmachine_server/common/language_model/openai_chat_completions_language_model.py", line 130, in generate_parsed_response response = await self._client.with_options( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/resources/chat/completions/completions.py", line 1668, in parse return await self._post( ^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_base_client.py", line 1884, in post return await self.request(cast_to, opts, stream=stream, stream_cls=stream_cls) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_base_client.py", line 1674, in request return await self._process_response( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_base_client.py", line 1763, in _process_response return await api_response.parse() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_response.py", line 432, in parse parsed = self._options.post_parser(parsed) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/resources/chat/completions/completions.py", line 1662, in parser return _parse_chat_completion( ^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.py", line 146, in parse_chat_completion "parsed": maybe_parse_content( ^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.py", line 196, in maybe_parse_content return _parse_content(response_format, message.content) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/lib/_parsing/_completions.py", line 245, in _parse_content return cast(ResponseFormatT, model_parse_json(response_format, content)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/openai/_compat.py", line 171, in model_parse_json return model.model_validate_json(data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.venv/lib/python3.12/site-packages/pydantic/main.py", line 766, in model_validate_json return cls.__pydantic_validator__.validate_json( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pydantic_core._pydantic_core.ValidationError: 1 validation error for _SemanticFeatureUpdateRes Input should be an object [type=model_type, input_value=[], input_type=list] For further information visit https://errors.pydantic.dev/2.12/v/model_type
The root cause is that Qwen3.5 models with thinking mode enabled prepend a
<think>...</think>block to their output before the actual JSON, so whengenerate_parsed_responseinopenai_responses_language_model.pypasses the raw response content to Pydantic'smodel_validate_json(), the string is no longer valid JSON and the parse fails. The fix would need to strip the<think>...</think>section from the response content before attempting JSON validation — something like extracting only the text after the closing</think>tag, or using a regex to remove the thinking block entirely. This would need to be handled ingenerate_parsed_response(around line 157) or as a post-processing step on the raw response string before it reaches Pydantic.
Describe the bug
Thinking mode is enabled by default since Qwen3.5-xxx (qwen3.5-plus, qwen3.5-flash) and memmachine search memory could not handle section in Pydantic model_validate_json()
Steps to reproduce
From Qwen official document, Thinking mode is enabled by default since qwen3.5
https://www.alibabacloud.com/help/en/model-studio/deep-thinking#19a4c1988fp6d
Expected behavior
Search memory may report such error and add memory works well.
Environment
MemMachine version 0.3.2
Additional context
No response