Viele Menschen haben leidenschaftlich ins Fitnessstudio gegangen und glauben, dass sie auf dem richtigen Weg sind, um ihre Fitnessziele zu erreichen. Die Ergebnisse sind jedoch nicht aufgrund schlechter Diätplanung und mangelnder Richtung vorhanden. Die Einstellung eines Private Trainers zusammen mit einem teuren Fitnessstapel ist nicht immer eine Choice. Aus diesem Grund habe ich diesen Weblog -Beitrag erstellt, um Ihnen zu zeigen, wie Sie Ihren Health -Coach mit der Kraft von Langchain aufbauen können. Damit können Sie jetzt mit minimalen Kosten ein Trainings- und Ernährungsberat an Ihre Ziele angepasst. Lassen Sie uns mit der Einbeziehung von toller Technik beginnen und es in Ihren Health-Co-Pilot verwandeln!

Warum Langchain verwenden?

Mit Langchain können Sie beim Erstellen erweiterter KI -Anwendungen viel mehr tun, indem Sie große Sprachmodelle (LLMs) mit Instruments, Datenquellen und Speicher kombinieren. Anstatt die aufzurufen Llm Mit einer einfachen Textaufforderung können Sie Agenten erstellen, die Funktionen aufrufen, Informationen abfragen und Gespräche mit dem Zustand verwalten. Für einen Health -Coach können Sie LLM -Intelligenz mit benutzerdefinierter Logik kombinieren – z.

Voraussetzungen

Um Ihren Health -Coach mit Langchain zu erstellen, benötigen Sie:

  • Ein OpenAI -API -Schlüssel zum Zugriff auf Sprachmodelle
  • Ein Schlüssel für den Serpapi -Dienst, um die Net -Suche zu nutzen
  • Grundkenntnisse von Python

Das ist alles, du bist jetzt bereit, loszulegen.

Wie baue ich Ihren Fitnesstrainer auf?

In diesem Abschnitt werde ich demonstrieren, wie Sie Ihren Health -Coach mit einem Langchain -Agenten herstellen. Stellen Sie sicher, dass Sie alles nach den Voraussetzungen vorbereitet haben. Ich werde Sie durch den Schritt-für-Schritt-Prozess des Aufbaus der Lösung führen und die Rolle, die jeder Schritt bei der Erzielung des Ergebnisses spielt, erklären.

Fitcoach AI ist ein Gesprächsfitnesscoach, der Benutzerdaten konsequent sammelt und personalisierte Trainings- und Ernährungspläne mit Langchain -Agenten mit OpenAI generiert.

Kernabhängigkeiten

Führen Sie den folgenden Befehl in Ihrer Befehlszeile aus:

pip set up gradio langchain openai serper-dev python-doten

Sobald alle Abhängigkeiten vorhanden sind, importieren wir zunächst alle relevanten Module für die Aufgabe:

import os
import gradio as gr
import traceback
import datetime
from typing import Record, Tuple, Optionally available

from langchain_openai import ChatOpenAI
from langchain.reminiscence import ConversationBufferMemory
from langchain.brokers import initialize_agent, AgentType
from langchain.instruments import BaseTool
import json
import requests
import dotenv

# Load surroundings variables
dotenv.load_dotenv()

Serpersearchtool -Klasse

Funktionalität: Bietet die Möglichkeit, Net-Suchfunktionen in Echtzeit für aktuelle Informationen zu Health-/Ernährungsinformationen zu erhalten.

Hauptmerkmale:

  • Integriert sich in die Serper -API, um Google -Suchergebnisse zu erhalten
  • Gibt die Prime 5 formatierten Suchergebnisse zurück, die Titel, Snippet und URL enthalten
  • Hat akzeptable Fehlermodi mit Zeitüberschreitungsschutz
  • Unterstützt sowohl Synchronisation als auch Asynchronisation
# ----------- SERPER SEARCH TOOL ------------

