Logo de AiToolGo

Construa Seu Próprio Nutricionista de IA: LLM, RAG e Nutrição Personalizada

Discussão aprofundada
Técnico, mas acessível
 0
 0
 1
Este artigo guia os leitores na criação de um nutricionista pessoal de IA usando técnicas avançadas de IA como LLMs, function calling e RAG. Ele detalha a pilha de tecnologia, configuração do ambiente e implementação de funções nutricionais especializadas, culminando em um assistente funcional capaz de responder a consultas nutricionais, calcular IMC e fornecer conselhos dietéticos personalizados.
  • pontos principais
  • insights únicos
  • aplicações práticas
  • tópicos-chave
  • insights principais
  • resultados de aprendizagem
  • pontos principais

    • 1
      Guia abrangente sobre a construção de um assistente nutricional de IA
    • 2
      Integração de técnicas avançadas de IA para conselhos nutricionais personalizados
    • 3
      Implementação prática com aplicações e exemplos do mundo real
  • insights únicos

    • 1
      Combina LLMs, function calling e RAG para maior precisão em orientação nutricional
    • 2
      Demonstra como criar uma base de conhecimento nutricional pesquisável usando embeddings vetoriais
  • aplicações práticas

    • O artigo fornece uma abordagem passo a passo para construir um nutricionista de IA funcional, tornando a ciência da nutrição acessível e personalizada para os usuários.
  • tópicos-chave

    • 1
      Modelos de Linguagem Grandes (LLMs)
    • 2
      Function Calling em IA
    • 3
      Retrieval-Augmented Generation (RAG)
  • insights principais

    • 1
      Aplicação prática de IA no gerenciamento de saúde pessoal
    • 2
      Implementação detalhada de funções nutricionais para cálculos precisos
    • 3
      Uso inovador de técnicas de IA para aprimorar a interação do usuário com dados nutricionais
  • resultados de aprendizagem

    • 1
      Entender como integrar LLMs com function calling para aplicações práticas.
    • 2
      Aprender a construir uma base de conhecimento nutricional usando embeddings vetoriais.
    • 3
      Obter insights sobre a criação de assistentes de IA personalizados para saúde e nutrição.
exemplos
tutoriais
exemplos de código
visuais
fundamentos
conteúdo avançado
dicas práticas
melhores práticas

Introdução: A Necessidade de um Nutricionista Pessoal de IA

No ambiente agitado de hoje, manter uma dieta equilibrada é cada vez mais difícil. Conselhos nutricionais conflitantes e dietas da moda muitas vezes deixam os indivíduos confusos. Um Nutricionista Pessoal de IA, disponível 24 horas por dia, 7 dias por semana, pode responder a perguntas específicas sobre nutrição, calcular necessidades nutricionais e fornecer recomendações personalizadas. Isso agora é possível com os avanços em inteligência artificial, particularmente modelos de linguagem grandes (LLMs) e técnicas de recuperação. Este artigo o guiará na criação de seu próprio Assistente Nutricionista Pessoal de IA, combinando o LLM Gemini do Google com funções nutricionais especializadas e uma base de conhecimento de dados nutricionais real. O assistente pode responder a perguntas sobre nutrição alimentar, calcular IMC, estimar necessidades calóricas diárias, recomendar alimentos com base em critérios e fornecer conselhos nutricionais baseados em evidências.

Compreendendo a Pilha de Tecnologia: LLMs, Function Calling e RAG

Nosso Assistente Nutricionista Pessoal de IA é alimentado por três tecnologias-chave: Modelos de Linguagem Grandes (LLMs) como o Gemini 1.5 Pro do Google, Function Calling e Retrieval-Augmented Generation (RAG). LLMs entendem e geram texto semelhante ao humano, destacando-se em consultas de linguagem natural sobre nutrição. Function Calling permite que o LLM use cálculos especializados como IMC ou necessidades calóricas. RAG fundamenta as respostas do assistente em dados nutricionais factuais, recuperando informações relevantes de um banco de dados de nutrição. Essas tecnologias trabalham juntas para entender as consultas do usuário, recuperar fatos nutricionais e lidar com cálculos precisos.

Configurando Seu Ambiente de Desenvolvimento

