Logo de AiToolGo

Crea tu propio nutricionista de IA: LLM, RAG y Nutrición Personalizada

Discusión en profundidad
Técnico, pero accesible
 0
 0
 1
Este artículo guía a los lectores a través de la creación de un nutricionista personal de IA utilizando técnicas avanzadas de IA como LLM, function calling y RAG. Detalla la pila tecnológica, la configuración del entorno y la implementación de funciones nutricionales especializadas, culminando en un asistente funcional capaz de responder consultas de nutrición, calcular el IMC y proporcionar consejos dietéticos personalizados.
  • puntos principales
  • ideas únicas
  • aplicaciones prácticas
  • temas clave
  • ideas clave
  • resultados de aprendizaje
  • puntos principales

    • 1
      Guía completa sobre la creación de un asistente de nutrición de IA
    • 2
      Integración de técnicas avanzadas de IA para consejos de nutrición personalizados
    • 3
      Implementación práctica con aplicaciones y ejemplos del mundo real
  • ideas únicas

    • 1
      Combina LLM, function calling y RAG para una mayor precisión en la orientación nutricional
    • 2
      Demuestra cómo crear una base de conocimientos nutricionales consultable utilizando incrustaciones vectoriales
  • aplicaciones prácticas

    • El artículo proporciona un enfoque paso a paso para construir un nutricionista de IA funcional, haciendo que la ciencia de la nutrición sea accesible y personalizada para los usuarios.
  • temas clave

    • 1
      Modelos de Lenguaje Grandes (LLM)
    • 2
      Function Calling en IA
    • 3
      Retrieval-Augmented Generation (RAG)
  • ideas clave

    • 1
      Aplicación práctica de la IA en la gestión de la salud personal
    • 2
      Implementación detallada de funciones nutricionales para cálculos precisos
    • 3
      Uso innovador de técnicas de IA para mejorar la interacción del usuario con datos nutricionales
  • resultados de aprendizaje

    • 1
      Comprender cómo integrar LLM con function calling para aplicaciones prácticas.
    • 2
      Aprender a construir una base de conocimientos nutricionales utilizando incrustaciones vectoriales.
    • 3
      Obtener información sobre la creación de asistentes de IA personalizados para la salud y la nutrición.
ejemplos
tutoriales
ejemplos de código
visuales
fundamentos
contenido avanzado
consejos prácticos
mejores prácticas

Introducción: La Necesidad de un Nutricionista Personal de IA

En el ajetreado entorno actual, mantener una dieta equilibrada es cada vez más difícil. Los consejos nutricionales contradictorios y las dietas de moda a menudo confunden a las personas. Un Nutricionista Personal de IA, disponible las 24 horas del día, los 7 días de la semana, puede responder preguntas específicas sobre nutrición, calcular las necesidades nutricionales y proporcionar recomendaciones personalizadas. Esto ahora es posible gracias a los avances en inteligencia artificial, particularmente los modelos de lenguaje grandes (LLM) y las técnicas de recuperación. Este artículo te guía a través de la creación de tu propio Asistente Nutricionista Personal de IA, combinando el LLM Gemini de Google con funciones nutricionales especializadas y una base de conocimientos de datos nutricionales reales. El asistente puede responder preguntas sobre nutrición de alimentos, calcular el IMC, estimar las necesidades calóricas diarias, recomendar alimentos según criterios y proporcionar consejos nutricionales basados en evidencia.

Comprendiendo la Pila Tecnológica: LLM, Function Calling y RAG

Nuestro Asistente Nutricionista Personal de IA está impulsado por tres tecnologías clave: Modelos de Lenguaje Grandes (LLM) como Gemini 1.5 Pro de Google, Function Calling (Llamada a Funciones) y Retrieval-Augmented Generation (RAG). Los LLM comprenden y generan texto similar al humano, destacando en consultas de lenguaje natural sobre nutrición. Function Calling permite al LLM utilizar cálculos especializados como el IMC o las necesidades calóricas. RAG basa las respuestas del asistente en datos nutricionales fácticos, recuperando información relevante de una base de datos nutricional. Estas tecnologías trabajan juntas para comprender las consultas de los usuarios, recuperar datos nutricionales y manejar cálculos precisos.

Configurando tu Entorno de Desarrollo