class SerperSearchTool(BaseTool):
    title: str = "search_web"
    description: str = "Searches the net for real-time data and returns structured outcomes"

    def _run(self, question: str) -> str:
        """Search the net utilizing Serper API"""
        attempt:
            api_key = os.getenv("SERPER_API_KEY")
            if not api_key:
                return "Error: SERPER_API_KEY not present in surroundings variables"

            url = "https://google.serper.dev/search"
            payload = json.dumps({"q": question})
            headers = {
                'X-API-KEY': api_key,
                'Content material-Sort': 'software/json'
            }

            response = requests.put up(url, headers=headers, knowledge=payload, timeout=10)
            response.raise_for_status()
            search_results = response.json()

            # Extract and format natural outcomes
            outcomes = ()
            if 'natural' in search_results:
                for merchandise in search_results('natural')(:5):  # Restrict to prime 5 outcomes
                    outcomes.append({
                        "title": merchandise.get('title', ''),
                        "hyperlink": merchandise.get('hyperlink', ''),
                        "snippet": merchandise.get('snippet', '')
                    })

            # Format leads to a readable approach
            if outcomes:
                formatted_results = "Search Outcomes:nn"
                for i, lead to enumerate(outcomes, 1):
                    formatted_results += f"{i}. {outcome('title')}n"
                    formatted_results += f"   {outcome('snippet')}n"
                    formatted_results += f"   URL: {outcome('hyperlink')}nn"
                return formatted_results
            else:
                return "No search outcomes discovered."

        besides requests.exceptions.RequestException as e:
            return f"Error performing search - Community subject: {str(e)}"
        besides Exception as e:
            return f"Error performing search: {str(e)}"

    async def _arun(self, question: str) -> str:
        """Async model of search"""
        return self._run(question)

UserDatatracker -Klasse

Funktionalität: Erhalten Sie alle erforderlichen Informationen, bevor Sie Fitnesspläne erstellen

Required Knowledge Fields (so as):

Health aim (weight reduction, muscle acquire, and so forth.)
Age (in vary 10-100 validation)
Gender (male/feminine/different)
Weight (in items, - kg/lbs)
Top (in cm or toes/inches)
Exercise Degree (5 predefined ranges)
Food plan Preferences (vegetarian, vegan, and so forth.)
Food plan Restrictions/allergy
Exercise-Preferencing & limitations

Hauptmerkmale:

  • Feldvalidierung: Jede Eingabe wird mit benutzerdefinierten Validierungsfunktionen validiert.
  • Sequentieller Fluss: Niemand kann voranspringen.
  • Fehlerbehandlung: Geben Sie spezifische Fehlermeldungen für ungültige Eingaben an.
# ----------- USER DATA TRACKER CLASS ------------

class UserDataTracker:
    def __init__(self):
        self.knowledge = {}
        # Outline required fields with their validation capabilities and query prompts
        self.required_fields = {
            'fitness_goal': {
                'query': "What's your major health aim? (e.g., weight reduction, muscle acquire, basic health)",
                'validate': self._validate_fitness_goal
            },
            'age': {
                'query': "How previous are you? (Should be between 10-100)",
                'validate': self._validate_age
            },
            'gender': {
                'query': "What's your gender? (male/feminine/different)",
                'validate': self._validate_gender
            },
            'weight': {
                'query': "What's your present weight? (e.g., 150 lbs or 68 kg)",
                'validate': self._validate_weight
            },
            'peak': {
                'query': "What's your peak? (e.g., 5'10" or 178 cm)",
                'validate': self._validate_height
            },
            'activity_level': {
                'query': "What's your exercise stage? (sedentary, flippantly energetic, reasonably energetic, very energetic, extraordinarily energetic)",
                'validate': self._validate_activity_level
            },
            'dietary_preferences': {
                'query': "Do you observe any particular food regimen? (e.g., vegetarian, vegan, keto, none)",
                'validate': self._validate_dietary_preferences
            },
            'dietary_restrictions': {
                'query': "Any meals allergic reactions or dietary restrictions? (e.g., nuts, dairy, gluten, none)",
                'validate': self._validate_dietary_restrictions
            },
            'workout_preferences': {
                'query': "What are your exercise preferences? (e.g., gymnasium, house exercises, gear obtainable, any accidents?)",
                'validate': self._validate_workout_preferences
            },

        }
        self.current_step = 0

Langchain Agent -Konfiguration