Para configurar o ambiente de desenvolvimento, instale as bibliotecas necessárias e configure o acesso à API. Use os seguintes comandos: ```bash !pip install -U -q "google-genai==1.7.0" !pip install chromadb ``` Esses comandos instalam o SDK Python do Google Generative AI e o ChromaDB para o banco de dados vetorial. Em seguida, configure o acesso à API do Google Gemini: ```python import google.generativeai as genai import os # Configurar a chave da API GOOGLE_API_KEY = "SUA_CHAVE_DE_API" # Substitua pela sua chave de API real genai.configure(api_key=GOOGLE_API_KEY) ``` Substitua `SUA_CHAVE_DE_API` pela sua chave de API Gemini real do site do Google AI Studio.

Construindo a Base de Conhecimento Nutricional

Construa a base de conhecimento nutricional carregando um conjunto de dados abrangente de fatos nutricionais usando pandas: ```python import pandas as pd import numpy as np # Carregar dados nutricionais nutrition_data = pd.read_csv('/kaggle/input/nutrition-facts-for-3636-foods/nutrition_facts.csv') nutrition_data.head() ``` Este conjunto de dados contém informações nutricionais detalhadas para mais de 3.600 alimentos. Converta esses dados em embeddings vetoriais usando ChromaDB: ```python # Criar embeddings para os dados nutricionais from chromadb.utils import embedding_functions import chromadb # Inicializar o cliente ChromaDB chroma_client = chromadb.Client() # Criar uma coleção para dados nutricionais nutrition_collection = chroma_client.create_collection( name="nutrition_facts", embedding_function=embedding_functions.DefaultEmbeddingFunction() ) # Preparar dados para embedding for i, row in nutrition_data.iterrows(): # Criar um documento com informações nutricionais document = f"Comida: {row['name']}, Calorias: {row['calories']}, Proteína: {row['protein_g']}g, Gordura: {row['fat_g']}g, Carboidratos: {row['carbohydrate_g']}g" # Adicionar à coleção com ID único nutrition_collection.add( documents=[document], ids=[f"food_{i}"] ) ``` Este código cria uma coleção ChromaDB e a popula com dados nutricionais, permitindo a busca semântica.

Criando Funções Nutricionais Especializadas: Cálculo de IMC e Calorias

Implemente duas funções nutricionais essenciais: cálculo de IMC e estimativa de necessidades calóricas diárias: ```python def calculate_bmi(weight_kg, height_cm): """Calcular IMC dado peso em kg e altura em cm.""" height_m = height_cm / 100 bmi = weight_kg / (height_m * height_m) # Determinar a categoria de IMC if bmi < 18.5: category = "Abaixo do peso" elif bmi < 25: category = "Peso normal" elif bmi < 30: category = "Sobrepeso" else: category = "Obesidade" return { "bmi": round(bmi, 1), "category": category } def calculate_calorie_needs(weight_kg, height_cm, age, gender, activity_level): """Calcular necessidades calóricas diárias com base na equação de Harris-Benedict.""" # Taxa 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 atividade activity_multipliers = { "sedentary": 1.2, # Pouco ou nenhum exercício "light": 1.375, # Exercício leve 1-3 dias/semana "moderate": 1.55, # Exercício moderado 3-5 dias/semana "active": 1.725, # Exercício intenso 6-7 dias/semana "very_active": 1.9 # Exercício muito intenso e trabalho físico ou treinamento duas vezes ao dia } # Calcular o gasto energético total diário (GETD) 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 calorias "weight_gain": round(tdee + 500) # Superávit de 500 calorias } ``` A função `calculate_bmi` implementa a fórmula do Índice de Massa Corporal, e a função `calculate_calorie_needs` utiliza a equação de Harris-Benedict.

Implementando Function Calling com Gemini

Defina esquemas de função para o Gemini usar essas funções: ```python nutrition_functions = [ { "name": "calculate_bmi", "description": "Calcular IMC (Índice de Massa Corporal) e determinar a categoria de peso", "parameters": { "type": "object", "properties": { "weight_kg": { "type": "number", "description": "Peso em quilogramas" }, "height_cm": { "type": "number", "description": "Altura em centímetros" } }, "required": ["weight_kg", "height_cm"] } }, { "name": "calculate_calorie_needs", "description": "Calcular necessidades calóricas diárias com base em estatísticas pessoais", "parameters": { "type": "object", "properties": { "weight_kg": { "type": "number", "description": "Peso em quilogramas" }, "height_cm": { "type": "number", "description": "Altura em centímetros" }, "age": { "type": "integer", "description": "Idade em anos" }, "gender": { "type": "string", "description": "Gênero (masculino ou feminino)" }, "activity_level": { "type": "string", "description": "Nível de atividade (sedentário, leve, moderado, ativo, muito ativo)" } }, "required": ["weight_kg", "height_cm", "age", "gender", "activity_level"] } } ] ``` Esses esquemas definem o nome, a descrição e os parâmetros de cada função, permitindo que o LLM determine quando e como usá-los.

