Logo de AiToolGo

Créez votre propre nutritionniste IA : LLM, RAG et nutrition personnalisée

Discussion approfondie
Technique, mais accessible
 0
 0
 1
Cet article guide les lecteurs dans la création d'un nutritionniste IA personnalisé à l'aide de techniques d'IA avancées comme les LLM, l'appel de fonctions et le RAG. Il détaille la pile technologique, la configuration de l'environnement et l'implémentation de fonctions nutritionnelles spécialisées, aboutissant à un assistant fonctionnel capable de répondre aux requêtes nutritionnelles, de calculer l'IMC et de fournir des conseils diététiques personnalisés.
  • points principaux
  • perspectives uniques
  • applications pratiques
  • sujets clés
  • idées clés
  • résultats d'apprentissage
  • points principaux

    • 1
      Guide complet sur la création d'un assistant nutritionnel IA
    • 2
      Intégration de techniques d'IA avancées pour des conseils nutritionnels personnalisés
    • 3
      Implémentation pratique avec des applications et des exemples concrets
  • perspectives uniques

    • 1
      Combine LLM, appel de fonctions et RAG pour une précision accrue dans les conseils nutritionnels
    • 2
      Démontre comment créer une base de connaissances nutritionnelles consultable à l'aide d'embeddings vectoriels
  • applications pratiques

    • L'article fournit une approche étape par étape pour construire un nutritionniste IA fonctionnel, rendant la science de la nutrition accessible et personnalisée pour les utilisateurs.
  • sujets clés

    • 1
      Grands modèles linguistiques (LLM)
    • 2
      Appel de fonctions en IA
    • 3
      Génération augmentée par récupération (RAG)
  • idées clés

    • 1
      Application pratique de l'IA dans la gestion de la santé personnelle
    • 2
      Implémentation détaillée de fonctions nutritionnelles pour des calculs précis
    • 3
      Utilisation innovante des techniques d'IA pour améliorer l'interaction de l'utilisateur avec les données nutritionnelles
  • résultats d'apprentissage

    • 1
      Comprendre comment intégrer les LLM avec l'appel de fonctions pour des applications pratiques.
    • 2
      Apprendre à construire une base de connaissances nutritionnelles à l'aide d'embeddings vectoriels.
    • 3
      Acquérir des connaissances sur la création d'assistants IA personnalisés pour la santé et la nutrition.
exemples
tutoriels
exemples de code
visuels
fondamentaux
contenu avancé
conseils pratiques
meilleures pratiques

Introduction : Le besoin d'un nutritionniste IA personnel

Dans l'environnement trépidant d'aujourd'hui, maintenir une alimentation équilibrée est de plus en plus difficile. Les conseils nutritionnels contradictoires et les régimes à la mode laissent souvent les individus confus. Un nutritionniste personnel IA, disponible 24h/24 et 7j/7, peut répondre à des questions nutritionnelles spécifiques, calculer les besoins nutritionnels et fournir des recommandations personnalisées. Ceci est maintenant possible grâce aux avancées de l'intelligence artificielle, en particulier les grands modèles linguistiques (LLM) et les techniques de récupération. Cet article vous guide dans la création de votre propre assistant nutritionniste personnel IA, combinant le LLM Gemini de Google avec des fonctions nutritionnelles spécialisées et une base de connaissances de données nutritionnelles réelles. L'assistant peut répondre à des questions sur la nutrition des aliments, calculer l'IMC, estimer les besoins caloriques quotidiens, recommander des aliments en fonction de critères et fournir des conseils nutritionnels fondés sur des preuves.

Comprendre la pile technologique : LLM, appel de fonctions et RAG

