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)