Agenteninitialisierung:

  • Modell: GPT-4-MINI mit Temperatur 0,3 für die Konsistenz.
  • Erinnerung: ConversationBuffermemory für Kontextkonstanz.
  • Werkzeuge: Websuche, um den Agenten in Echtzeitinformationen nachzuschlagen.

Der initialize_fitcoach_agent Operate Configures Fitcoach, ein Langchain -Konversationsagent, der als virtueller Health- und Ernährungscoach dient. Es verbindet sich mit dem Sprachmodell GPT-4O-Miniwird möglicherweise durch Net -Search -Instruments erweitert und verfolgt den Konversationsgedächtnis für den Kontext. Der Agent folgt einer strengen, regelbasierten Dialog-Kontinuität: Er stellt den Benutzern unter anderem spezifische Fragen nacheinander, um alle wichtigen Informationen zu Fitnesszielen, Alter, Körpermetriken, Lebensmittelgewohnheiten und Krankengeschichte zu extrahieren. Erst nach allem, was Sie wissen mussten, wurde der Agent verpflichtet, keine Health- oder Diätpläne zu erstellen. Auf diese Weise ermöglicht der Agent die sicheren, genauen und personalisierten Anweisungen, die Benutzer in einem Agenten erwarten. Sobald alle notwendigen Informationen gesammelt wurden, generiert Fitcoach umfassende Trainingsroutinen und Speisepläne, die auf dem Benutzer basieren, und bietet gleichzeitig einen interaktiven und ansprechenden Teaching -Plan an.

# ----------- LANGCHAIN AGENT SETUP ------------

def initialize_fitcoach_agent():
    """Initialize the FitCoach agent with error dealing with"""
    attempt:
        # Examine for OpenAI API key
        openai_key = os.getenv("OPENAI_API_KEY")
        if not openai_key:
            elevate ValueError("OPENAI_API_KEY not present in surroundings variables")

        # Initialize the language mannequin with right mannequin title
        llm = ChatOpenAI(
            mannequin="gpt-4o-mini",
            temperature=0.3,
            openai_api_key=openai_key
        )

        # Initialize instruments
        instruments = ()
        attempt:
            if os.getenv("SERPER_API_KEY"):
                search_tool = SerperSearchTool()
                instruments.append(search_tool)
                print("✅ Search software initialized efficiently")
            else:
                print("⚠️ SERPER_API_KEY not discovered - search performance shall be restricted")
        besides Exception as e:
            print(f"⚠️ Couldn't initialize search software: {e}")

        # Initialize reminiscence
        reminiscence = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

Gradio Chatbot Logic

  • IS_PLAN_CONTENT: Ermittelt, ob ein bestimmter Textual content einen detaillierten Health- oder Ernährungsplan hat, indem Sie mehrere Schlüsselwörter wie die Woche der Woche, Essensnamen und Trainingsvergleiche überprüfen. Hilft, Pläne von informellen Gesprächen um Health zu trennen.
  • format_plan_for_text: Formatiert rohe Fitnessplan -Texte in sauberere Abschnitte, während sie Überschriften, Hear und Absätze beibehalten, um die Lesbarkeit und Eignung für das Teilen in Chat oder E -Mail zu verbessern.
  • chat_function: Verwaltet den Fitcoach -Chat -Fluss. Sammelt Informationen vom Benutzer in Schritten (Benutzer -Health -Ziel, Mahlzeitpräferenzen), ruft den AI -Agenten auf, um einen benutzerdefinierten Trainings- und Speiseplan zu erstellen, und behandelt Fehler sicher, um den Chat -Fluss ununterbrochen zu halten.
 ----------- GRADIO CHATBOT LOGIC ------------

def is_plan_content(textual content: str) -> bool:
    """Examine if the textual content incorporates a health plan with detailed content material"""
    if not textual content or len(textual content.strip()) < 100:  # Too quick to be a whole plan
        return False

    # Examine for frequent plan indicators
    plan_indicators = (
        'exercise plan', 'train routine', 'coaching program',
        'meal plan', 'vitamin plan', 'food regimen plan', 'weekly schedule',
        'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
        'units x reps', 'relaxation between units', 'heat up', 'quiet down',
        'day 1', 'day 2', 'day 3', 'day 4', 'day 5', 'day 6', 'day 7',
        'breakfast', 'lunch', 'dinner', 'snacks', 'meals', 'vitamin',
        'train', 'exercise', 'coaching', 'routine', 'program', 'plan'
    )

    # Examine for a number of indicators to scale back false positives
    text_lower = textual content.decrease()
    matching_indicators = (ind for ind in plan_indicators if ind in text_lower)

    # Require a minimum of 3 matching indicators to contemplate it a plan
    return len(matching_indicators) >= 3

