Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, EmailStr, Field | |
| from typing import Optional, Literal, List | |
| from datetime import datetime | |
| class UserCreate(BaseModel): | |
| email: Optional[EmailStr] = None | |
| password: Optional[str] = None | |
| preferred_language: str = Field(default="fr") | |
| class UserOut(BaseModel): | |
| id: str # Supabase auth user UUID | |
| preferred_language: str | |
| email: Optional[EmailStr] = None | |
| created_at: datetime | |
| class Config: | |
| from_attributes = True | |
| class Token(BaseModel): | |
| access_token: str | |
| token_type: str = "bearer" | |
| class ConversationCreate(BaseModel): | |
| user_id: Optional[str] = None | |
| context: Optional[str] = "" | |
| class ConversationOut(BaseModel): | |
| id: int | |
| user_id: Optional[str] | |
| started_at: datetime | |
| context: str | |
| class Config: | |
| from_attributes = True | |
| class MessageCreate(BaseModel): | |
| conversation_id: int | |
| message_type: Literal["text", "audio", "image"] = "text" | |
| content: str | |
| role: Literal["user", "assistant"] = "user" | |
| class MessageOut(BaseModel): | |
| id: int | |
| conversation_id: int | |
| message_type: str | |
| content: str | |
| role: str | |
| timestamp: datetime | |
| class Config: | |
| from_attributes = True | |
| class ChatRequest(BaseModel): | |
| conversation_id: Optional[int] = None | |
| text: str | |
| language: str = "fr" | |
| class ChatResponse(BaseModel): | |
| reply: str | |
| conversation_id: int | |
| class TranscribeRequest(BaseModel): | |
| audio_url: Optional[str] = None | |
| language: Optional[str] = None | |
| class TranscribeResponse(BaseModel): | |
| text: str | |
| class AnalyzeImageRequest(BaseModel): | |
| image_url: str | |
| prompt: Optional[str] = None | |
| class AnalyzeImageResponse(BaseModel): | |
| result: str | |
| class TranslateRequest(BaseModel): | |
| text: str | |
| target_language: str | |
| class TranslateResponse(BaseModel): | |
| text: str | |
| # Unified chat endpoint models | |
| class UnifiedChatRequest(BaseModel): | |
| message: str | |
| message_type: Literal["text", "audio", "image"] = "text" | |
| user_id: Optional[str] = None | |
| language: Optional[str] = None | |
| history: Optional[List[str]] = None | |
| class UnifiedContext(BaseModel): | |
| similar_cases_found: int | |
| most_probable_diagnosis: Optional[str] = None | |
| confidence_level: Literal["high", "medium", "low"] | |
| advice: str | |
| class UnifiedChatResponse(BaseModel): | |
| response: str | |
| context: UnifiedContext | |
| suggested_actions: List[str] | |
| language: Literal["fr", "en"] | |