浏览代码

Fix: code debug may corrupt by history answer (#8385)

### What problem does this PR solve?

Fix code debug may corrupt by history answer.

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
tags/v0.19.1
Yongteng Lei 4 个月前
父节点
当前提交
936a91c5fe
没有帐户链接到提交者的电子邮件
共有 2 个文件被更改,包括 19 次插入13 次删除
  1. 16
    12
      agent/component/code.py
  2. 3
    1
      api/apps/canvas_app.py

+ 16
- 12
agent/component/code.py 查看文件

for input in self._param.arguments: for input in self._param.arguments:
if "@" in input["component_id"]: if "@" in input["component_id"]:
component_id = input["component_id"].split("@")[0] component_id = input["component_id"].split("@")[0]
refered_component_key = input["component_id"].split("@")[1]
refered_component = self._canvas.get_component(component_id)["obj"]
referred_component_key = input["component_id"].split("@")[1]
referred_component = self._canvas.get_component(component_id)["obj"]


for param in refered_component._param.query:
if param["key"] == refered_component_key:
for param in referred_component._param.query:
if param["key"] == referred_component_key:
if "value" in param: if "value" in param:
arguments[input["name"]] = param["value"] arguments[input["name"]] = param["value"]
else: else:
refered_component = self._canvas.get_component(input["component_id"])["obj"]
refered_component_name = refered_component.component_name
refered_component_id = refered_component._id
if refered_component_name.lower() == "answer":
arguments[input["name"]] = self._canvas.get_history(1)[0]["content"]
continue
referred_component = self._canvas.get_component(input["component_id"])["obj"]
referred_component_name = referred_component.component_name
referred_component_id = referred_component._id


debug_inputs = self._param.debug_inputs debug_inputs = self._param.debug_inputs
if debug_inputs: if debug_inputs:
for param in debug_inputs: for param in debug_inputs:
if param["key"] == refered_component_id:
if param["key"] == referred_component_id:
if "value" in param and param["name"] == input["name"]: if "value" in param and param["name"] == input["name"]:
arguments[input["name"]] = param["value"] arguments[input["name"]] = param["value"]
else: else:
_, out = refered_component.output(allow_partial=False)
if referred_component_name.lower() == "answer":
arguments[input["name"]] = self._canvas.get_history(1)[0]["content"]
continue

_, out = referred_component.output(allow_partial=False)
if not out.empty: if not out.empty:
arguments[input["name"]] = "\n".join(out["content"]) arguments[input["name"]] = "\n".join(out["content"])


cpn_id = input["component_id"] cpn_id = input["component_id"]
elements.append({"key": cpn_id, "name": input["name"]}) elements.append({"key": cpn_id, "name": input["name"]})
return elements return elements

def debug(self, **kwargs):
return self._run([], **kwargs)

+ 3
- 1
api/apps/canvas_app.py 查看文件

code=RetCode.OPERATING_ERROR) code=RetCode.OPERATING_ERROR)


canvas = Canvas(json.dumps(user_canvas.dsl), current_user.id) canvas = Canvas(json.dumps(user_canvas.dsl), current_user.id)
canvas.get_component(req["component_id"])["obj"]._param.debug_inputs = req["params"]
componant = canvas.get_component(req["component_id"])["obj"]
componant.reset()
componant._param.debug_inputs = req["params"]
df = canvas.get_component(req["component_id"])["obj"].debug() df = canvas.get_component(req["component_id"])["obj"].debug()
return get_json_result(data=df.to_dict(orient="records")) return get_json_result(data=df.to_dict(orient="records"))
except Exception as e: except Exception as e:

正在加载...
取消
保存