File size: 5,107 Bytes
d922512
34e2abf
33933ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34e2abf
d922512
 
 
33933ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d922512
 
33933ea
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import gradio as gr

# Step 1: Greeting the user and asking if they'd like to customize food
def start_conversation(user_input):
    # Checking if the input is a positive response
    if user_input.lower() in ["yes", "yeah"]:
        return "Great! Please select a food category:"
    else:
        return "Okay, let me know if you change your mind!"

# Step 2: Show categories based on the user's interest
def select_category(selected_category):
    categories = {
        "Veg": "Great! You selected Veg. Now, please select your nutrition preference.",
        "Non-Veg": "Great! You selected Non-Veg. Now, please select your nutrition preference.",
        "Vegan": "Great! You selected Vegan. Now, please select your nutrition preference.",
        "Pasta & Noodles": "Great! You selected Pasta & Noodles. Now, please select your nutrition preference.",
        "Breads & Baked Goods": "Great! You selected Breads & Baked Goods. Now, please select your nutrition preference."
    }
    return categories.get(selected_category, "Please select a valid category.")


# Step 3: Show nutrition options based on the selected category
def select_nutrition(selected_nutrition):
    nutrition_options = {
        "Protein Rich": "Now, please select ingredients from the list below.",
        "Low Carbs": "Now, please select ingredients from the list below.",
        "Gluten-Free": "Now, please select ingredients from the list below."
    }
    return nutrition_options.get(selected_nutrition, "Please select a valid nutrition option.")


# Step 4: Show ingredients based on the category and nutrition selection
def show_ingredients(selected_category, selected_nutrition):
    # Ingredients based on category and nutrition preference
    ingredients = {
        "Veg": ["Paneer", "Potato", "Cabbage", "Gobi"],
        "Non-Veg": ["Chicken", "Fish", "Mutton"],
        "Vegan": ["Tofu", "Tempeh", "Seitan"],
        "Pasta & Noodles": ["Whole Wheat Pasta", "Rice Noodles"],
        "Breads & Baked Goods": ["Whole Grain Bread", "Gluten-Free Bread"]
    }

    return f"Here are the ingredients available for {selected_category} with {selected_nutrition} option: " + ", ".join(ingredients.get(selected_category, []))


# Step 5: Show dishes based on the selected ingredient
def show_dishes(selected_ingredient):
    dishes = {
        "Paneer": ["Paneer Tikka", "Paneer Curry", "Paneer Manchurian", "Paneer Butter Masala"],
        "Potato": ["Aloo Dal", "Potato and Chickpea Salad", "Paneer-Stuffed Potatoes", "Potato and Black Bean Tacos"],
        "Cabbage": ["Cabbage and Chickpea Curry", "Cabbage Stir-Fry with Tofu", "Cabbage and Lentil Soup"],
        "Chicken": ["Grilled Chicken Breast", "Chicken Tikka Masala", "Chicken Stir-Fry", "Chicken Biryani"],
        "Fish": ["Grilled Salmon", "Fish Curry", "Baked Fish with Herbs", "Fish Tacos"],
        "Mutton": ["Mutton Curry", "Mutton Biryani", "Grilled Lamb Chops", "Mutton Rogan Josh"],
        "Tofu": ["Tofu Stir-Fry", "Crispy Tofu Nuggets", "Tofu Scramble", "Tofu Curry"],
        "Tempeh": ["Tempeh Bacon", "BBQ Tempeh", "Tempeh Stir-Fry", "Marinated Tempeh"],
        "Seitan": ["Seitan Steak", "Seitan Wings", "Seitan Stir-Fry", "Seitan Curry"]
    }
    return f"Based on your selection, here are the food items you can make: " + ", ".join(dishes.get(selected_ingredient, []))


# Gradio interface setup
def create_gradio_interface():
    # Step-by-step interaction using Gradio components
    with gr.Blocks() as demo:
        gr.Markdown("# Food Customization Assistant")
        gr.Markdown("Talk to the bot and customize your food preferences based on category.")

        # Greeting Step
        user_input = gr.Textbox(label="Your Message", placeholder="Type 'yes' or 'yeah' to begin.", lines=1)
        bot_response = gr.Textbox(label="Bot Response", lines=2)
        
        # First interaction: Ask user if they want to customize food
        user_input.submit(start_conversation, user_input, bot_response)

        # Category Selection
        category_dropdown = gr.Dropdown(
            choices=["Veg", "Non-Veg", "Vegan", "Pasta & Noodles", "Breads & Baked Goods"], 
            label="Select Food Category"
        )
        category_dropdown.change(select_category, category_dropdown, bot_response)

        # Nutrition Preferences
        nutrition_dropdown = gr.Dropdown(
            choices=["Protein Rich", "Low Carbs", "Gluten-Free"], 
            label="Select Nutrition Preference"
        )
        nutrition_dropdown.change(select_nutrition, nutrition_dropdown, bot_response)

        # Show Ingredients based on category & nutrition
        ingredients_output = gr.Textbox(label="Ingredients List", lines=2)
        ingredients_output.change(show_ingredients, [category_dropdown, nutrition_dropdown], ingredients_output)

        # Ingredient Selection
        ingredient_dropdown = gr.Dropdown(label="Select Ingredient")
        ingredient_dropdown.change(show_dishes, ingredient_dropdown, bot_response)

        # Start Gradio Interface
        demo.launch()

if __name__ == "__main__":
    create_gradio_interface()