Spaces:
Sleeping
Sleeping
File size: 2,433 Bytes
411a994 |
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
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"]
|