From 2178cecd25916a53c77695eb25c46d2f472ff1b1 Mon Sep 17 00:00:00 2001 From: better629 Date: Thu, 21 Dec 2023 00:34:53 +0800 Subject: [PATCH] rm useless functions in serialize.py --- metagpt/utils/serialize.py | 31 ------------------------------- tests/metagpt/test_schema.py | 27 +++++++++++++-------------- 2 files changed, 13 insertions(+), 45 deletions(-) diff --git a/metagpt/utils/serialize.py b/metagpt/utils/serialize.py index a52dc8f45..3939b1306 100644 --- a/metagpt/utils/serialize.py +++ b/metagpt/utils/serialize.py @@ -57,20 +57,6 @@ def actionoutput_str_to_mapping(mapping: dict) -> dict: return new_mapping -def serialize_general_message(message: "Message") -> dict: - """ serialize Message, not to save""" - message_cp = copy.deepcopy(message) - ic = message_cp.instruct_content - if ic: - # model create by pydantic create_model like `pydantic.main.prd`, can't load directly - schema = ic.schema() - mapping = actionoutout_schema_to_mapping(schema) - mapping = actionoutput_mapping_to_str(mapping) - - message_cp.instruct_content = {"class": schema["title"], "mapping": mapping, "value": ic.dict()} - return message_cp.dict() - - def serialize_message(message: "Message"): message_cp = copy.deepcopy(message) # avoid `instruct_content` value update by reference ic = message_cp.instruct_content @@ -85,23 +71,6 @@ def serialize_message(message: "Message"): return msg_ser -def deserialize_general_message(message_dict: dict) -> "Message": - """ deserialize Message, not to load""" - instruct_content = message_dict.pop("instruct_content") - - message_cls = import_class("Message", "metagpt.schema") - message = message_cls(**message_dict) - if instruct_content: - ic = instruct_content - mapping = actionoutput_str_to_mapping(ic["mapping"]) - actionnode_class = import_class("ActionNode", "metagpt.actions.action_node") # avoid circular import - ic_obj = actionnode_class.create_model_class(class_name=ic["class"], mapping=mapping) - ic_new = ic_obj(**ic["value"]) - message.instruct_content = ic_new - - return message - - def deserialize_message(message_ser: str) -> "Message": message = pickle.loads(message_ser) if message.instruct_content: diff --git a/tests/metagpt/test_schema.py b/tests/metagpt/test_schema.py index 054a92de1..ef706abfa 100644 --- a/tests/metagpt/test_schema.py +++ b/tests/metagpt/test_schema.py @@ -15,7 +15,6 @@ from metagpt.actions import Action from metagpt.schema import AIMessage, Message, SystemMessage, UserMessage from metagpt.actions.action_node import ActionNode from metagpt.actions.write_code import WriteCode -from metagpt.utils.serialize import serialize_general_message, deserialize_general_message from metagpt.utils.common import any_to_str @@ -23,10 +22,10 @@ from metagpt.utils.common import any_to_str def test_messages(): test_content = "test_message" msgs = [ - UserMessage(test_content), - SystemMessage(test_content), - AIMessage(test_content), - Message(test_content, role="QA"), + UserMessage(content=test_content), + SystemMessage(content=test_content), + AIMessage(content=test_content), + Message(content=test_content, role="QA"), ] text = str(msgs) roles = ["user", "system", "assistant", "QA"] @@ -35,7 +34,7 @@ def test_messages(): @pytest.mark.asyncio def test_message(): - m = Message("a", role="v1") + m = Message(content="a", role="v1") v = m.dump() d = json.loads(v) assert d @@ -48,7 +47,7 @@ def test_message(): assert m.content == "a" assert m.role == "v2" - m = Message("a", role="b", cause_by="c", x="d", send_to="c") + m = Message(content="a", role="b", cause_by="c", x="d", send_to="c") assert m.content == "a" assert m.role == "b" assert m.send_to == {"c"} @@ -66,7 +65,7 @@ def test_message(): @pytest.mark.asyncio def test_routes(): - m = Message("a", role="b", cause_by="c", x="d", send_to="c") + m = Message(content="a", role="b", cause_by="c", x="d", send_to="c") m.send_to = "b" assert m.send_to == {"b"} m.send_to = {"e", Action} @@ -84,8 +83,8 @@ def test_message_serdeser(): role="engineer", cause_by=WriteCode ) - message_dict = serialize_general_message(message) - assert message_dict["cause_by"] == {"action_class": "WriteCode", "module_name": "metagpt.actions.write_code"} + message_dict = message.dict() + assert message_dict["cause_by"] == "metagpt.actions.write_code.WriteCode" assert message_dict["instruct_content"] == { "class": "code", "mapping": { @@ -98,14 +97,14 @@ def test_message_serdeser(): } } - new_message = deserialize_general_message(message_dict) + new_message = Message(**message_dict) assert new_message.content == message.content assert new_message.instruct_content == message.instruct_content assert new_message.cause_by == message.cause_by assert new_message.instruct_content.field3 == out_data["field3"] message = Message(content="code") - message_dict = serialize_general_message(message) - new_message = deserialize_general_message(message_dict) + message_dict = message.dict() + new_message = Message(**message_dict) assert new_message.instruct_content is None - assert new_message.cause_by == "" + assert new_message.cause_by == "metagpt.actions.add_requirement.UserRequirement"