File size: 1,104 Bytes
bb0c63f
 
 
 
 
 
 
 
 
cb13c06
bb0c63f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""
Pydantic models for the Enterprise AI Gateway
"""

from pydantic import BaseModel, Field, validator
from typing import Optional

class QueryRequest(BaseModel):
    prompt: str = Field(..., min_length=1, max_length=4000)
    max_tokens: int = Field(8192, ge=1, le=16384)
    temperature: float = Field(0.7, ge=0.0, le=2.0)

    @validator('prompt')
    def check_prompt_injection(cls, v):
        from ..security import detect_prompt_injection
        if detect_prompt_injection(v):
            raise ValueError("Security Alert: Prompt injection pattern detected.")
        return v

class CascadeStep(BaseModel):
    provider: str
    model: Optional[str] = None
    status: str  # "success", "failed", "timeout"
    reason: Optional[str] = None
    latency_ms: int

class QueryResponse(BaseModel):
    response: Optional[str]
    provider: Optional[str]
    latency_ms: int
    status: str
    error: Optional[str]
    cascade_path: Optional[list] = None
    cost_estimate_usd: Optional[float] = None

class HealthResponse(BaseModel):
    status: str
    provider: Optional[str]
    timestamp: float