Para configurar el entorno de desarrollo, instala las bibliotecas necesarias y configura el acceso a la API. Utiliza los siguientes comandos: ```bash !pip install -U -q "google-genai==1.7.0" !pip install chromadb ``` Estos comandos instalan el SDK de Python de Google Generative AI y ChromaDB para la base de datos vectorial. A continuación, configura el acceso a la API de Google Gemini: ```python import google.generativeai as genai import os # Configura la clave de API GOOGLE_API_KEY = "TU_CLAVE_API" # Reemplaza con tu clave de API real genai.configure(api_key=GOOGLE_API_KEY) ``` Reemplaza `TU_CLAVE_API` con tu clave de API de Gemini real del sitio web de Google AI Studio.

Construyendo la Base de Conocimientos Nutricionales

Construye la base de conocimientos nutricionales cargando un conjunto de datos completo de información nutricional utilizando pandas: ```python import pandas as pd import numpy as np # Cargar datos nutricionales nutrition_data = pd.read_csv('/kaggle/input/nutrition-facts-for-3636-foods/nutrition_facts.csv') nutrition_data.head() ``` Este conjunto de datos contiene información nutricional detallada para más de 3.600 alimentos. Convierte estos datos en incrustaciones vectoriales utilizando ChromaDB: ```python # Crear incrustaciones para los datos nutricionales from chromadb.utils import embedding_functions import chromadb # Inicializar cliente ChromaDB chroma_client = chromadb.Client() # Crear una colección para datos nutricionales nutrition_collection = chroma_client.create_collection( name="nutrition_facts", embedding_function=embedding_functions.DefaultEmbeddingFunction() ) # Preparar datos para incrustación for i, row in nutrition_data.iterrows(): # Crear un documento con información nutricional document = f"Alimento: {row['name']}, Calorías: {row['calories']}, Proteína: {row['protein_g']}g, Grasa: {row['fat_g']}g, Carbohidratos: {row['carbohydrate_g']}g" # Añadir a la colección con ID único nutrition_collection.add( documents=[document], ids=[f"food_{i}"] ) ``` Este código crea una colección ChromaDB y la popula con datos nutricionales, permitiendo la búsqueda semántica.

Creando Funciones Nutricionales Especializadas: Cálculo de IMC y Calorías

Implementa dos funciones nutricionales esenciales: cálculo del IMC y estimación de las necesidades calóricas diarias: ```python def calculate_bmi(weight_kg, height_cm): """Calcula el IMC dados el peso en kg y la altura en cm.""" height_m = height_cm / 100 bmi = weight_kg / (height_m * height_m) # Determinar la categoría del IMC if bmi < 18.5: category = "Bajo peso" elif bmi < 25: category = "Peso normal" elif bmi < 30: category = "Sobrepeso" else: category = "Obeso" return { "bmi": round(bmi, 1), "category": category } def calculate_calorie_needs(weight_kg, height_cm, age, gender, activity_level): """Calcula las necesidades calóricas diarias basándose en la ecuación de Harris-Benedict.""" # Tasa metabólica basal (TMB) 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) # Multiplicadores de actividad activity_multipliers = { "sedentary": 1.2, # Poco o ningún ejercicio "light": 1.375, # Ejercicio ligero 1-3 días/semana "moderate": 1.55, # Ejercicio moderado 3-5 días/semana "active": 1.725, # Ejercicio intenso 6-7 días/semana "very_active": 1.9 # Ejercicio muy intenso y trabajo físico o entrenamiento dos veces al día } # Calcular el gasto energético diario total (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 calorías "weight_gain": round(tdee + 500) # Superávit de 500 calorías } ``` La función `calculate_bmi` implementa la fórmula del Índice de Masa Corporal, y la función `calculate_calorie_needs` utiliza la ecuación de Harris-Benedict.

Implementando Function Calling con Gemini

Define esquemas de funciones para que Gemini utilice estas funciones: ```python nutrition_functions = [ { "name": "calculate_bmi", "description": "Calcular el IMC (Índice de Masa Corporal) y determinar la categoría de peso", "parameters": { "type": "object", "properties": { "weight_kg": { "type": "number", "description": "Peso en kilogramos" }, "height_cm": { "type": "number", "description": "Altura en centímetros" } }, "required": ["weight_kg", "height_cm"] } }, { "name": "calculate_calorie_needs", "description": "Calcular las necesidades calóricas diarias basándose en estadísticas personales", "parameters": { "type": "object", "properties": { "weight_kg": { "type": "number", "description": "Peso en kilogramos" }, "height_cm": { "type": "number", "description": "Altura en centímetros" }, "age": { "type": "integer", "description": "Edad en años" }, "gender": { "type": "string", "description": "Género (masculino o femenino)" }, "activity_level": { "type": "string", "description": "Nivel de actividad (sedentario, ligero, moderado, activo, muy_activo)" } }, "required": ["weight_kg", "height_cm", "age", "gender", "activity_level"] } } ] ``` Estos esquemas definen el nombre, la descripción y los parámetros de cada función, permitiendo al LLM determinar cuándo y cómo utilizarlos.