Construindo o Sistema RAG para Dados Nutricionais Precisos

O componente Retrieval-Augmented Generation (RAG) garante que as respostas sobre fatos nutricionais sejam fundamentadas no banco de dados. Recupere entradas relevantes do banco de dados de nutrição e forneça-as como contexto para o LLM: ```python def nutrition_assistant(query): """Processar uma consulta relacionada à nutrição usando RAG e function calling.""" # Etapa 1: Recuperar informações nutricionais relevantes usando RAG results = nutrition_collection.query( query_texts=[query], n_results=5 ) # Formatar as informações recuperadas context = "\n".join(results["documents"][0]) ``` Este código usa a função de consulta do ChromaDB para encontrar as 5 entradas mais relevantes para a consulta do usuário.

Juntando Tudo: A Função do Assistente Nutricional

Combine todos os componentes na função principal do assistente: ```python def nutrition_assistant(query): """Processar uma consulta relacionada à nutrição usando RAG e function calling.""" # Etapa 1: Recuperar informações nutricionais relevantes usando RAG results = nutrition_collection.query( query_texts=[query], n_results=5 ) # Formatar as informações recuperadas context = "\n".join(results["documents"][0]) # Etapa 2: Configurar o modelo com function calling model = genai.GenerativeModel( model_name="gemini-1.5-pro", generation_config={"temperature": 0.2} ) # Etapa 3: Criar o prompt com contexto e consulta prompt = f"""Você é um assistente nutricional prestativo. Use as seguintes informações nutricionais para ajudar a responder à consulta. INFORMAÇÕES NUTRICIONAIS: {context} CONSULTA DO USUÁRIO: {query} Se o usuário estiver perguntando sobre cálculos de IMC ou calorias, use a função apropriada. Para outras perguntas nutricionais, forneça conselhos úteis com base no contexto e em seu conhecimento. """ # Etapa 4: Gerar resposta com chamadas de função potenciais response = model.generate_content( prompt, tools=nutrition_functions ) # Etapa 5: Processar chamadas de função, se 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 # Executar a função apropriada 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"] ) # Gerar uma nova resposta com o resultado da função final_prompt = f"""Você é um assistente nutricional prestativo. Um usuário perguntou: "{query}" Você chamou a função {function_name} que retornou este resultado: {result} Por favor, forneça uma resposta útil e conversacional que explique esses resultados e dê conselhos nutricionais apropriados. Inclua recomendações específicas de alimentos com base nas informações nutricionais, se relevante. """ final_response = model.generate_content(final_prompt) return final_response.text # Se nenhuma chamada de função foi feita, retorne a resposta original return response.text ``` Esta função recupera informações nutricionais, configura o modelo Gemini, cria um prompt, gera uma resposta e processa chamadas de função, se necessário.

Testando com Consultas do Mundo Real

Teste o Nutricionista Pessoal de IA com consultas do mundo real: ```python test_queries = [ "Qual o valor nutricional de uma maçã?", "Você pode calcular meu IMC? Tenho 70kg e 175cm de altura.", "Quantas calorias devo comer? Sou um homem de 30 anos, 80kg, 180cm e moderadamente ativo.", "Quais são alguns alimentos ricos em proteínas para ganho muscular?", "Você pode sugerir um plano alimentar para perda de peso?" ] for query in test_queries: print(f"\nConsulta: {query}") print("-" * 50) response = nutrition_assistant(query) print(response) print("=" * 80) ``` Esses exemplos demonstram a versatilidade do Nutricionista Pessoal de IA, lidando com consultas factuais, realizando cálculos e fornecendo recomendações personalizadas.

Melhorias Futuras e Conclusão

Melhorias potenciais incluem expandir o banco de dados nutricional, melhorar a precisão das estimativas de calorias, adicionar suporte para requisitos dietéticos mais complexos e integrar com dispositivos vestíveis. O Assistente Nutricionista Pessoal de IA combina LLMs, function calling e RAG para fornecer orientação nutricional personalizada. Este sistema pode responder a perguntas sobre nutrição, calcular IMC e necessidades calóricas, e fornecer recomendações personalizadas, demonstrando o potencial da IA na saúde pessoal.

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

Comentário(0)

user's avatar

      Ferramentas Relacionadas