Bauen Sie Ihren eigenen KI-Ernährungsberater: LLM, RAG und personalisierte Ernährung
Tiefgehende Diskussion
Technisch, aber zugänglich
0 0 1
Dieser Artikel führt die Leser durch die Erstellung eines personalisierten KI-Ernährungsberaters unter Verwendung fortschrittlicher KI-Techniken wie LLMs, Function Calling und RAG. Er beschreibt den Technologie-Stack, die Einrichtung der Umgebung und die Implementierung spezialisierter Ernährungsfunktionen, was zu einem funktionsfähigen Assistenten führt, der Ernährungsfragen beantworten, den BMI berechnen und personalisierte Ernährungsratschläge geben kann.
Hauptpunkte
einzigartige Erkenntnisse
praktische Anwendungen
Schlüsselthemen
wichtige Einsichten
Lernergebnisse
• Hauptpunkte
1
Umfassende Anleitung zum Aufbau eines KI-Ernährungsassistenten
2
Integration fortschrittlicher KI-Techniken für personalisierte Ernährungsberatung
3
Praktische Implementierung mit realen Anwendungen und Beispielen
• einzigartige Erkenntnisse
1
Kombiniert LLMs, Function Calling und RAG für erhöhte Genauigkeit bei Ernährungsberatung
2
Zeigt, wie eine durchsuchbare Ernährungs-Wissensdatenbank mithilfe von Vektor-Embeddings erstellt wird
• praktische Anwendungen
Der Artikel bietet einen Schritt-für-Schritt-Ansatz zum Aufbau eines funktionsfähigen KI-Ernährungsberaters, wodurch die Ernährungswissenschaft für Benutzer zugänglich und personalisiert wird.
• Schlüsselthemen
1
Große Sprachmodelle (LLMs)
2
Function Calling in der KI
3
Retrieval-Augmented Generation (RAG)
• wichtige Einsichten
1
Praktische Anwendung von KI im persönlichen Gesundheitsmanagement
2
Detaillierte Implementierung von Ernährungsfunktionen für genaue Berechnungen
3
Innovative Nutzung von KI-Techniken zur Verbesserung der Benutzerinteraktion mit Ernährungsdaten
• Lernergebnisse
1
Verstehen, wie LLMs mit Function Calling für praktische Anwendungen integriert werden.
2
Lernen, eine Ernährungs-Wissensdatenbank mithilfe von Vektor-Embeddings zu erstellen.
3
Einblicke in die Erstellung personalisierter KI-Assistenten für Gesundheit und Ernährung gewinnen.
“ Einleitung: Der Bedarf an einem persönlichen KI-Ernährungsberater
In der heutigen hektischen Umgebung ist die Aufrechterhaltung einer ausgewogenen Ernährung zunehmend schwierig. Widersprüchliche Ernährungsratschläge und Modediäten verwirren die Menschen oft. Ein KI-Personal-Ernährungsberater, der rund um die Uhr verfügbar ist, kann spezifische Ernährungsfragen beantworten, den Nährstoffbedarf berechnen und personalisierte Empfehlungen geben. Dies ist nun dank Fortschritten in der künstlichen Intelligenz, insbesondere bei großen Sprachmodellen (LLMs) und Retrieval-Techniken, möglich. Dieser Artikel führt Sie durch die Erstellung Ihres eigenen KI-Personal-Ernährungsberater-Assistenten, der Googles Gemini LLM mit spezialisierten Ernährungsfunktionen und einer realen Wissensdatenbank für Ernährungsdaten kombiniert. Der Assistent kann Fragen zur Lebensmittelernährung beantworten, den BMI berechnen, den täglichen Kalorienbedarf schätzen, Lebensmittel nach Kriterien empfehlen und evidenzbasierte Ernährungsratschläge geben.
“ Verständnis des Technologie-Stacks: LLMs, Function Calling und RAG
Unser KI-Personal-Ernährungsberater-Assistent wird von drei Schlüsseltechnologien angetrieben: Große Sprachmodelle (LLMs) wie Googles Gemini 1.5 Pro, Function Calling und Retrieval-Augmented Generation (RAG). LLMs verstehen und generieren menschenähnlichen Text und eignen sich hervorragend für natürliche Sprachabfragen zur Ernährung. Function Calling ermöglicht es dem LLM, spezialisierte Berechnungen wie BMI oder Kalorienbedarf zu nutzen. RAG untermauert die Antworten des Assistenten mit faktenbasierten Ernährungsdaten und ruft relevante Informationen aus einer Ernährungsdatenbank ab. Diese Technologien arbeiten zusammen, um Benutzeranfragen zu verstehen, Ernährungsfakten abzurufen und präzise Berechnungen durchzuführen.
“ Einrichtung Ihrer Entwicklungsumgebung
Um die Entwicklungsumgebung einzurichten, installieren Sie die notwendigen Bibliotheken und konfigurieren Sie den API-Zugriff. Verwenden Sie die folgenden Befehle:
```bash
!pip install -U -q "google-genai==1.7.0"
!pip install chromadb
```
Diese Befehle installieren das Google Generative AI Python SDK und ChromaDB für die Vektordatenbank. Richten Sie anschließend den Zugriff auf die Google Gemini API ein:
```python
import google.generativeai as genai
import os
# API-Schlüssel einrichten
GOOGLE_API_KEY = "YOUR_API_KEY" # Ersetzen Sie dies durch Ihren tatsächlichen API-Schlüssel
genai.configure(api_key=GOOGLE_API_KEY)
```
Ersetzen Sie `YOUR_API_KEY` durch Ihren tatsächlichen Gemini API-Schlüssel von der Google AI Studio-Website.
“ Aufbau der Ernährungs-Wissensdatenbank
Bauen Sie die Ernährungs-Wissensdatenbank auf, indem Sie einen umfassenden Datensatz von Ernährungsfakten mit pandas laden:
```python
import pandas as pd
import numpy as np
# Ernährungsdaten laden
nutrition_data = pd.read_csv('/kaggle/input/nutrition-facts-for-3636-foods/nutrition_facts.csv')
nutrition_data.head()
```
Dieser Datensatz enthält detaillierte Ernährungsinformationen für über 3.600 Lebensmittel. Konvertieren Sie diese Daten mit ChromaDB in Vektor-Embeddings:
```python
# Embeddings für die Ernährungsdaten erstellen
from chromadb.utils import embedding_functions
import chromadb
# ChromaDB-Client initialisieren
chroma_client = chromadb.Client()
# Eine Sammlung für Ernährungsdaten erstellen
nutrition_collection = chroma_client.create_collection(
name="nutrition_facts",
embedding_function=embedding_functions.DefaultEmbeddingFunction()
)
# Daten für Embedding vorbereiten
for i, row in nutrition_data.iterrows():
# Ein Dokument mit Ernährungsinformationen erstellen
document = f"Lebensmittel: {row['name']}, Kalorien: {row['calories']}, Protein: {row['protein_g']}g, Fett: {row['fat_g']}g, Kohlenhydrate: {row['carbohydrate_g']}g"
# Mit eindeutiger ID zur Sammlung hinzufügen
nutrition_collection.add(
documents=[document],
ids=[f"food_{i}"]
)
```
Dieser Code erstellt eine ChromaDB-Sammlung und füllt sie mit Ernährungsdaten, was eine semantische Suche ermöglicht.
“ Erstellung spezialisierter Ernährungsfunktionen: BMI und Kalorienberechnung
Implementieren Sie zwei wesentliche Ernährungsfunktionen: BMI-Berechnung und Schätzung des täglichen Kalorienbedarfs:
```python
def calculate_bmi(weight_kg, height_cm):
"""Berechnet den BMI anhand von Gewicht in kg und Größe in cm."""
height_m = height_cm / 100
bmi = weight_kg / (height_m * height_m)
# BMI-Kategorie bestimmen
if bmi < 18.5:
category = "Untergewicht"
elif bmi < 25:
category = "Normalgewicht"
elif bmi < 30:
category = "Übergewicht"
else:
category = "Adipositas"
return {
"bmi": round(bmi, 1),
"category": category
}
def calculate_calorie_needs(weight_kg, height_cm, age, gender, activity_level):
"""Berechnet den täglichen Kalorienbedarf basierend auf der Harris-Benedict-Gleichung."""
# Grundumsatz (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)
# Aktivitätsmultiplikatoren
activity_multipliers = {
"sedentary": 1.2, # Wenig oder keine Bewegung
"light": 1.375, # Leichte Bewegung 1-3 Tage/Woche
"moderate": 1.55, # Moderate Bewegung 3-5 Tage/Woche
"active": 1.725, # Intensive Bewegung 6-7 Tage/Woche
"very_active": 1.9 # Sehr intensive Bewegung & körperlich anspruchsvoller Job oder zweimal tägliches Training
}
# Gesamtenergieverbrauch pro Tag (TDEE) berechnen
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), # 500 Kaloriendefizit
"weight_gain": round(tdee + 500) # 500 Kalorienüberschuss
}
```
Die Funktion `calculate_bmi` implementiert die Body-Mass-Index-Formel, und die Funktion `calculate_calorie_needs` verwendet die Harris-Benedict-Gleichung.
“ Implementierung von Function Calling mit Gemini
Definieren Sie Funktionsschemata, damit Gemini diese Funktionen nutzen kann:
```python
nutrition_functions = [
{
"name": "calculate_bmi",
"description": "Berechnet den BMI (Body Mass Index) und bestimmt die Gewichtskategorie",
"parameters": {
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"description": "Gewicht in Kilogramm"
},
"height_cm": {
"type": "number",
"description": "Größe in Zentimetern"
}
},
"required": ["weight_kg", "height_cm"]
}
},
{
"name": "calculate_calorie_needs",
"description": "Berechnet den täglichen Kalorienbedarf basierend auf persönlichen Daten",
"parameters": {
"type": "object",
"properties": {
"weight_kg": {
"type": "number",
"description": "Gewicht in Kilogramm"
},
"height_cm": {
"type": "number",
"description": "Größe in Zentimetern"
},
"age": {
"type": "integer",
"description": "Alter in Jahren"
},
"gender": {
"type": "string",
"description": "Geschlecht (männlich oder weiblich)"
},
"activity_level": {
"type": "string",
"description": "Aktivitätslevel (sedentary, light, moderate, active, very_active)"
}
},
"required": ["weight_kg", "height_cm", "age", "gender", "activity_level"]
}
}
]
```
Diese Schemata definieren den Namen, die Beschreibung und die Parameter für jede Funktion, sodass das LLM bestimmen kann, wann und wie es diese verwenden soll.
“ Aufbau des RAG-Systems für genaue Ernährungsdaten
Die Komponente Retrieval-Augmented Generation (RAG) stellt sicher, dass Antworten zu Ernährungsfakten auf der Datenbank basieren. Rufen Sie relevante Einträge aus der Ernährungsdatenbank ab und stellen Sie sie dem LLM als Kontext zur Verfügung:
```python
def nutrition_assistant(query):
"""Verarbeitet eine ernährungsbezogene Anfrage mithilfe von RAG und Function Calling."""
# Schritt 1: Relevante Ernährungsinformationen mithilfe von RAG abrufen
results = nutrition_collection.query(
query_texts=[query],
n_results=5
)
# Abgerufene Informationen formatieren
context = "\n".join(results["documents"][0])
```
Dieser Code verwendet die Abfragefunktion von ChromaDB, um die 5 relevantesten Einträge für die Anfrage des Benutzers zu finden.
“ Alles zusammenfügen: Die Ernährungsassistenten-Funktion
Kombinieren Sie alle Komponenten in der Hauptassistentenfunktion:
```python
def nutrition_assistant(query):
"""Verarbeitet eine ernährungsbezogene Anfrage mithilfe von RAG und Function Calling."""
# Schritt 1: Relevante Ernährungsinformationen mithilfe von RAG abrufen
results = nutrition_collection.query(
query_texts=[query],
n_results=5
)
# Abgerufene Informationen formatieren
context = "\n".join(results["documents"][0])
# Schritt 2: Das Modell mit Function Calling einrichten
model = genai.GenerativeModel(
model_name="gemini-1.5-pro",
generation_config={"temperature": 0.2}
)
# Schritt 3: Den Prompt mit Kontext und Anfrage erstellen
prompt = f"""Sie sind ein hilfreicher Ernährungsassistent. Verwenden Sie die folgenden Ernährungsinformationen, um die Anfrage zu beantworten.
ERNÄHRUNGSINFORMATIONEN:
{context}
BENUTZERANFRAGE: {query}
Wenn der Benutzer nach BMI- oder Kalorienberechnungen fragt, verwenden Sie die entsprechende Funktion.
Geben Sie für andere Ernährungsfragen hilfreiche Ratschläge basierend auf dem Kontext und Ihrem Wissen.
"""
# Schritt 4: Antwort mit möglichen Funktionsaufrufen generieren
response = model.generate_content(
prompt,
tools=nutrition_functions
)
# Schritt 5: Funktionsaufrufe verarbeiten, falls vorhanden
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
# Die entsprechende Funktion ausführen
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"]
)
# Eine neue Antwort mit dem Funktionsergebnis generieren
final_prompt = f"""Sie sind ein hilfreicher Ernährungsassistent. Ein Benutzer fragte: "{query}"
Sie haben die Funktion {function_name} aufgerufen, die dieses Ergebnis zurückgegeben hat:
{result}
Bitte geben Sie eine hilfreiche, konversationelle Antwort, die diese Ergebnisse erklärt und angemessene Ernährungsratschläge gibt.
Fügen Sie bei Bedarf spezifische Lebensmittelempfehlungen basierend auf den Ernährungsinformationen hinzu.
"""
final_response = model.generate_content(final_prompt)
return final_response.text
# Wenn kein Funktionsaufruf gemacht wurde, die ursprüngliche Antwort zurückgeben
return response.text
```
Diese Funktion ruft Ernährungsinformationen ab, richtet das Gemini-Modell ein, erstellt einen Prompt, generiert eine Antwort und verarbeitet bei Bedarf Funktionsaufrufe.
“ Testen mit realen Anfragen
Testen Sie den KI-Personal-Ernährungsberater mit realen Anfragen:
```python
test_queries = [
"Was sind die Nährwerte eines Apfels?",
"Können Sie meinen BMI berechnen? Ich bin 70 kg und 175 cm groß.",
"Wie viele Kalorien sollte ich essen? Ich bin ein 30-jähriger Mann, 80 kg, 180 cm groß und mäßig aktiv.",
"Was sind einige proteinreiche Lebensmittel zum Muskelaufbau?",
"Können Sie einen Ernährungsplan zur Gewichtsabnahme vorschlagen?"
]
for query in test_queries:
print(f"\nAnfrage: {query}")
print("-" * 50)
response = nutrition_assistant(query)
print(response)
print("=" * 80)
```
Diese Beispiele zeigen die Vielseitigkeit des KI-Personal-Ernährungsberaters, der sachliche Anfragen bearbeitet, Berechnungen durchführt und personalisierte Empfehlungen gibt.
“ Zukünftige Verbesserungen und Fazit
Mögliche Verbesserungen umfassen die Erweiterung der Ernährungsdatenbank, die Verbesserung der Genauigkeit von Kalorienschätzungen, die Hinzufügung von Unterstützung für komplexere diätetische Anforderungen und die Integration mit Wearables. Der KI-Personal-Ernährungsberater-Assistent kombiniert LLMs, Function Calling und RAG, um personalisierte Ernährungsberatung anzubieten. Dieses System kann Ernährungsfragen beantworten, BMI und Kalorienbedarf berechnen und personalisierte Empfehlungen geben, was das Potenzial von KI für die persönliche Gesundheit aufzeigt.
Wir verwenden Cookies, die für die Funktionsweise unserer Website unerlässlich sind. Um unsere Website zu verbessern, möchten wir zusätzliche Cookies verwenden, die uns helfen zu verstehen, wie Besucher sie nutzen, den Verkehr von sozialen Medienplattformen zu unserer Website zu messen und Ihr Erlebnis zu personalisieren. Einige der von uns verwendeten Cookies werden von Drittanbietern bereitgestellt. Klicken Sie auf 'Akzeptieren', um alle Cookies zu akzeptieren. Um alle optionalen Cookies abzulehnen, klicken Sie auf 'Ablehnen'.
Kommentar(0)