80 lines
1.9 KiB
Python
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]
|