Construyendo el Sistema RAG para Datos Nutricionales Precisos

El componente Retrieval-Augmented Generation (RAG) asegura que las respuestas sobre datos nutricionales se basen en la base de datos. Recupera entradas relevantes de la base de datos nutricional y proporciónalas como contexto al LLM: ```python def nutrition_assistant(query): """Procesa una consulta relacionada con la nutrición utilizando RAG y function calling.""" # Paso 1: Recuperar información nutricional relevante utilizando RAG results = nutrition_collection.query( query_texts=[query], n_results=5 ) # Formatear la información recuperada context = "\n".join(results["documents"][0]) ``` Este código utiliza la función de consulta de ChromaDB para encontrar las 5 entradas más relevantes para la consulta del usuario.

Juntándolo Todo: La Función del Asistente de Nutrición

Combina todos los componentes en la función principal del asistente: ```python def nutrition_assistant(query): """Procesa una consulta relacionada con la nutrición utilizando RAG y function calling.""" # Paso 1: Recuperar información nutricional relevante utilizando RAG results = nutrition_collection.query( query_texts=[query], n_results=5 ) # Formatear la información recuperada context = "\n".join(results["documents"][0]) # Paso 2: Configurar el modelo con function calling model = genai.GenerativeModel( model_name="gemini-1.5-pro", generation_config={"temperature": 0.2} ) # Paso 3: Crear el prompt con contexto y consulta prompt = f"""Eres un útil asistente de nutrición. Utiliza la siguiente información nutricional para ayudar a responder la consulta. INFORMACIÓN NUTRICIONAL: {context} CONSULTA DEL USUARIO: {query} Si el usuario pregunta sobre cálculos de IMC o calorías, utiliza la función apropiada. Para otras preguntas de nutrición, proporciona consejos útiles basados en el contexto y tu conocimiento. """ # Paso 4: Generar respuesta con posibles llamadas a funciones response = model.generate_content( prompt, tools=nutrition_functions ) # Paso 5: Procesar llamadas a funciones si están presentes 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 # Ejecutar la función apropiada 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"] ) # Generar una nueva respuesta con el resultado de la función final_prompt = f"""Eres un útil asistente de nutrición. Un usuario preguntó: "{query}" Llamaste a la función {function_name} que devolvió este resultado: {result} Por favor, proporciona una respuesta útil y conversacional que explique estos resultados y ofrezca consejos nutricionales apropiados. Incluye recomendaciones de alimentos específicos basadas en la información nutricional si es relevante. """ final_response = model.generate_content(final_prompt) return final_response.text # Si no se realizó ninguna llamada a función, devuelve la respuesta original return response.text ``` Esta función recupera información nutricional, configura el modelo Gemini, crea un prompt, genera una respuesta y procesa las llamadas a funciones si es necesario.

Probando con Consultas del Mundo Real

Prueba el Nutricionista Personal de IA con consultas del mundo real: ```python test_queries = [ "¿Cuál es el valor nutricional de una manzana?", "¿Puedes calcular mi IMC? Mido 70 kg y 175 cm de altura.", "¿Cuántas calorías debería comer? Soy un hombre de 30 años, 80 kg, 180 cm, y moderadamente activo.", "¿Cuáles son algunos alimentos ricos en proteínas para desarrollar músculo?", "¿Puedes sugerir un plan de comidas para perder peso?" ] for query in test_queries: print(f"\nConsulta: {query}") print("-" * 50) response = nutrition_assistant(query) print(response) print("=" * 80) ``` Estos ejemplos demuestran la versatilidad del Nutricionista Personal de IA, manejando consultas fácticas, realizando cálculos y proporcionando recomendaciones personalizadas.

Mejoras Futuras y Conclusión

Las mejoras potenciales incluyen expandir la base de datos nutricional, mejorar la precisión de las estimaciones calóricas, agregar soporte para requisitos dietéticos más complejos e integrar con dispositivos portátiles. El Asistente Nutricionista Personal de IA combina LLM, function calling y RAG para proporcionar orientación nutricional personalizada. Este sistema puede responder preguntas de nutrición, calcular el IMC y las necesidades calóricas, y proporcionar recomendaciones personalizadas, mostrando el potencial de la IA en la salud personal.

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

Comentario(0)

user's avatar

      Herramientas Relacionadas