autogen/python/packages/autogen-studio/autogenstudio/web/routes/validation.py

38 lines
1.4 KiB
Python

# api/routes/validation.py
from fastapi import APIRouter
from ...validation.component_test_service import ComponentTestRequest, ComponentTestResult, ComponentTestService
from ...validation.validation_service import ValidationError, ValidationRequest, ValidationResponse, ValidationService
router = APIRouter()
@router.post("/")
async def validate_component(request: ValidationRequest) -> ValidationResponse:
"""Validate a component configuration"""
try:
return ValidationService.validate(request.component)
except Exception as e:
return ValidationResponse(
is_valid=False, errors=[ValidationError(field="validation", error=str(e))], warnings=[]
)
@router.post("/test")
async def test_component(request: ComponentTestRequest) -> ComponentTestResult:
"""Test a component functionality with appropriate inputs based on type"""
# First validate the component configuration
validation_result = ValidationService.validate(request.component)
# Only proceed with testing if the component is valid
if not validation_result.is_valid:
return ComponentTestResult(
status=False, message="Component validation failed", logs=[e.error for e in validation_result.errors]
)
# If validation passed, run the functional test
return await ComponentTestService.test_component(
component=request.component, timeout=request.timeout if request.timeout else 60
)