From 7b94c04f51b5cca61143ddad67dbc87a40fc2fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=A3=92=E6=A3=92?= Date: Wed, 22 Nov 2023 20:36:51 +0800 Subject: [PATCH] fix: return string in parse_outputs. --- metagpt/actions/code_executor.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/metagpt/actions/code_executor.py b/metagpt/actions/code_executor.py index c05c00c9c..0b4f5171f 100644 --- a/metagpt/actions/code_executor.py +++ b/metagpt/actions/code_executor.py @@ -83,7 +83,7 @@ class PyCodeExecutor(CodeExecutor, Action): def parse_outputs(self, outputs: List) -> str: assert isinstance(outputs, list) - parsed_output = {"text": [], "image": []} + parsed_output = "" # empty outputs: such as 'x=1\ny=2' if not outputs: @@ -91,11 +91,12 @@ class PyCodeExecutor(CodeExecutor, Action): for output in outputs: if output["output_type"] == "stream": - parsed_output["text"].append(output["text"]) + parsed_output += output["text"] elif output["output_type"] == "display_data": self.show_bytes_figure(output["data"]["image/png"], self.interaction) - parsed_output["image"].append(output["data"]["image/png"]) - return str(parsed_output) + elif output["output_type"] == "execute_result": + parsed_output += output["data"]["text/plain"] + return parsed_output def show_bytes_figure(self, image_base64: str, interaction_type: str = "ipython"): import base64 @@ -139,8 +140,8 @@ class PyCodeExecutor(CodeExecutor, Action): assert "language" in code code, language = code["code"], code["language"] elif isinstance(code, Message): - assert hasattr(code, "language") - code, language = code.content, code.language + assert "language" in code.content + code, language = code.content["code"], code.content["language"] else: raise ValueError(f"Not support code type {type(code).__name__}.")