Notre assistant nutritionniste personnel IA est alimenté par trois technologies clés : les grands modèles linguistiques (LLM) comme Gemini 1.5 Pro de Google, l'appel de fonctions (Function Calling) et la génération augmentée par récupération (Retrieval-Augmented Generation - RAG). Les LLM comprennent et génèrent du texte de type humain, excellant dans les requêtes en langage naturel sur la nutrition. L'appel de fonctions permet au LLM d'utiliser des calculs spécialisés comme l'IMC ou les besoins caloriques. Le RAG ancre les réponses de l'assistant dans des données nutritionnelles factuelles, en récupérant des informations pertinentes d'une base de données nutritionnelles. Ces technologies travaillent ensemble pour comprendre les requêtes des utilisateurs, récupérer des faits nutritionnels et gérer des calculs précis.

Configuration de votre environnement de développement

Pour configurer l'environnement de développement, installez les bibliothèques nécessaires et configurez l'accès aux API. Utilisez les commandes suivantes : ```bash !pip install -U -q "google-genai==1.7.0" !pip install chromadb ``` Ces commandes installent le SDK Python Google Generative AI et ChromaDB pour la base de données vectorielle. Ensuite, configurez l'accès à l'API Google Gemini : ```python import google.generativeai as genai import os # Configuration de la clé API GOOGLE_API_KEY = "VOTRE_CLE_API" # Remplacez par votre clé API réelle genai.configure(api_key=GOOGLE_API_KEY) ``` Remplacez `VOTRE_CLE_API` par votre clé API Gemini réelle du site Google AI Studio.

Construction de la base de connaissances nutritionnelles

Construisez la base de connaissances nutritionnelles en chargeant un ensemble complet de données sur les faits nutritionnels à l'aide de pandas : ```python import pandas as pd import numpy as np # Chargement des données nutritionnelles nutrition_data = pd.read_csv('/kaggle/input/nutrition-facts-for-3636-foods/nutrition_facts.csv') nutrition_data.head() ``` Cet ensemble de données contient des informations nutritionnelles détaillées pour plus de 3 600 aliments. Convertissez ces données en embeddings vectoriels à l'aide de ChromaDB : ```python # Création des embeddings pour les données nutritionnelles from chromadb.utils import embedding_functions import chromadb # Initialisation du client ChromaDB chroma_client = chromadb.Client() # Création d'une collection pour les données nutritionnelles nutrition_collection = chroma_client.create_collection( name="nutrition_facts", embedding_function=embedding_functions.DefaultEmbeddingFunction() ) # Préparation des données pour l'embedding for i, row in nutrition_data.iterrows(): # Création d'un document avec les informations nutritionnelles document = f"Aliment : {row['name']}, Calories : {row['calories']}, Protéines : {row['protein_g']}g, Lipides : {row['fat_g']}g, Glucides : {row['carbohydrate_g']}g" # Ajout à la collection avec un ID unique nutrition_collection.add( documents=[document], ids=[f"food_{i}"] ) ``` Ce code crée une collection ChromaDB et la peuple avec des données nutritionnelles, permettant une recherche sémantique.

Création de fonctions nutritionnelles spécialisées : calcul de l'IMC et des calories