Hinweis: Ich habe nur Teile des Codes im Artikel angezeigt. Mein vollständiger Code ist verfügbar Hier.

Benutzeroberfläche

Wenn es um die Benutzeroberfläche geht, können Sie Lösungen wie Streamlit oder Gradio verwenden, um sie einfach zu halten. Ich habe Gradio verwendet, da ich es mir ermöglicht, eine polierte Net -App mit benutzerdefiniertem Design, automatischen Updates und einer schnellen, reaktionsschnellen Schnittstelle zu erstellen, die Gesundheits- und Fitnessanwendungen entspricht. Klicken Hier um den Quellcode anzuzeigen.

Anwendungsfälle für Langchain

  • Kundensupport -Bots: Erstellen Sie einen Assistenten, der Wissensunterstützungskenntnisse durch die Kundenunterstützung durchsucht, um Antworten auf Kundenfragen zu finden.
  • Chatbots für Suche nach Suchdaten: Fluchkarten zu Quellen für Echtzeitwissen wie Google und Wikipedia.
  • Q & A Dokument: Ermöglichen Sie dem Benutzer, eine PDF hochzuladen und automatisch genaue Antworten mit Zitaten abzurufen.
  • Datenmanipulationsassistenten: Ermöglichen Sie den Benutzern, Daten in einer Tabelle hochzuladen und zu erkunden, während Sie Fragen zu den Daten stellen.
  • Instruments für die Inhaltsgenerierung: Generieren Sie Inhalte, einschließlich Blogs, E -Mails oder Social -Media -Posts.
  • Multi-Agent-Systeme: Erstellen von Systemen, in denen KI -Agenten zusammenarbeiten oder sich auf die Aufgabe spezialisieren können.

Abschluss

Wenn alles gesagt und getan ist, geht es bei AI nicht nur um Technologie. Es geht um das Innenleben, wie man Technologie als Kraft nutzt, um unseren Alltag zu verbessern! Egal, ob es ist, in Kind zu kommen, intestine zu essen oder motiviert zu bleiben, Ihr eigener einzigartiger persönlicher Health -Coach zu entwerfen, ist ein perfektes Beispiel dafür, wie KI unterstützen und motivieren kann und uns dennoch für unsere Handlungen zur Rechenschaft ziehen kann, um unsere Ziele zu erreichen. Und das Beste daran ist, dass Sie kein Tech -Assistent sein müssen, um Ihre Bewerbung aufzubauen! Es gibt eine Reihe von Instruments wie Langchain für die Entwicklung, OpenAI für KI -Funktionen und Gradio für die Bereitstellung Ihrer intelligenten Anwendung, nur um einige zu erwähnen, die jedem helfen können, intelligente und einzigartige Anwendungen für sich selbst aufzubauen. Die Zukunft der Health sowie in vielen anderen Lebensbereichen steht uns zur Verfügung!

Datenwissenschaftler | AWS Licensed Options Architect | KI & ML Innovator

Als Datenwissenschaftler bei Analytics Vidhya spezialisiere ich mich auf maschinelles Lernen, Deep Studying und KI-gesteuerte Lösungen, die NLP-, Laptop-Imaginative and prescient- und Cloud-Technologien nutzen, um skalierbare Anwendungen zu erstellen.

Mit einem B.Tech in Informatik (Knowledge Science) aus VIT- und Zertifizierungen wie AWS Licensed Options Architect und TensorFlow umfasst meine Arbeit generative KI, Anomalie -Erkennung, falsche Nachrichtenerkennung und Emotionserkennung. Ich bemühe mich, intelligente Systeme zu entwickeln, die die Zukunft der KI prägen.

Melden Sie sich an, um weiter zu lesen und Experten-Kuratinhalte zu genießen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert