emotion.py 1022 B

1234567891011121314151617181920212223
  1. from pydantic import BaseModel, Field
  2. from typing import List, Optional
  3. class EmotionItem(BaseModel):
  4. """单张人脸的情绪识别结果"""
  5. emotion: str = Field(description="主导情绪,英文,7类之一")
  6. confidence: float = Field(ge=0.0, le=1.0, description="置信度 0.0–1.0")
  7. class EmotionRequest(BaseModel):
  8. """情绪识别请求(支持 URL 或 base64)"""
  9. image_url: Optional[str] = Field(default=None, description="图片 URL(已上传到 OSS)")
  10. image_base64: Optional[str] = Field(default=None, description="base64 编码的图片数据(jpg/png)")
  11. member_id: Optional[int] = Field(default=None, description="家庭成员 ID,用于记录关联")
  12. class EmotionResponse(BaseModel):
  13. """情绪识别响应"""
  14. emotions: List[EmotionItem]
  15. dominant_emotion: str = Field(description="主导情绪(英文)")
  16. dominant_label_zh: str = Field(description="主导情绪中文名")
  17. all_emotions: dict = Field(description="全部 7 类情绪概率")