Spaces:
Running
Running
| from fastapi import APIRouter, HTTPException | |
| from loguru import logger | |
| from langflow.api.v1.base import Code, CodeValidationResponse, PromptValidationResponse, ValidatePromptRequest | |
| from langflow.base.prompts.api_utils import process_prompt_template | |
| from langflow.utils.validate import validate_code | |
| # build router | |
| router = APIRouter(prefix="/validate", tags=["Validate"]) | |
| async def post_validate_code(code: Code) -> CodeValidationResponse: | |
| try: | |
| errors = validate_code(code.code) | |
| return CodeValidationResponse( | |
| imports=errors.get("imports", {}), | |
| function=errors.get("function", {}), | |
| ) | |
| except Exception as e: | |
| logger.opt(exception=True).debug("Error validating code") | |
| raise HTTPException(status_code=500, detail=str(e)) from e | |
| async def post_validate_prompt(prompt_request: ValidatePromptRequest) -> PromptValidationResponse: | |
| try: | |
| if not prompt_request.frontend_node: | |
| return PromptValidationResponse( | |
| input_variables=[], | |
| frontend_node=None, | |
| ) | |
| # Process the prompt template using direct attributes | |
| input_variables = process_prompt_template( | |
| template=prompt_request.template, | |
| name=prompt_request.name, | |
| custom_fields=prompt_request.frontend_node.custom_fields, | |
| frontend_node_template=prompt_request.frontend_node.template, | |
| ) | |
| return PromptValidationResponse( | |
| input_variables=input_variables, | |
| frontend_node=prompt_request.frontend_node, | |
| ) | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) from e | |