diff --git a/src/memos/configs/mem_cube.py b/src/memos/configs/mem_cube.py index 4bd709fab..2092cfdea 100644 --- a/src/memos/configs/mem_cube.py +++ b/src/memos/configs/mem_cube.py @@ -36,7 +36,7 @@ class GeneralMemCubeConfig(BaseMemCubeConfig): description="User ID for the MemCube. This is used to distinguish between different users' memories.", ) cube_id: str = Field( - str(uuid.uuid4()), + default_factory=lambda: str(uuid.uuid4()), description="Cube ID for the MemCube. This is used to distinguish between different MemCubes.", ) text_mem: MemoryConfigFactory = Field( diff --git a/src/memos/configs/mem_os.py b/src/memos/configs/mem_os.py index 549e55792..db0fd7bcd 100644 --- a/src/memos/configs/mem_os.py +++ b/src/memos/configs/mem_os.py @@ -17,7 +17,7 @@ class MOSConfig(BaseConfig): description="User ID for the MOS. This is used to distinguish between different users' memories.", ) session_id: str = Field( - default=str(uuid.uuid4()), + default_factory=lambda: str(uuid.uuid4()), description="Session ID for the MOS. This is used to distinguish between different dialogue", ) chat_model: LLMConfigFactory = Field( diff --git a/tests/configs/test_mem_cube.py b/tests/configs/test_mem_cube.py index c50195558..7c594637f 100644 --- a/tests/configs/test_mem_cube.py +++ b/tests/configs/test_mem_cube.py @@ -28,9 +28,9 @@ def test_base_mem_cube_config(): def test_general_mem_cube_config(): check_config_base_class( GeneralMemCubeConfig, - factory_fields=["text_mem", "act_mem", "para_mem", "pref_mem"], + factory_fields=["cube_id", "text_mem", "act_mem", "para_mem", "pref_mem"], required_fields=[], - optional_fields=["config_filename", "user_id", "cube_id"], + optional_fields=["config_filename", "user_id"], reserved_fields=["model_schema"], ) @@ -44,3 +44,14 @@ def test_general_mem_cube_config(): config_data["text_mem"]["backend"] = "kv_cache" # Invalid backend for text_mem check_config_instantiation_invalid(GeneralMemCubeConfig, config_data) + + +def test_general_mem_cube_config_generates_unique_default_cube_ids(): + with open("examples/data/mem_cube_2/config.json") as f: + config_data = json.load(f) + config_data.pop("cube_id", None) + + first_config = GeneralMemCubeConfig(**config_data) + second_config = GeneralMemCubeConfig(**config_data) + + assert first_config.cube_id != second_config.cube_id diff --git a/tests/configs/test_mem_os.py b/tests/configs/test_mem_os.py new file mode 100644 index 000000000..9e3474826 --- /dev/null +++ b/tests/configs/test_mem_os.py @@ -0,0 +1,8 @@ +from memos.configs.mem_os import MOSConfig + + +def test_mos_config_generates_unique_default_session_ids(): + first_config = MOSConfig.model_construct(chat_model=None, mem_reader=None) + second_config = MOSConfig.model_construct(chat_model=None, mem_reader=None) + + assert first_config.session_id != second_config.session_id