Subbu1304 commited on
Commit
a273045
·
verified ·
1 Parent(s): a3a8858

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -41
app.py CHANGED
@@ -1,6 +1,6 @@
1
  import gradio as gr
2
 
3
- # Food database
4
  FOOD_DATABASE = {
5
  "veg": {
6
  "paneer": {
@@ -48,8 +48,8 @@ FOOD_DATABASE = {
48
  }
49
  }
50
 
51
- VEG_INGREDIENTS = ["Paneer", "Mushroom", "Aloo", "Brinjal", "Palak"]
52
- NONVEG_TYPES = ["Chicken", "Fish", "Mutton", "Pork"]
53
  NUTRITION_OPTIONS = ["Low Calorie", "High Protein", "Low Carb", "Balanced", "Gluten Free"]
54
 
55
  class ChatState:
@@ -66,7 +66,7 @@ def process_message(message, history):
66
  if chat_state.step == "initial":
67
  if "yes" in message.lower() or "yeah" in message.lower():
68
  chat_state.step = "category"
69
- return "Great! Please select your preferred category: Vegetarian, Non-Vegetarian."
70
  return "I'm here to help you customize your food. Would you like to proceed? (Yes/No)"
71
 
72
  # Step 2: Category selection
@@ -74,17 +74,30 @@ def process_message(message, history):
74
  chat_state.category = message.lower()
75
  chat_state.step = "ingredient"
76
 
77
- if "vegetarian" in message.lower():
78
  return f"Great! What main ingredient would you like? Available options: {', '.join(VEG_INGREDIENTS)}"
79
- elif "non-vegetarian" in message.lower():
80
  return f"Great! What type of meat would you prefer? Available options: {', '.join(NONVEG_TYPES)}"
81
  return "Please select either Vegetarian or Non-Vegetarian."
82
 
83
  # Step 3: Ingredient selection
84
  elif chat_state.step == "ingredient":
85
  chat_state.ingredient = message.lower().strip() # Ensure no extra spaces or case issues
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  chat_state.step = "nutrition"
87
- return f"Perfect! Now, select your nutrition preference: {', '.join(NUTRITION_OPTIONS)}"
88
 
89
  # Step 4: Nutrition preference
90
  elif chat_state.step == "nutrition":
@@ -94,14 +107,6 @@ def process_message(message, history):
94
  category = "nonveg" if "non" in chat_state.category else "veg"
95
  ingredient = chat_state.ingredient
96
 
97
- # Debugging: Print the state before fetching food items
98
- print(f"Category: {category}, Ingredient: {ingredient}, Nutrition: {nutrition}")
99
-
100
- # Check if the ingredient exists in the database for the selected category
101
- if ingredient not in FOOD_DATABASE[category]:
102
- chat_state.step = "initial" # Reset for new conversation
103
- return f"Sorry, I don't have any data for {ingredient}. Please select another ingredient."
104
-
105
  # Try to fetch the food items from the correct category, ingredient, and nutrition preference
106
  try:
107
  # Access food items based on category, ingredient, and nutrition preference
@@ -120,29 +125,3 @@ def process_message(message, history):
120
  return f"Sorry, I don't have any dishes for this combination."
121
 
122
  return "I'm not sure how to help with that. Would you like to start over?"
123
-
124
- # Gradio interface for the chatbot
125
- def create_gradio_interface():
126
- with gr.Blocks() as demo:
127
- chatbot = gr.Chatbot([])
128
- msg = gr.Textbox(show_label=False, placeholder="Enter text and press enter")
129
- clear = gr.Button("Clear")
130
-
131
- def user(user_message, history):
132
- return "", history + [[user_message, None]]
133
-
134
- def bot(history):
135
- user_message = history[-1][0]
136
- bot_message = process_message(user_message, history)
137
- history[-1][1] = bot_message
138
- return history
139
-
140
- msg.submit(user, [msg, chatbot], [msg, chatbot]).then(bot, chatbot, chatbot)
141
- clear.click(lambda: None, None, chatbot)
142
-
143
- return demo
144
-
145
- # Launch the Gradio app
146
- if __name__ == "__main__":
147
- demo = create_gradio_interface()
148
- demo.launch(share=True)
 
1
  import gradio as gr
2
 
3
+ # Corrected Food Database with consistent food item names
4
  FOOD_DATABASE = {
5
  "veg": {
6
  "paneer": {
 
48
  }
49
  }
50
 
51
+ VEG_INGREDIENTS = ["Paneer", "Mushroom", "Aloo"]
52
+ NONVEG_TYPES = ["Chicken", "Fish", "Mutton"]
53
  NUTRITION_OPTIONS = ["Low Calorie", "High Protein", "Low Carb", "Balanced", "Gluten Free"]
54
 
55
  class ChatState:
 
66
  if chat_state.step == "initial":
67
  if "yes" in message.lower() or "yeah" in message.lower():
68
  chat_state.step = "category"
69
+ return "Great! Please select your preferred category: Veg, nonveg."
70
  return "I'm here to help you customize your food. Would you like to proceed? (Yes/No)"
71
 
72
  # Step 2: Category selection
 
74
  chat_state.category = message.lower()
75
  chat_state.step = "ingredient"
76
 
77
+ if "veg" in message.lower():
78
  return f"Great! What main ingredient would you like? Available options: {', '.join(VEG_INGREDIENTS)}"
79
+ elif "nonveg" in message.lower():
80
  return f"Great! What type of meat would you prefer? Available options: {', '.join(NONVEG_TYPES)}"
81
  return "Please select either Vegetarian or Non-Vegetarian."
82
 
83
  # Step 3: Ingredient selection
84
  elif chat_state.step == "ingredient":
85
  chat_state.ingredient = message.lower().strip() # Ensure no extra spaces or case issues
86
+ # Get the list of available food items for this ingredient
87
+ category = "nonveg" if "non" in chat_state.category else "veg"
88
+
89
+ # Check if the ingredient exists in the food database
90
+ if chat_state.ingredient not in FOOD_DATABASE[category]:
91
+ chat_state.step = "initial" # Reset for new conversation
92
+ return f"Sorry, I don't have any data for {message}. Please select another ingredient."
93
+
94
+ # List available food items based on ingredient
95
+ food_items = FOOD_DATABASE[category][chat_state.ingredient]
96
+ food_item_names = [item['name'] for nutrition in food_items for item in food_items[nutrition]]
97
+
98
+ # Show available food items
99
  chat_state.step = "nutrition"
100
+ return f"Great! Here are the available food items for {message}:\n{', '.join(food_item_names)}\nNow, select your nutrition preference: {', '.join(NUTRITION_OPTIONS)}"
101
 
102
  # Step 4: Nutrition preference
103
  elif chat_state.step == "nutrition":
 
107
  category = "nonveg" if "non" in chat_state.category else "veg"
108
  ingredient = chat_state.ingredient
109
 
 
 
 
 
 
 
 
 
110
  # Try to fetch the food items from the correct category, ingredient, and nutrition preference
111
  try:
112
  # Access food items based on category, ingredient, and nutrition preference
 
125
  return f"Sorry, I don't have any dishes for this combination."
126
 
127
  return "I'm not sure how to help with that. Would you like to start over?"