Implémentez deux fonctions nutritionnelles essentielles : le calcul de l'IMC et l'estimation des besoins caloriques quotidiens : ```python def calculate_bmi(weight_kg, height_cm): """Calcule l'IMC étant donné le poids en kg et la taille en cm.""" height_m = height_cm / 100 bmi = weight_kg / (height_m * height_m) # Détermination de la catégorie d'IMC if bmi < 18.5: category = "Sous-poids" elif bmi < 25: category = "Poids normal" elif bmi < 30: category = "Surpoids" else: category = "Obésité" return { "bmi": round(bmi, 1), "category": category } def calculate_calorie_needs(weight_kg, height_cm, age, gender, activity_level): """Calcule les besoins caloriques quotidiens basés sur l'équation de Harris-Benedict.""" # Métabolisme de base (BMR) if gender.lower() == "male": bmr = 88.362 + (13.397 * weight_kg) + (4.799 * height_cm) - (5.677 * age) else: # female bmr = 447.593 + (9.247 * weight_kg) + (3.098 * height_cm) - (4.330 * age) # Multiplicateurs d'activité activity_multipliers = { "sedentary": 1.2, # Peu ou pas d'exercice "light": 1.375, # Exercice léger 1-3 jours/semaine "moderate": 1.55, # Exercice modéré 3-5 jours/semaine "active": 1.725, # Exercice intense 6-7 jours/semaine "very_active": 1.9 # Exercice très intense & travail physique ou entraînement deux fois par jour } # Calcul de la dépense énergétique totale quotidienne (TDEE) multiplier = activity_multipliers.get(activity_level.lower(), 1.2) tdee = bmr * multiplier return { "bmr": round(bmr), "daily_calories": round(tdee), "weight_loss": round(tdee - 500), # Déficit de 500 calories "weight_gain": round(tdee + 500) # Surplus de 500 calories } ``` La fonction `calculate_bmi` implémente la formule de l'indice de masse corporelle, et la fonction `calculate_calorie_needs` utilise l'équation de Harris-Benedict.

Implémentation de l'appel de fonctions avec Gemini

Définissez des schémas de fonctions pour que Gemini utilise ces fonctions : ```python nutrition_functions = [ { "name": "calculate_bmi", "description": "Calculer l'IMC (Indice de Masse Corporelle) et déterminer la catégorie de poids", "parameters": { "type": "object", "properties": { "weight_kg": { "type": "number", "description": "Poids en kilogrammes" }, "height_cm": { "type": "number", "description": "Taille en centimètres" } }, "required": ["weight_kg", "height_cm"] } }, { "name": "calculate_calorie_needs", "description": "Calculer les besoins caloriques quotidiens basés sur les statistiques personnelles", "parameters": { "type": "object", "properties": { "weight_kg": { "type": "number", "description": "Poids en kilogrammes" }, "height_cm": { "type": "number", "description": "Taille en centimètres" }, "age": { "type": "integer", "description": "Âge en années" }, "gender": { "type": "string", "description": "Genre (homme ou femme)" }, "activity_level": { "type": "string", "description": "Niveau d'activité (sédentaire, léger, modéré, actif, très actif)" } }, "required": ["weight_kg", "height_cm", "age", "gender", "activity_level"] } } ] ``` Ces schémas définissent le nom, la description et les paramètres de chaque fonction, permettant au LLM de déterminer quand et comment les utiliser.

Construction du système RAG pour des données nutritionnelles précises

Le composant Retrieval-Augmented Generation (RAG) garantit que les réponses concernant les faits nutritionnels sont basées sur la base de données. Récupérez les entrées pertinentes de la base de données nutritionnelles et fournissez-les comme contexte au LLM : ```python def nutrition_assistant(query): """Traite une requête liée à la nutrition en utilisant RAG et l'appel de fonctions.""" # Étape 1 : Récupérer les informations nutritionnelles pertinentes à l'aide de RAG results = nutrition_collection.query( query_texts=[query], n_results=5 ) # Formatage des informations récupérées context = "\n".join(results["documents"][0]) ``` Ce code utilise la fonction de requête de ChromaDB pour trouver les 5 entrées les plus pertinentes pour la requête de l'utilisateur.

Tout assembler : la fonction d'assistant nutritionnel

