Spaces:
Running
Running
File size: 2,364 Bytes
1367957 | 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | from pydantic import BaseModel, Field
from typing import Optional, Dict, Any, List
from datetime import datetime
class ChatRequest(BaseModel):
"""Chat request schema"""
message: str = Field(..., min_length=1, max_length=1000)
session_id: str = Field(default="default")
domain: Optional[str] = Field(default="general_medical")
enable_reasoning: bool = Field(default=True)
use_real_time: bool = Field(default=True)
max_papers: int = Field(default=15, ge=1, le=50)
class Config:
json_schema_extra = {
"example": {
"message": "Compare deep learning vs traditional ML in medical imaging",
"session_id": "user_123",
"domain": "medical_imaging",
"enable_reasoning": True,
"use_real_time": True,
"max_papers": 15
}
}
class ChatResponse(BaseModel):
"""Chat response schema"""
success: bool
message: str
session_id: str
processing_time: Optional[float] = None
confidence_score: Optional[float] = None
papers_used: Optional[int] = None
reasoning_used: Optional[bool] = None
error: Optional[str] = None
raw_response: Optional[Dict[str, Any]] = None
class Config:
json_schema_extra = {
"example": {
"success": True,
"message": "Here's the comparison...",
"session_id": "user_123",
"processing_time": 23.86,
"confidence_score": 86.7,
"papers_used": 13,
"reasoning_used": True
}
}
class SessionCreate(BaseModel):
"""Session creation schema"""
user_id: Optional[str] = None
initial_domain: Optional[str] = "general_medical"
class DomainInfo(BaseModel):
"""Domain information"""
id: str
name: str
icon: str
description: Optional[str] = None
class WebSocketMessage(BaseModel):
"""WebSocket message schema"""
type: str # "message", "typing", "error", "init_session"
message: Optional[str] = None
session_id: Optional[str] = None
domain: Optional[str] = None
enable_reasoning: Optional[bool] = None
use_real_time: Optional[bool] = None
max_papers: Optional[int] = None |