diff --git a/ai_agent_tutorials/ai_health_fitness_agent/README.md b/ai_agent_tutorials/ai_health_fitness_agent/README.md
new file mode 100644
index 0000000..5441938
--- /dev/null
+++ b/ai_agent_tutorials/ai_health_fitness_agent/README.md
@@ -0,0 +1,67 @@
+# AI Health & Fitness Planner Agent 🏋️♂️
+
+The **AI Health & Fitness Planner** is a personalized health and fitness Agent powered by Phidata's AI Agent framework. This app generates tailored dietary and fitness plans based on user inputs such as age, weight, height, activity level, dietary preferences, and fitness goals.
+
+Here's a small demo of the application:
+
+[Watch the demo video here](https://drive.google.com/file/d/1ZdAihfg9NuEnqEFTdDWyRqVe7qTWdz80/view?usp=sharing)
+
+---
+
+## Features
+
+- **Health Agent and Fitness Agent**
+ - The app has two phidata agents that are specialists in giving Diet advice and Fitness/workout advice respectively.
+
+- **Personalized Dietary Plans**:
+ - Generates detailed meal plans (breakfast, lunch, dinner, and snacks).
+ - Includes important considerations like hydration, electrolytes, and fiber intake.
+ - Supports various dietary preferences like Keto, Vegetarian, Low Carb, etc.
+
+- **Personalized Fitness Plans**:
+ - Provides customized exercise routines based on fitness goals.
+ - Covers warm-ups, main workouts, and cool-downs.
+ - Includes actionable fitness tips and progress tracking advice.
+
+- **Interactive Q&A**:
+ - Allows users to ask follow-up questions about their plans.
+ - Provides AI-generated responses for personalized guidance.
+
+---
+
+## Requirements
+
+The application requires the following Python libraries:
+
+- `phidata`
+- `google-generativeai`
+- `anthropic`
+- `streamlit`
+
+Ensure these dependencies are installed via the `requirements.txt` file according to their mentioned versions
+
+---
+
+## How to Run
+
+Follow the steps below to set up and run the application:
+Before anything else, Please get a free Gemini API Key provided by Google AI here: https://aistudio.google.com/apikey
+
+
+
+1. **Clone the Repository**:
+ ```bash
+ git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
+ cd ai_agent_tutorials```
+
+2. **Install the dependencies**
+ ```bash
+ pip install -r requirements.txt
+ ```
+3. **Run the Streamlit App(s)**
+ If you run the application:
+ ```bash
+ streamlit run ai_health-fitness_agent/health_agent.py
+ ```
+
+
diff --git a/ai_agent_tutorials/ai_health_fitness_agent/ai_health_fitness.mp4 b/ai_agent_tutorials/ai_health_fitness_agent/ai_health_fitness.mp4
new file mode 100644
index 0000000..8d267f6
Binary files /dev/null and b/ai_agent_tutorials/ai_health_fitness_agent/ai_health_fitness.mp4 differ
diff --git a/ai_agent_tutorials/ai_health_fitness_agent/health_agent.py b/ai_agent_tutorials/ai_health_fitness_agent/health_agent.py
new file mode 100644
index 0000000..84783c0
--- /dev/null
+++ b/ai_agent_tutorials/ai_health_fitness_agent/health_agent.py
@@ -0,0 +1,244 @@
+import streamlit as st
+from phi.agent import Agent
+from phi.model.google import Gemini
+
+st.set_page_config(
+ page_title="AI Health & Fitness Planner",
+ page_icon="🏋️♂️",
+ layout="wide",
+ initial_sidebar_state="expanded"
+)
+
+st.markdown("""
+
+""", unsafe_allow_html=True)
+
+def display_dietary_plan(plan_content):
+ with st.expander("📋 Your Personalized Dietary Plan", expanded=True):
+ col1, col2 = st.columns([2, 1])
+
+ with col1:
+ st.markdown("### 🎯 Why this plan works")
+ st.info(plan_content.get("why_this_plan_works", "Information not available"))
+ st.markdown("### 🍽️ Meal Plan")
+ st.write(plan_content.get("meal_plan", "Plan not available"))
+
+ with col2:
+ st.markdown("### ⚠️ Important Considerations")
+ considerations = plan_content.get("important_considerations", "").split('\n')
+ for consideration in considerations:
+ if consideration.strip():
+ st.warning(consideration)
+
+def display_fitness_plan(plan_content):
+ with st.expander("💪 Your Personalized Fitness Plan", expanded=True):
+ col1, col2 = st.columns([2, 1])
+
+ with col1:
+ st.markdown("### 🎯 Goals")
+ st.success(plan_content.get("goals", "Goals not specified"))
+ st.markdown("### 🏋️♂️ Exercise Routine")
+ st.write(plan_content.get("routine", "Routine not available"))
+
+ with col2:
+ st.markdown("### 💡 Pro Tips")
+ tips = plan_content.get("tips", "").split('\n')
+ for tip in tips:
+ if tip.strip():
+ st.info(tip)
+
+def main():
+ if 'dietary_plan' not in st.session_state:
+ st.session_state.dietary_plan = {}
+ st.session_state.fitness_plan = {}
+ st.session_state.qa_pairs = []
+ st.session_state.plans_generated = False
+
+ st.title("🏋️♂️ AI Health & Fitness Planner")
+ st.markdown("""
+
+ Get personalized dietary and fitness plans tailored to your goals and preferences.
+ Our AI-powered system considers your unique profile to create the perfect plan for you.
+
+ """, unsafe_allow_html=True)
+
+ with st.sidebar:
+ st.header("🔑 API Configuration")
+ gemini_api_key = st.text_input(
+ "Gemini API Key",
+ type="password",
+ help="Enter your Gemini API key to access the service"
+ )
+
+ if not gemini_api_key:
+ st.warning("⚠️ Please enter your Gemini API Key to proceed")
+ st.markdown("[Get your API key here](https://aistudio.google.com/apikey)")
+ return
+
+ st.success("API Key accepted!")
+
+ if gemini_api_key:
+ try:
+ gemini_model = Gemini(id="gemini-1.5-flash", api_key=gemini_api_key)
+ except Exception as e:
+ st.error(f"❌ Error initializing Gemini model: {e}")
+ return
+
+ st.header("👤 Your Profile")
+
+ col1, col2 = st.columns(2)
+
+ with col1:
+ age = st.number_input("Age", min_value=10, max_value=100, step=1, help="Enter your age")
+ height = st.number_input("Height (cm)", min_value=100.0, max_value=250.0, step=0.1)
+ activity_level = st.selectbox(
+ "Activity Level",
+ options=["Sedentary", "Lightly Active", "Moderately Active", "Very Active", "Extremely Active"],
+ help="Choose your typical activity level"
+ )
+ dietary_preferences = st.selectbox(
+ "Dietary Preferences",
+ options=["Vegetarian", "Keto", "Gluten Free", "Low Carb", "Dairy Free"],
+ help="Select your dietary preference"
+ )
+
+ with col2:
+ weight = st.number_input("Weight (kg)", min_value=20.0, max_value=300.0, step=0.1)
+ sex = st.selectbox("Sex", options=["Male", "Female", "Other"])
+ fitness_goals = st.selectbox(
+ "Fitness Goals",
+ options=["Lose Weight", "Gain Muscle", "Endurance", "Stay Fit", "Strength Training"],
+ help="What do you want to achieve?"
+ )
+
+ if st.button("🎯 Generate My Personalized Plan", use_container_width=True):
+ with st.spinner("Creating your perfect health and fitness routine..."):
+ try:
+ dietary_agent = Agent(
+ name="Dietary Expert",
+ role="Provides personalized dietary recommendations",
+ model=gemini_model,
+ instructions=[
+ "Consider the user's input, including dietary restrictions and preferences.",
+ "Suggest a detailed meal plan for the day, including breakfast, lunch, dinner, and snacks.",
+ "Provide a brief explanation of why the plan is suited to the user's goals.",
+ "Focus on clarity, coherence, and quality of the recommendations.",
+ ]
+ )
+
+ fitness_agent = Agent(
+ name="Fitness Expert",
+ role="Provides personalized fitness recommendations",
+ model=gemini_model,
+ instructions=[
+ "Provide exercises tailored to the user's goals.",
+ "Include warm-up, main workout, and cool-down exercises.",
+ "Explain the benefits of each recommended exercise.",
+ "Ensure the plan is actionable and detailed.",
+ ]
+ )
+
+ user_profile = f"""
+ Age: {age}
+ Weight: {weight}kg
+ Height: {height}cm
+ Sex: {sex}
+ Activity Level: {activity_level}
+ Dietary Preferences: {dietary_preferences}
+ Fitness Goals: {fitness_goals}
+ """
+
+ dietary_plan_response = dietary_agent.run(user_profile)
+ dietary_plan = {
+ "why_this_plan_works": "High Protein, Healthy Fats, Moderate Carbohydrates, and Caloric Balance",
+ "meal_plan": dietary_plan_response.content,
+ "important_considerations": """
+ - Hydration: Drink plenty of water throughout the day
+ - Electrolytes: Monitor sodium, potassium, and magnesium levels
+ - Fiber: Ensure adequate intake through vegetables and fruits
+ - Listen to your body: Adjust portion sizes as needed
+ """
+ }
+
+ fitness_plan_response = fitness_agent.run(user_profile)
+ fitness_plan = {
+ "goals": "Build strength, improve endurance, and maintain overall fitness",
+ "routine": fitness_plan_response.content,
+ "tips": """
+ - Track your progress regularly
+ - Allow proper rest between workouts
+ - Focus on proper form
+ - Stay consistent with your routine
+ """
+ }
+
+ st.session_state.dietary_plan = dietary_plan
+ st.session_state.fitness_plan = fitness_plan
+ st.session_state.plans_generated = True
+ st.session_state.qa_pairs = []
+
+ display_dietary_plan(dietary_plan)
+ display_fitness_plan(fitness_plan)
+
+ except Exception as e:
+ st.error(f"❌ An error occurred: {e}")
+
+ if st.session_state.plans_generated:
+ st.header("❓ Questions about your plan?")
+ question_input = st.text_input("What would you like to know?")
+
+ if st.button("Get Answer"):
+ if question_input:
+ with st.spinner("Finding the best answer for you..."):
+ dietary_plan = st.session_state.dietary_plan
+ fitness_plan = st.session_state.fitness_plan
+
+ context = f"Dietary Plan: {dietary_plan.get('meal_plan', '')}\n\nFitness Plan: {fitness_plan.get('routine', '')}"
+ full_context = f"{context}\nUser Question: {question_input}"
+
+ try:
+ agent = Agent(model=gemini_model, show_tool_calls=True, markdown=True)
+ run_response = agent.run(full_context)
+
+ if hasattr(run_response, 'content'):
+ answer = run_response.content
+ else:
+ answer = "Sorry, I couldn't generate a response at this time."
+
+ st.session_state.qa_pairs.append((question_input, answer))
+ except Exception as e:
+ st.error(f"❌ An error occurred while getting the answer: {e}")
+
+ if st.session_state.qa_pairs:
+ st.header("💬 Q&A History")
+ for question, answer in st.session_state.qa_pairs:
+ st.markdown(f"**Q:** {question}")
+ st.markdown(f"**A:** {answer}")
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/ai_agent_tutorials/ai_health_fitness_agent/requirements.txt b/ai_agent_tutorials/ai_health_fitness_agent/requirements.txt
new file mode 100644
index 0000000..2773c90
--- /dev/null
+++ b/ai_agent_tutorials/ai_health_fitness_agent/requirements.txt
@@ -0,0 +1,4 @@
+phidata==2.5.33
+google-generativeai==0.8.3
+anthropic==0.39.0
+streamlit==1.40.2
\ No newline at end of file