Combinez tous les composants dans la fonction d'assistant principale : ```python def nutrition_assistant(query): """Traite une requête liée à la nutrition en utilisant RAG et l'appel de fonctions.""" # Étape 1 : Récupérer les informations nutritionnelles pertinentes à l'aide de RAG results = nutrition_collection.query( query_texts=[query], n_results=5 ) # Formatage des informations récupérées context = "\n".join(results["documents"][0]) # Étape 2 : Configuration du modèle avec l'appel de fonctions model = genai.GenerativeModel( model_name="gemini-1.5-pro", generation_config={"temperature": 0.2} ) # Étape 3 : Création de l'invite avec le contexte et la requête prompt = f"""Vous êtes un assistant nutritionnel utile. Utilisez les informations nutritionnelles suivantes pour aider à répondre à la requête. INFORMATIONS NUTRITIONNELLES : {context} REQUÊTE UTILISATEUR : {query} Si l'utilisateur pose des questions sur l'IMC ou les calculs de calories, utilisez la fonction appropriée. Pour d'autres questions nutritionnelles, fournissez des conseils utiles basés sur le contexte et vos connaissances. """ # Étape 4 : Génération de la réponse avec des appels de fonctions potentiels response = model.generate_content( prompt, tools=nutrition_functions ) # Étape 5 : Traitement des appels de fonctions s'ils sont présents if hasattr(response, 'candidates') and len(response.candidates) > 0: candidate = response.candidates[0] if hasattr(candidate, 'content') and hasattr(candidate.content, 'parts'): for part in candidate.content.parts: if hasattr(part, 'function_call'): function_call = part.function_call function_name = function_call.name function_args = function_call.args # Exécution de la fonction appropriée if function_name == "calculate_bmi": result = calculate_bmi( function_args["weight_kg"], function_args["height_cm"] ) elif function_name == "calculate_calorie_needs": result = calculate_calorie_needs( function_args["weight_kg"], function_args["height_cm"], function_args["age"], function_args["gender"], function_args["activity_level"] ) # Génération d'une nouvelle réponse avec le résultat de la fonction final_prompt = f"""Vous êtes un assistant nutritionnel utile. Un utilisateur a demandé : "{query}" Vous avez appelé la fonction {function_name} qui a renvoyé ce résultat : {result} Veuillez fournir une réponse conversationnelle utile qui explique ces résultats et donne des conseils nutritionnels appropriés. Incluez des recommandations alimentaires spécifiques basées sur les informations nutritionnelles si pertinent. """ final_response = model.generate_content(final_prompt) return final_response.text # Si aucun appel de fonction n'a été effectué, renvoyer la réponse originale return response.text ``` Cette fonction récupère les informations nutritionnelles, configure le modèle Gemini, crée une invite, génère une réponse et traite les appels de fonctions si nécessaire.

Tests avec des requêtes du monde réel

Testez le nutritionniste personnel IA avec des requêtes du monde réel : ```python test_queries = [ "Quelle est la valeur nutritionnelle d'une pomme ?", "Pouvez-vous calculer mon IMC ? Je pèse 70 kg et mesure 175 cm.", "Combien de calories devrais-je manger ? Je suis un homme de 30 ans, 80 kg, 180 cm, et modérément actif.", "Quels sont les aliments riches en protéines pour le développement musculaire ?", "Pouvez-vous suggérer un plan de repas pour perdre du poids ?" ] for query in test_queries: print(f"\nRequête : {query}") print("-" * 50) response = nutrition_assistant(query) print(response) print("=" * 80) ``` Ces exemples démontrent la polyvalence du nutritionniste personnel IA, gérant les requêtes factuelles, effectuant des calculs et fournissant des recommandations personnalisées.

Améliorations futures et conclusion

Les améliorations potentielles incluent l'expansion de la base de données nutritionnelles, l'amélioration de la précision des estimations caloriques, l'ajout de la prise en charge d'exigences alimentaires plus complexes et l'intégration avec des appareils portables. L'assistant nutritionniste personnel IA combine les LLM, l'appel de fonctions et le RAG pour fournir des conseils nutritionnels personnalisés. Ce système peut répondre à des questions nutritionnelles, calculer l'IMC et les besoins caloriques, et fournir des recommandations personnalisées, démontrant le potentiel de l'IA dans la santé personnelle.

 Lien original : https://www.linkedin.com/pulse/building-your-personal-ai-nutritionist-smart-meal-planner-ahmed-ali-qudjf

Commentaire(0)

user's avatar

      Outils connexes