Nagendravarma
Sync missing orchestrator nodes, model fields, tracing, redis Dockerfile setup, and dev console fixes
5330a03
Raw
History Blame Contribute Delete
3.53 kB
"""
Pydantic request/response models for the Health Insurance AI Copilot API.
"""
from pydantic import BaseModel, Field
from typing import List, Optional
from datetime import datetime
# ── Request Models ─────────────────────────────────────────────────────────────
class ChatRequest(BaseModel):
session_id: str = Field(..., description="Unique session identifier (UUID)")
query: str = Field(..., min_length=1, max_length=2000, description="User question")
plan_tier: Optional[str] = Field(None, description="User's selected plan tier")
class ClearSessionRequest(BaseModel):
session_id: str
# ── Response Models ────────────────────────────────────────────────────────────
class ChatMessage(BaseModel):
role: str # "human" or "ai"
content: str
timestamp: Optional[str] = None
class ChatResponse(BaseModel):
session_id: str
query: str
answer: str
intent: str # SIMPLE_LOOKUP | POLICY_QUESTION | MULTI_HOP | COMPARISON
steps_log: List[str]
memories_used: List[str] = [] # Facts Mem0 extracted and stored from this turn
timestamp: str
run_id: Optional[str] = None # LangSmith trace run ID (None if tracing disabled)
confidence: Optional[str] = None # HIGH | MEDIUM | LOW | BLOCKED (new confidence scorer)
confidence_reason: Optional[str] = None # Human-readable confidence explanation
blocked: bool = False # True if query_guard blocked the query
sub_questions: List[str] = [] # Sub-questions from query_decomposer (MULTI_HOP)
class SessionHistoryResponse(BaseModel):
session_id: str
history: List[ChatMessage]
message_count: int
class ComponentHealth(BaseModel):
status: str # "ok" | "error" | "not_checked"
detail: Optional[str] = None
class HealthResponse(BaseModel):
status: str # "healthy" | "degraded" | "unhealthy"
timestamp: str
version: str = "1.0.0"
components: dict
active_sessions: int
class ErrorResponse(BaseModel):
error: str
detail: Optional[str] = None
session_id: Optional[str] = None
# ── Workflow / Trace Models ──────────────────────────────────────────────────
class WorkflowStep(BaseModel):
step_id: str
name: str
description: str
status: str = "completed"
output_summary: Optional[str] = None
class WorkflowTraceResponse(BaseModel):
session_id: str
query: str
intent: str
steps: List[WorkflowStep]
full_trace: List[str]
retrieved_context_preview: str
class WorkflowDiagramResponse(BaseModel):
session_id: str
query: str
intent: str
diagram: str
steps_log: List[str] | None = None
# ── Memory Models ─────────────────────────────────────────────────────────────
class MemoryFact(BaseModel):
id: Optional[str] = None
memory: str
created_at: Optional[str] = None
class MemoryResponse(BaseModel):
session_id: str
memory_count: int
facts: List[MemoryFact]
note: str = "In-memory only β€” resets on server restart"