Files

80 lines
1.9 KiB
Python

"""Define API models for agent endpoints."""
from __future__ import annotations
from typing import Dict, List, Optional
from pydantic import BaseModel, Field
# Group agent transport schemas together so route modules stay focused on HTTP flow.
class AskRequest(BaseModel):
"""Define the Ask Request API model."""
query: str = Field(..., min_length=1, max_length=2000)
filters: Optional[str] = None
provider: Optional[str] = None
model: Optional[str] = None
top_k: Optional[int] = Field(default=None, ge=1, le=20)
prompt_template: Optional[str] = None
class AskResponse(BaseModel):
"""Define the Ask Response API model."""
answer: str
sources: List[Dict] = Field(default_factory=list)
model: str = ""
latency_ms: int = 0
retrieved_count: int = 0
context_tokens: int = 0
truncated: bool = False
error: Optional[str] = None
class ChatRequest(BaseModel):
"""Define the Chat Request API model."""
query: str = Field(..., min_length=1, max_length=2000)
session_id: Optional[str] = None
filters: Optional[str] = None
provider: Optional[str] = None
model: Optional[str] = None
top_k: Optional[int] = Field(default=None, ge=1, le=20)
class ChatResponse(BaseModel):
"""Define the Chat Response API model."""
session_id: str
answer: str
sources: List[Dict] = Field(default_factory=list)
model: str = ""
latency_ms: int = 0
message_count: int = 0
class SessionInfo(BaseModel):
"""Define the Session Info API model."""
session_id: str
message_count: int
created_at: int
updated_at: int
class FeedbackRequest(BaseModel):
"""Define the Feedback Request API model."""
session_id: str
message_index: int
rating: int = Field(..., ge=1, le=5)
comment: Optional[str] = None
class TemplateListResponse(BaseModel):
"""Define the Template List Response API model."""
templates: Dict[str, str]