samyaic's picture
Update app.py
5e070e3 verified
import gradio as gr
import requests
import os
API_URL = "https://api-inference.huggingface.co/models/meta-llama/Llama-3.2-1B"
headers = {"Authorization": f"Bearer {os.getenv('HF_API_KEY')}"}
def calculer_besoins_caloriques(age, poids, taille, sexe, objectif):
# Calcul du BMR en fonction du sexe
if sexe == "Homme":
bmr = 88.362 + (13.397 * poids) + (4.799 * taille) - (5.677 * age)
else:
bmr = 447.593 + (9.247 * poids) + (3.098 * taille) - (4.330 * age)
# Ajustement en fonction de l'objectif
if objectif.lower() == "perte de poids":
return bmr * 0.8 # Exemple de déficit calorique
elif objectif.lower() == "gain de poids":
return bmr * 1.2 # Exemple de surplus calorique
else:
return bmr # Maintien du poids
def generer_programme(age, poids, taille, sexe, objectif, preferences):
# Calcul des besoins caloriques quotidiens
calories_journalieres = calculer_besoins_caloriques(age, poids, taille, sexe, objectif)
# Création du prompt détaillé pour le modèle
prompt = (
f"Créer un programme alimentaire détaillé pour une personne de {age} ans, pesant {poids} kg, "
f"mesurant {taille} cm, de sexe {sexe}, avec l'objectif '{objectif}', et les préférences alimentaires suivantes : {preferences}. "
f"Le programme doit inclure un petit-déjeuner, déjeuner, dîner et une collation, en respectant un total de {int(calories_journalieres)} calories. "
f"Pour chaque repas, incluez les aliments spécifiques, les quantités et les macronutriments (protéines, glucides, lipides) pour atteindre ce total calorique."
)
# Envoi de la requête à l'API
response = requests.post(API_URL, headers=headers, json={"inputs": prompt})
if response.status_code == 200:
response_data = response.json()
if isinstance(response_data, list):
response_data = response_data[0]
return response_data.get("generated_text", "Pas de réponse disponible.")
else:
error_message = response.json().get("error", "Problème inconnu")
return f"Erreur : {response.status_code} - {error_message}"
# Configuration de l'interface utilisateur avec Gradio
inputs = [
gr.Number(label="Âge"),
gr.Number(label="Poids (kg)"),
gr.Number(label="Taille (cm)"),
gr.Radio(label="Sexe", choices=["Homme", "Femme"]),
gr.Textbox(label="Objectif (ex : Perte de poids, Gain de poids)"),
gr.Textbox(label="Préférences alimentaires (ex : végétarien, sans gluten)")
]
outputs = gr.Textbox(label="Programme Alimentaire")
gr.Interface(
fn=generer_programme,
inputs=inputs,
outputs=outputs,
title="Générateur de Programme Alimentaire",
description="Entrez vos informations pour obtenir un programme alimentaire personnalisé avec des repas équilibrés."
).launch()