Spaces:
Sleeping
Sleeping
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() | |