From 03349bf999bf259ad72d5d08942a3dbb11424ffc Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 28 Jun 2023 17:26:57 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(vertex/base.py):=20add=20art?= =?UTF-8?q?ifacts=20attribute=20to=20Vertex=20class=20to=20store=20additio?= =?UTF-8?q?nal=20data=20=F0=9F=90=9B=20fix(vertex/base.py):=20update=20ins?= =?UTF-8?q?tantiation=20logic=20to=20handle=20tuple=20result=20from=20load?= =?UTF-8?q?ing.instantiate=5Fclass()=20=F0=9F=90=9B=20fix(loading.py):=20u?= =?UTF-8?q?pdate=20return=20value=20of=20instantiate=5Fprompt()=20to=20ret?= =?UTF-8?q?urn=20a=20tuple=20of=20prompt=20and=20format=5Fkwargs=20The=20V?= =?UTF-8?q?ertex=20class=20now=20has=20a=20new=20attribute=20called=20arti?= =?UTF-8?q?facts,=20which=20is=20a=20dictionary=20used=20to=20store=20addi?= =?UTF-8?q?tional=20data=20related=20to=20the=20vertex.=20The=20instantiat?= =?UTF-8?q?ion=20logic=20in=20the=20Vertex=20class=20has=20been=20updated?= =?UTF-8?q?=20to=20handle=20the=20case=20where=20loading.instantiate=5Fcla?= =?UTF-8?q?ss()=20returns=20a=20tuple=20containing=20the=20built=20object?= =?UTF-8?q?=20and=20additional=20artifacts.=20The=20loading.instantiate=5F?= =?UTF-8?q?prompt()=20function=20now=20returns=20a=20tuple=20containing=20?= =?UTF-8?q?the=20prompt=20and=20format=5Fkwargs.=20These=20changes=20fix?= =?UTF-8?q?=20issues=20related=20to=20storing=20and=20handling=20additiona?= =?UTF-8?q?l=20data=20in=20the=20vertex=20and=20loading=20modules.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/graph/vertex/base.py | 9 ++++++++- src/backend/langflow/interface/initialize/loading.py | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/graph/vertex/base.py b/src/backend/langflow/graph/vertex/base.py index 61c50eda5..5e723b989 100644 --- a/src/backend/langflow/graph/vertex/base.py +++ b/src/backend/langflow/graph/vertex/base.py @@ -25,6 +25,7 @@ class Vertex: self._parse_data() self._built_object = None self._built = False + self.artifacts: Dict[str, Any] = {} def _parse_data(self) -> None: self.data = self._data["data"] @@ -195,11 +196,17 @@ class Vertex: # and return the instance try: - self._built_object = loading.instantiate_class( + result = loading.instantiate_class( node_type=self.vertex_type, base_type=self.base_type, params=self.params, ) + # Result could be the _built_object or + # (_built_object, dict) tuple + if isinstance(result, tuple): + self._built_object, self.artifacts = result + else: + self._built_object = result except Exception as exc: raise ValueError( f"Error building node {self.vertex_type}: {str(exc)}" diff --git a/src/backend/langflow/interface/initialize/loading.py b/src/backend/langflow/interface/initialize/loading.py index bbaa1f131..1a075184e 100644 --- a/src/backend/langflow/interface/initialize/loading.py +++ b/src/backend/langflow/interface/initialize/loading.py @@ -124,7 +124,7 @@ def instantiate_prompt(node_type, class_object, params): if format_kwargs: prompt = prompt.partial(**format_kwargs) - return prompt + return prompt, format_kwargs def instantiate_tool(node_type, class_object, params):