From 6ca1aef52e86003804d329e44d26d21cf14025f7 Mon Sep 17 00:00:00 2001 From: Yongteng Lei Date: Fri, 23 May 2025 20:07:39 +0800 Subject: [PATCH] Fix: catch non-begin component output (#7827) ### What problem does this PR solve? Catch non-begin component output ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- agent/component/code.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/agent/component/code.py b/agent/component/code.py index ebf3c9f5b..0abf0b472 100644 --- a/agent/component/code.py +++ b/agent/component/code.py @@ -79,15 +79,23 @@ class Code(ComponentBase, ABC): def _run(self, history, **kwargs): arguments = {} for input in self._param.arguments: - assert "@" in input["component_id"], "Each code argument should bind to a specific compontent" - component_id = input["component_id"].split("@")[0] - refered_component_key = input["component_id"].split("@")[1] - refered_component = self._canvas.get_component(component_id)["obj"] + if "@" in input["component_id"]: + component_id = input["component_id"].split("@")[0] + refered_component_key = input["component_id"].split("@")[1] + refered_component = self._canvas.get_component(component_id)["obj"] - for param in refered_component._param.query: - if param["key"] == refered_component_key: - if "value" in param: - arguments[input["name"]] = param["value"] + for param in refered_component._param.query: + if param["key"] == refered_component_key: + if "value" in param: + arguments[input["name"]] = param["value"] + else: + cpn = self._canvas.get_component(input["component_id"])["obj"] + if cpn.component_name.lower() == "answer": + arguments[input["name"]] = self._canvas.get_history(1)[0]["content"] + continue + _, out = cpn.output(allow_partial=False) + if not out.empty: + arguments[input["name"]] = "\n".join(out["content"]) return self._execute_code( language=self._param.lang,