agentsupport-backend / agent /validator.py
rak2315's picture
Deploy AgentSupport backend
ca76a2a
Raw
History Blame Contribute Delete
1.45 kB
from typing import Any, Dict, List, Optional, Union
from pydantic import BaseModel, ValidationError
class OrderLookupResult(BaseModel):
order_id: str
customer_name: Optional[str] = None
item: Optional[str] = None
status: Optional[str] = None
amount: Optional[float] = None
delivery_date: Optional[str] = None
notes: Optional[str] = None
error: Optional[str] = None
class RefundResult(BaseModel):
order_id: str
status: str
message: str
refund_timeline: Optional[str] = None
amount: Optional[float] = None
reason: Optional[str] = None
item: Optional[str] = None
error: Optional[str] = None
class TicketResult(BaseModel):
ticket_id: str
issue: str
priority: str
status: str
eta: str
message: str
error: Optional[str] = None
class FAQResult(BaseModel):
query: str
results: List[str]
source: Optional[str] = None
error: Optional[str] = None
_VALIDATORS = {
"order_lookup": OrderLookupResult,
"refund_trigger": RefundResult,
"ticket_create": TicketResult,
"faq_retriever": FAQResult,
}
def validate_tool_output(
tool_name: str, raw_output: Dict[str, Any]
) -> Union[OrderLookupResult, RefundResult, TicketResult, FAQResult, Dict]:
model = _VALIDATORS.get(tool_name)
if model is None:
return raw_output
try:
return model(**raw_output)
except ValidationError:
return raw_output