| def calculate_bmi(weight, height): |
| height_m = height / 100 |
| return weight / (height_m ** 2) |
|
|
| def bmi_category(bmi): |
| if bmi < 18.5: |
| return "Underweight", "#3498db" |
| elif bmi < 25: |
| return "Normal Weight", "#2ecc71" |
| elif bmi < 30: |
| return "Overweight", "#f1c40f" |
| else: |
| return "Obese", "#e74c3c" |
|
|
| def build_prompt(name, gender, age, height, weight, goal, fitness_level, equipment): |
| bmi = calculate_bmi(weight, height) |
| bmi_status, status_color = bmi_category(bmi) |
| equipment_list = ", ".join(equipment) if equipment else "No Equipment" |
|
|
| prompt = f"""You are a professional trainer. Create a 5-day plan for {name}. |
| User Profile: Age {age}, Gender {gender}, BMI {bmi:.2f}, Goal {goal}, Level {fitness_level}, Equipment {equipment_list}. |
| |
| STRICT FORMATTING RULES: |
| 1. Label days as Day 1:, Day 2:, etc. |
| 2. For EVERY exercise, use this EXACT format: |
| - Exercise Name | Sets | Reps | Rest |
| 3. Example: - Dumbbell Bench Press | 3 | 10-12 | 60s |
| 4. Day 3 must be "Rest Day". |
| 5. Do not include any intro or outro text. Output only the days and exercises.""" |
|
|
| return prompt, bmi, bmi_status, status_color |