From 8a772086e21d553ff8518f66bb38f51afd09a854 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Tue, 29 Aug 2023 22:03:54 -0300 Subject: [PATCH] fix(api): make frontend_node field optional in ValidatePromptRequest to allow for a tweak call without a frontend_node fix(api): handle case where frontend_node is None in post_validate_prompt to avoid attempting to update a non-existent node --- src/backend/langflow/api/v1/base.py | 7 +++++-- src/backend/langflow/api/v1/validate.py | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/backend/langflow/api/v1/base.py b/src/backend/langflow/api/v1/base.py index 71cac5412..39c8b0b9f 100644 --- a/src/backend/langflow/api/v1/base.py +++ b/src/backend/langflow/api/v1/base.py @@ -1,3 +1,4 @@ +from typing import Optional from langflow.template.frontend_node.base import FrontendNode from pydantic import BaseModel, validator @@ -20,7 +21,8 @@ class FrontendNodeRequest(FrontendNode): class ValidatePromptRequest(BaseModel): name: str template: str - frontend_node: FrontendNodeRequest + #optional for tweak call + frontend_node: Optional[FrontendNodeRequest] # Build ValidationResponse class for {"imports": {"errors": []}, "function": {"errors": []}} @@ -39,7 +41,8 @@ class CodeValidationResponse(BaseModel): class PromptValidationResponse(BaseModel): input_variables: list - frontend_node: FrontendNodeRequest + #object return for tweak call + frontend_node: FrontendNodeRequest | object INVALID_CHARACTERS = { diff --git a/src/backend/langflow/api/v1/validate.py b/src/backend/langflow/api/v1/validate.py index 2a5bdd673..da76d25bc 100644 --- a/src/backend/langflow/api/v1/validate.py +++ b/src/backend/langflow/api/v1/validate.py @@ -31,7 +31,12 @@ def post_validate_code(code: Code): def post_validate_prompt(prompt_request: ValidatePromptRequest): try: input_variables = validate_prompt(prompt_request.template) - + # Check if frontend_node is None before proceeding to avoid attempting to update a non-existent node. + if prompt_request.frontend_node is None: + return PromptValidationResponse( + input_variables=input_variables, + frontend_node={}, + ) old_custom_fields = get_old_custom_fields(prompt_request) add_new_variables_to_template(input_variables, prompt_request)