diffusion_model_app / src /service /ws_protocol.py
emericklaf's picture
Deploy FastAPI+WebSocket+Gradio microservice (Etapes 1-6)
e4153e0 verified
Raw History Blame Contribute Delete
1.36 kB
"""
Schemas Pydantic du protocole WebSocket /ws/edit.
Deux messages client -> serveur (protocole a 2 phases, cf. decision UX
"apercu du masque avant generation") :
1. LocateRequest -> le serveur repond MaskReadyEvent (ou ErrorEvent)
2. ConfirmRequest -> le serveur repond une serie de ProgressEvent puis un
ResultEvent (ou ErrorEvent)
Une connexion WebSocket = une session d'edition (l'etat image+masque entre
les deux phases vit le temps de la connexion, cote serveur).
"""
from typing import List, Literal, Optional
from pydantic import BaseModel
class LocateRequest(BaseModel):
type: Literal["locate"] = "locate"
image_b64: str
text_query: str
class ConfirmRequest(BaseModel):
type: Literal["confirm"] = "confirm"
prompt: str
negative_prompt: str = ""
steps: int = 30
guidance_scale: float = 7.5
seed: int = 42
class MaskReadyEvent(BaseModel):
type: Literal["mask_ready"] = "mask_ready"
mask_b64: str
box: List[float]
clip_confidence: float
class ProgressEvent(BaseModel):
type: Literal["progress"] = "progress"
stage: Literal["diffusion"] = "diffusion"
step: int
total: int
class ResultEvent(BaseModel):
type: Literal["result"] = "result"
image_b64: str
class ErrorEvent(BaseModel):
type: Literal["error"] = "error"
message: str