From 09320824a9cdf29bd474ee757a1bc54d534f766d Mon Sep 17 00:00:00 2001 From: Gabriel Almeida Date: Mon, 24 Apr 2023 10:32:15 -0300 Subject: [PATCH] refactor(validate.py): extract build_graph function to langflow.interface.run module feat(validate.py): add post_validate_node endpoint to validate a single node in the graph by its id --- src/backend/langflow/api/validate.py | 18 ++++++++++++++++++ src/backend/langflow/interface/run.py | 14 +++++++------- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/backend/langflow/api/validate.py b/src/backend/langflow/api/validate.py index a60bcc506..07f113a8b 100644 --- a/src/backend/langflow/api/validate.py +++ b/src/backend/langflow/api/validate.py @@ -7,6 +7,7 @@ from langflow.api.base import ( PromptValidationResponse, validate_prompt, ) +from langflow.interface.run import build_graph from langflow.utils.logger import logger from langflow.utils.validate import validate_code @@ -33,3 +34,20 @@ def post_validate_prompt(prompt: Prompt): except Exception as e: logger.exception(e) raise HTTPException(status_code=500, detail=str(e)) from e + + +# validate node +@router.post("/node/{node_id}", status_code=200) +def post_validate_node(node_id: str, data: dict): + try: + # build graph + graph = build_graph(data) + # validate node + node = graph.get_node(node_id) + if node is not None: + _ = node.build() + return node.params + raise + except Exception as e: + logger.exception(e) + raise HTTPException(status_code=500, detail=str(e)) from e diff --git a/src/backend/langflow/interface/run.py b/src/backend/langflow/interface/run.py index deba28586..9fb9b82fe 100644 --- a/src/backend/langflow/interface/run.py +++ b/src/backend/langflow/interface/run.py @@ -39,16 +39,16 @@ def build_langchain_object_with_caching(data_graph): """ logger.debug("Building langchain object") - nodes = data_graph["nodes"] - # Add input variables - # nodes = payload.extract_input_variables(nodes) - # Nodes, edges and root node - edges = data_graph["edges"] - graph = Graph(nodes, edges) - + graph = build_graph(data_graph) return graph.build() +def build_graph(data_graph): + nodes = data_graph["nodes"] + edges = data_graph["edges"] + return Graph(nodes, edges) + + def build_langchain_object(data_graph): """ Build langchain object from data_graph.