@@ -70,14 +70,31 @@ def from_dict(cls, record_dict: Dict[str, Any]) -> "MemoryRecord":
7070 Args:
7171 record_dict(Dict[str, Any]): A dict generated by :meth:`to_dict`.
7272 """
73+ from camel .types import (
74+ OpenAIBackendRole ,
75+ RoleType ,
76+ )
77+
7378 message_cls = cls ._MESSAGE_TYPES [record_dict ["message" ]["__class__" ]]
7479 kwargs : Dict = record_dict ["message" ].copy ()
7580 kwargs .pop ("__class__" )
81+
82+ # Convert role_type string back to RoleType enum if it's a string
83+ if "role_type" in kwargs and isinstance (kwargs ["role_type" ], str ):
84+ kwargs ["role_type" ] = RoleType (kwargs ["role_type" ])
85+
7686 reconstructed_message = message_cls (** kwargs )
87+
88+ # Convert role_at_backend string back to OpenAIBackendRole enum if
89+ # it's a string
90+ role_at_backend = record_dict ["role_at_backend" ]
91+ if isinstance (role_at_backend , str ):
92+ role_at_backend = OpenAIBackendRole (role_at_backend )
93+
7794 return cls (
7895 uuid = UUID (record_dict ["uuid" ]),
7996 message = reconstructed_message ,
80- role_at_backend = record_dict [ " role_at_backend" ] ,
97+ role_at_backend = role_at_backend ,
8198 extra_info = record_dict ["extra_info" ],
8299 timestamp = record_dict ["timestamp" ],
83100 agent_id = record_dict ["agent_id" ],
@@ -93,7 +110,9 @@ def to_dict(self) -> Dict[str, Any]:
93110 "__class__" : self .message .__class__ .__name__ ,
94111 ** asdict (self .message ),
95112 },
96- "role_at_backend" : self .role_at_backend ,
113+ "role_at_backend" : self .role_at_backend .value
114+ if hasattr (self .role_at_backend , "value" )
115+ else self .role_at_backend ,
97116 "extra_info" : self .extra_info ,
98117 "timestamp" : self .timestamp ,
99118 "agent_id" : self .agent_id ,
0 commit comments