ソースを参照

New: a new interpretor based on Andrew Ng theory. (#3532)

### What problem does this PR solve?

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
tags/v0.14.0
Kevin Hu 11ヶ月前
コミット
362db857d0
6個のファイルの変更603行の追加274行の削除
  1. 3
    15
      agent/canvas.py
  2. 1
    1
      agent/component/base.py
  3. 7
    2
      agent/component/generate.py
  4. 590
    250
      agent/templates/interpreter.json
  5. 2
    0
      api/apps/canvas_app.py
  6. 0
    6
      api/apps/tenant_app.py

+ 3
- 15
agent/canvas.py ファイルの表示

@@ -199,7 +199,7 @@ class Canvas(ABC):
if any([cc not in self.path[-1] for cc in cpids]):
if c not in waiting: waiting.append(c)
continue
yield "'{}' is running...".format(self.get_compnent_name(c))
yield "*'{}'* is running...🕞".format(self.get_compnent_name(c))
ans = cpn.run(self.history, **kwargs)
self.path[-1].append(c)
ran += 1
@@ -224,28 +224,16 @@ class Canvas(ABC):
for m in prepare2run([switch_out]):
yield {"content": m, "running_status": True}
except Exception as e:
for p in [c for p in self.path for c in p][::-1]:
if p.lower().find("answer") >= 0:
self.get_component(p)["obj"].set_exception(e)
for m in prepare2run([p]):
yield {"content": m, "running_status": True}
break
yield {"content": "*Exception*: {}".format(e), "running_status": True}
logging.exception("Canvas.run got exception")
break
continue

try:
for m in prepare2run(cpn["downstream"]):
yield {"content": m, "running_status": True}
except Exception as e:
for p in [c for p in self.path for c in p][::-1]:
if p.lower().find("answer") >= 0:
self.get_component(p)["obj"].set_exception(e)
for m in prepare2run([p]):
yield {"content": m, "running_status": True}
break
yield {"content": "*Exception*: {}".format(e), "running_status": True}
logging.exception("Canvas.run got exception")
break

if ran >= len(self.path[-1]) and waiting:
without_dependent_checking = waiting

+ 1
- 1
agent/component/base.py ファイルの表示

@@ -454,7 +454,7 @@ class ComponentBase(ABC):
outs = []
for q in self._param.query:
if q["component_id"]:
if q["component_id"].split("@")[0].lower().find("begin") > 0:
if q["component_id"].split("@")[0].lower().find("begin") >= 0:
cpn_id, key = q["component_id"].split("@")
for p in self._canvas.get_component(cpn_id)["obj"]._param.query:
if p["key"] == key:

+ 7
- 2
agent/component/generate.py ファイルの表示

@@ -124,11 +124,16 @@ class Generate(ComponentBase):

cpn = self._canvas.get_component(component_id)["obj"]
if cpn.component_name.lower() == "answer":
kwargs[para["key"]] = self._canvas.get_history(1)[0]["content"]
hist = self._canvas.get_history(1)
if hist:
hist = hist[0]["content"]
else:
hist = ""
kwargs[para["key"]] = hist
continue
_, out = cpn.output(allow_partial=False)
if "content" not in out.columns:
kwargs[para["key"]] = "Nothing"
kwargs[para["key"]] = ""
else:
if cpn.component_name.lower() == "retrieval":
retrieval_res.append(out)

+ 590
- 250
agent/templates/interpreter.json
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 2
- 0
api/apps/canvas_app.py ファイルの表示

@@ -134,6 +134,8 @@ def run():
cvs.dsl = json.loads(str(canvas))
UserCanvasService.update_by_id(req["id"], cvs.to_dict())
except Exception as e:
cvs.dsl = json.loads(str(canvas))
UserCanvasService.update_by_id(req["id"], cvs.to_dict())
traceback.print_exc()
yield "data:" + json.dumps({"code": 500, "message": str(e),
"data": {"answer": "**ERROR**: " + str(e), "reference": []}},

+ 0
- 6
api/apps/tenant_app.py ファイルの表示

@@ -111,12 +111,6 @@ def tenant_list():
@manager.route("/agree/<tenant_id>", methods=["PUT"])
@login_required
def agree(tenant_id):
if current_user.id != tenant_id:
return get_json_result(
data=False,
message='No authorization.',
code=settings.RetCode.AUTHENTICATION_ERROR)

try:
UserTenantService.filter_update([UserTenant.tenant_id == tenant_id, UserTenant.user_id == current_user.id], {"role": UserTenantRole.NORMAL})
return get_json_result(data=True)

読み込み中…
キャンセル
保存