meal.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from pydantic import BaseModel
  2. from typing import Optional, List
  3. class FoodRecognizeRequest(BaseModel):
  4. image_url: str
  5. prompt: str = "识别图片中的主要食材,返回 JSON 格式:[{name, confidence, category}]"
  6. class FoodsItem(BaseModel):
  7. name: str
  8. confidence: float
  9. category: str = "unknown"
  10. class FoodRecognizeResponse(BaseModel):
  11. foods: List[FoodsItem]
  12. raw_response: str = ""
  13. trace_id: str = ""
  14. class MenuGenerateRequest(BaseModel):
  15. selected_foods: str
  16. participants: str
  17. date: str
  18. allergies: Optional[str] = None
  19. avoid_foods: Optional[str] = None
  20. health_goals: Optional[str] = None
  21. spice_level: Optional[int] = None
  22. cuisine_pref: Optional[str] = None
  23. # CR-C / AC-23:Java AiGateway 下发的午/晚餐标准菜数 D(N)。
  24. # 默认 None 让旧调用方 100% 兼容;菜数硬保证在 Java normalizeMenu,此处仅软引导 prompt。
  25. dish_count: Optional[int] = None
  26. class MenuIngredient(BaseModel):
  27. name: str
  28. grams: int
  29. class MenuDish(BaseModel):
  30. name: str
  31. ingredients: List[MenuIngredient]
  32. cooking_method: str = ""
  33. nutrition: Optional[dict] = None
  34. notes: str = ""
  35. class MenuGenerateResponse(BaseModel):
  36. menu_json: str = ""
  37. trace_id: str = ""