Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from phi.agent import Agent | |
| from phi.model.google import Gemini | |
| from phi.tools.duckduckgo import DuckDuckGo | |
| from dotenv import load_dotenv | |
| import os | |
| # Load environment variables | |
| load_dotenv() | |
| # Setup agent | |
| nutrition_agent = Agent( | |
| name="nutrition_agent", | |
| model=Gemini(id="gemini-2.5-flash-preview-04-17"), | |
| tools=[DuckDuckGo()], | |
| instructions=[ | |
| "You are the smartest AI Nutrition Assistant. ", | |
| "Ask the user for their name, age, gender, dietary preference (veg/non-veg), location, " | |
| "health complaints, fitness goals, food likes/dislikes, and calorie needs. " | |
| "Then provide a detailed personalized diet plan (breakfast/lunch/dinner) " | |
| "along with clear nutritional explanations tailored to their inputs.", | |
| "Always respond in well-structured markdown format using clear headings like ### Breakfast, ### Lunch, etc.", | |
| "Do not generate one big paragraph. Instead, use bullet points, headings, and whitespace for clarity." | |
| ], | |
| show_tool_calls=True, | |
| markdown=True | |
| ) | |
| # Function to call agent | |
| def generate_diet(name, age, gender, diet_type, location, health_issues, goals, likes, dislikes, calories): | |
| user_input = ( | |
| f"My name is {name}. I am {age} years old, {gender}, {diet_type}, living in {location}. " | |
| f"I have the following health issues: {health_issues}. " | |
| f"My goal is to {goals}. I like eating {likes} but dislike {dislikes}. " | |
| f"My daily calorie need is {calories}. " | |
| "Please generate a personalized meal plan broken into breakfast, lunch, snacks, dinner. " | |
| "Also include a clear explanation of nutritional content and a conclusion for health advice." | |
| ) | |
| # Run the agent | |
| result = nutrition_agent.run(user_input) | |
| # Ensure output is readable | |
| if hasattr(result, "content"): | |
| return result.content | |
| elif isinstance(result, str): | |
| return result | |
| else: | |
| return "⚠️ Unexpected response format. Please try again." | |
| # Gradio UI | |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: | |
| gr.Markdown("## 🥗 Smartest AI Nutrition Assistant") | |
| with gr.Row(): | |
| with gr.Column(): | |
| name = gr.Textbox(label="Name") | |
| age = gr.Textbox(label="Age") | |
| gender = gr.Radio(["Male", "Female", "Other"], label="Gender") | |
| diet_type = gr.Radio(["Vegetarian", "Non-Vegetarian"], label="Diet Type") | |
| location = gr.Textbox(label="Location") | |
| health_issues = gr.Textbox(label="Health Issues") | |
| goals = gr.Textbox(label="Fitness Goals") | |
| likes = gr.Textbox(label="Foods You Like") | |
| dislikes = gr.Textbox(label="Foods You Dislike") | |
| calories = gr.Textbox(label="Daily Calorie Requirement") | |
| submit = gr.Button("Get Diet Plan") | |
| with gr.Column(): | |
| output = gr.Markdown(label="🧠 Your Personalized Diet Plan") | |
| submit.click( | |
| fn=generate_diet, | |
| inputs=[name, age, gender, diet_type, location, health_issues, goals, likes, dislikes, calories], | |
| outputs=output | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |