def calculate_bmi(weight, height): """ Calculate BMI from weight (kg) and height (cm) """ height_m = height / 100 return weight / (height_m ** 2) def bmi_category(bmi): """ Categorize BMI value """ if bmi < 18.5: return "Underweight" elif bmi < 25: return "Normal Weight" elif bmi < 30: return "Overweight" else: return "Obese" def build_prompt(name, age, gender, height, weight, goal, fitness_level, equipment): """ Build a prompt for the AI model including all user parameters """ bmi = calculate_bmi(weight, height) bmi_status = bmi_category(bmi) equipment_list = ", ".join(equipment) if equipment else "No Equipment" # Age-specific considerations age_considerations = "" if age < 18: age_considerations = "\n⚠️ Note: User is under 18. Focus on proper form and bodyweight exercises. Avoid heavy lifting." elif age > 50: age_considerations = "\n⚠️ Note: User is over 50. Focus on joint-friendly exercises, mobility work, and lower impact activities." # Goal-specific instructions goal_instructions = { "Weight Loss": "Focus on compound exercises and include cardio intervals. Higher reps with moderate weight.", "Build Muscle": "Focus on hypertrophy with moderate weights and higher reps. Include progressive overload.", "Strength Gain": "Focus on lower reps with heavier weights. Include compound lifts.", "Abs Building": "Include core-specific exercises along with full-body compound movements.", "Flexibility": "Include dynamic and static stretching, yoga poses, and mobility work." } specific_instruction = goal_instructions.get(goal, "Balance cardio and strength training.") prompt = f"""You are a certified professional fitness trainer. Create a comprehensive 5-day workout plan. USER PROFILE: - Name: {name} - Age: {age} years - Gender: {gender} - Height: {height} cm - Weight: {weight} kg - BMI: {bmi:.2f} ({bmi_status}) - Primary Goal: {goal} - Fitness Level: {fitness_level} - Available Equipment: {equipment_list} {age_considerations} SPECIFIC FOCUS: {specific_instruction} REQUIREMENTS FOR THE WORKOUT PLAN: 1. Create a COMPLETE 5-day workout plan with clear "Day 1" through "Day 5" headers 2. For each day, include 4-6 exercises 3. For EVERY exercise, specify: - Exercise name - Number of sets and reps (e.g., "3 sets of 12 reps") - Rest period between sets (e.g., "Rest 60 seconds") 4. Include a brief warm-up recommendation for each day 5. Include a cool-down/stretch recommendation 6. Adjust exercise intensity based on: - BMI category ({bmi_status}) - Fitness level ({fitness_level}) - Age considerations 7. Ensure all exercises are safe and appropriate for a {fitness_level} 8. Modify exercises based on available equipment: {equipment_list} Please provide a well-structured, easy-to-follow 5-day workout plan that addresses the user's specific goal of {goal}. """ return prompt, bmi, bmi_status