geekan / MetaGPT

🌟 The Multi-Agent Framework: First AI Software Company, Towards Natural Language Programming
https://deepwisdom.ai/
MIT License
43.63k stars 5.2k forks source link

self.rc.env.publish_message(msg) faield #1478

Open fishANDdog opened 4 days ago

fishANDdog commented 4 days ago

Bug description

in the Role's "async def _act(self) -> Message:" funciton, i do this:

        msg = Message(instruct_content=resp, role=self.profile, cause_by=type(todo), send_to="copilot")
        self.rc.memory.add(msg)

        return msg

the "instruct_content=resp" code in the above , the resp's value is a Dict. then, when run the program, report the following error:

2024-09-14 14:59:20.193 | WARNING  | metagpt.utils.common:wrapper:649 - There is a exception in role's execution, in order to resume, we delete the newest role communication message in the role's memory.
2024-09-14 14:59:20.194 | ERROR    | metagpt.utils.common:wrapper:631 - Exception occurs, start to serialize the project, exp:
Traceback (most recent call last):
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/utils/common.py", line 640, in wrapper
    return await func(self, *args, **kwargs)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/roles/role.py", line 555, in run
    self.publish_message(rsp)
pydantic_core._pydantic_core.PydanticSerializationError: Error serializing to JSON: PydanticSerializationError: Error calling function `ser_instruct_content`: AssertionError: this is a bug! please report it

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/utils/common.py", line 626, in wrapper
    result = await func(self, *args, **kwargs)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/team.py", line 134, in run
    await self.env.run()
Exception: Traceback (most recent call last):
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/utils/common.py", line 640, in wrapper
    return await func(self, *args, **kwargs)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/roles/role.py", line 555, in run
    self.publish_message(rsp)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/roles/role.py", line 441, in publish_message
    self.rc.env.publish_message(msg)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/environment/base_env.py", line 144, in publish_message
    logger.debug(f"publish_message: {message.dump()}")
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/schema.py", line 293, in dump
    return self.model_dump_json(exclude_none=True, warnings=False)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/pydantic/main.py", line 358, in model_dump_json
    return self.__pydantic_serializer__.to_json(
pydantic_core._pydantic_core.PydanticSerializationError: Error serializing to JSON: PydanticSerializationError: Error calling function `ser_instruct_content`: AssertionError: this is a bug! please report it

Traceback (most recent call last):
  File "/data2/agents/ai-agent/main.py", line 27, in <module>
    fire.Fire(main)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/fire/core.py", line 141, in Fire
    component_trace = _Fire(component, args, parsed_flag_args, context, name)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/fire/core.py", line 466, in _Fire
    component, remaining_args = _CallAndUpdateTrace(
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/fire/core.py", line 679, in _CallAndUpdateTrace
    component = loop.run_until_complete(fn(*varargs, **kwargs))
  File "/data3/.pyenv/versions/3.10.14/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/data2/agents/ai-agent/main.py", line 24, in main
    await team.run(n_round=n_round)
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/utils/common.py", line 632, in wrapper
    self.serialize()  # Team.serialize
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/metagpt/team.py", line 60, in serialize
    write_json_file(team_info_path, self.model_dump())
  File "/data3/.pyenv/versions/3.10.14/envs/metagpt_study_virenv/lib/python3.10/site-packages/pydantic/main.py", line 314, in model_dump
    return self.__pydantic_serializer__.to_python(
pydantic_core._pydantic_core.PydanticSerializationError: Error calling function `ser_instruct_content`: AssertionError: this is a bug! please report it

Environment information

Screenshots or logs

image

seehi commented 4 days ago

The instruct_content should be pydantic's Model:https://github.com/geekan/MetaGPT/blob/main/metagpt/schema.py#L193