Upload 2 files
Browse files- app.py +49 -0
- requirements.txt +1 -0
app.py
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# app.py
|
| 2 |
+
# Hugging Face Spaces (Gradio)๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ "์ค๋์ ํ๋ผ" ๋ฐ๋ชจ ์ฑ
|
| 3 |
+
# - ๊ธฐ๋ถ/์ ํธ/์ ์ฝ/์กฐ๋ฆฌ์๊ฐ/๋์ด๋/์นผ๋ก๋ฆฌ ๋ชฉํ/๋ณด์ ์ฌ๋ฃ ๋ฑ์ ์
๋ ฅ
|
| 4 |
+
# - ์ค์ฝ์ด๋ง ๊ธฐ๋ฐ ๋ ์ํผ ์ถ์ฒ + ์์/์๊ฐ ์ถ์ + ์ฅ๋ฐ๊ตฌ๋ ๋ฆฌ์คํธ ์์ฑ
|
| 5 |
+
|
| 6 |
+
import gradio as gr
|
| 7 |
+
from dataclasses import dataclass
|
| 8 |
+
from typing import List, Dict
|
| 9 |
+
|
| 10 |
+
@dataclass
|
| 11 |
+
class Recipe:
|
| 12 |
+
name: str
|
| 13 |
+
mood: List[str]
|
| 14 |
+
diet: List[str]
|
| 15 |
+
allergens: List[str]
|
| 16 |
+
cook_time: int
|
| 17 |
+
calories: int
|
| 18 |
+
|
| 19 |
+
RECIPES = [
|
| 20 |
+
Recipe("๊น์น๋ณถ์๋ฐฅ", ["ํผ๊ณค", "๋ฐ์จ"], ["ํ์"], ["๊ณ๋"], 12, 580),
|
| 21 |
+
Recipe("์นํจ์๋ฌ๋", ["์์พ"], ["๊ณ ๋จ๋ฐฑ", "์ ํ"], ["์ฐ์ "], 15, 350),
|
| 22 |
+
]
|
| 23 |
+
|
| 24 |
+
def recommend(mood, diet, allergens, max_time):
|
| 25 |
+
recs = []
|
| 26 |
+
for r in RECIPES:
|
| 27 |
+
if any(a in r.allergens for a in allergens):
|
| 28 |
+
continue
|
| 29 |
+
if r.cook_time > max_time:
|
| 30 |
+
continue
|
| 31 |
+
score = len(set(mood) & set(r.mood)) + len(set(diet) & set(r.diet))
|
| 32 |
+
recs.append((score, r))
|
| 33 |
+
recs.sort(reverse=True, key=lambda x: x[0])
|
| 34 |
+
return [r.name for _, r in recs[:3]] or ["์กฐ๊ฑด์ ๋ง๋ ๋ ์ํผ ์์"]
|
| 35 |
+
|
| 36 |
+
demo = gr.Interface(
|
| 37 |
+
fn=recommend,
|
| 38 |
+
inputs=[
|
| 39 |
+
gr.CheckboxGroup(["ํผ๊ณค", "๋ฐ์จ", "์์พ"], label="์ค๋์ ๊ธฐ๋ถ"),
|
| 40 |
+
gr.CheckboxGroup(["ํ์", "๊ณ ๋จ๋ฐฑ", "์ ํ"], label="์๋จ/์คํ์ผ"),
|
| 41 |
+
gr.CheckboxGroup(["๊ณ๋", "์ฐ์ "], label="ํผํ ์๋ ๋ฅด๊ฒ"),
|
| 42 |
+
gr.Slider(5, 60, value=20, step=5, label="์ต๋ ์กฐ๋ฆฌ์๊ฐ(๋ถ)")
|
| 43 |
+
],
|
| 44 |
+
outputs=gr.Textbox(label="์ถ์ฒ ๋ ์ํผ"),
|
| 45 |
+
title="์ค๋์ ํ๋ผ - ๊ฐ๋จ ๋ฐ๋ชจ",
|
| 46 |
+
)
|
| 47 |
+
|
| 48 |
+
if __name__ == "__main__":
|
| 49 |
+
demo.launch()
|
requirements.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
gradio>=4.40.0
|