Spaces:
Running
Running
File size: 1,420 Bytes
fdc2693 b938416 fdc2693 |
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 |
# 檔案路徑: backend/app/routers/ai_router.py
from fastapi import APIRouter, File, UploadFile, HTTPException
from services.ai_service import classify_food_image # 直接引入分類函式
from services.nutrition_api_service import fetch_nutrition_data # 匯入營養查詢函式
router = APIRouter(
prefix="/ai",
tags=["AI"],
)
@router.post("/analyze-food-image/")
async def analyze_food_image_endpoint(file: UploadFile = File(...)):
"""
這個端點接收使用者上傳的食物圖片,使用 AI 模型進行辨識,
並返回辨識出的食物名稱。
"""
# 檢查上傳的檔案是否為圖片格式
if not file.content_type or not file.content_type.startswith("image/"):
raise HTTPException(status_code=400, detail="上傳的檔案不是圖片格式。")
# 讀取圖片的二進位制內容
image_bytes = await file.read()
# 呼叫 AI 服務中的分類函式
food_name = classify_food_image(image_bytes)
# 查詢營養資訊
nutrition_info = fetch_nutrition_data(food_name)
if nutrition_info is None:
raise HTTPException(status_code=404, detail=f"找不到 {food_name} 的營養資訊。")
# TODO: 在下一階段,我們會在這裡加入從資料庫查詢營養資訊的邏輯
# 目前,我們先直接回傳辨識出的食物名稱
return {"food_name": food_name, "nutrition_info": nutrition_info} |