Construa um treinador de health Langchain: seu private coach da AI


Muitas pessoas atingem a academia com paixão e acreditam que estão no caminho certo para alcançar seus objetivos de condicionamento físico. Mas os resultados não estão lá devido ao mau planejamento da dieta e à falta de direção. Contratar um private coach, juntamente com uma pilha de ginástica cara, nem sempre é uma opção. É por isso que criei esta postagem no weblog para mostrar como construir seu treinador de health usando o poder de Langchain. Com isso, agora você pode obter conselhos de treino e dieta personalizados para seus objetivos com custo mínimo. Vamos começar a pegar uma tecnologia incrível e transformá-la em seu co-piloto de health!

Por que usar Langchain?

O Langchain permite que você faça muito mais ao criar aplicativos avançados de IA, combinando grandes modelos de idiomas (LLMS) com ferramentas, fontes de dados e memória. Em vez de invocar o Llm Com um immediate de texto simples, você pode criar agentes que invocam funções, informações de consulta e gerenciem conversas com o estado. Para um treinador de health, o Langchain permite combinar inteligência LLM com lógica personalizada – por exemplo, criar sugestões de treino, acompanhar o progresso e obter dados de saúde – para que você possa ser um treinador interativo mais inteligente sem ter que descobrir isso sozinho.

Pré -requisitos

Para criar seu treinador de health usando Langchain, você precisará:

  • Uma chave de API do OpenAI para acessar modelos de linguagem
  • Uma chave para o serviço Serpapi usar a pesquisa na internet
  • Conhecimento básico de Python

Isso é tudo, agora você está pronto para começar.

Como construir seu treinador de health?

Nesta seção, demonstrarei como fazer seu treinador de health usando um agente Langchain. Certifique -se de ter tudo preparado de acordo com os pré -requisitos. Vou orientá-lo no processo passo a passo de criar a solução e explicar o papel que cada etapa desempenha na obtenção do resultado.

A Fitcoach AI é um treinador de health de conversação que coleta dados de usuários de forma consistente e gera exercícios personalizados e planos de dieta usando agentes Langchain com o OpenAI.

Dependências centrais

Para instalar todas as bibliotecas necessárias para a criação do agente de health, execute o seguinte comando em sua linha de comando:

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

Depois que todas as dependências estiverem em vigor, começaríamos importando todos os módulos relevantes para a tarefa:

import os
import gradio as gr
import traceback
import datetime
from typing import Checklist, Tuple, Elective

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 setting variables
dotenv.load_dotenv()

SERPERSECHTOOL Class

Funcionalidade: Fornece a capacidade de ter recursos de pesquisa na Internet em tempo actual para obter informações atualizadas sobre health/nutrição.

Principais recursos:

  • Integra -se à API Serper para obter resultados de pesquisa do Google
  • Retorna os 5 principais resultados de pesquisa formatados que incluem o título, snippet e URL
  • Tem modos de falha aceitáveis ​​com proteção de tempo limite
  • Suporta sincronização e assíncrono
# ----------- SERPER SEARCH TOOL ------------

class SerperSearchTool(BaseTool):
    identify: 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 setting variables"

            url = "https://google.serper.dev/search"
            payload = json.dumps({"q": question})
            headers = {
                'X-API-KEY': api_key,
                'Content material-Kind': 'utility/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 means
            if outcomes:
                formatted_results = "Search Outcomes:nn"
                for i, end in enumerate(outcomes, 1):
                    formatted_results += f"{i}. {consequence('title')}n"
                    formatted_results += f"   {consequence('snippet')}n"
                    formatted_results += f"   URL: {consequence('hyperlink')}nn"
                return formatted_results
            else:
                return "No search outcomes discovered."

        besides requests.exceptions.RequestException as e:
            return f"Error performing search - Community concern: {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)

Classe do UserDatatracker

Funcionalidade: Obtenha todas as informações necessárias antes de criar quaisquer planos de condicionamento físico

Required Knowledge Fields (so as):

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

Principais recursos:

  • Validação de campo: Cada entrada será validada com funções de validação personalizadas.
  • Fluxo seqüencial: Ninguém pode pular à frente.
  • Manipulação de erros: Forneça mensagens de erro específicas para entradas inválidas.
# ----------- USER DATA TRACKER CLASS ------------

class UserDataTracker:
    def __init__(self):
        self.knowledge = {}
        # Outline required fields with their validation features and query prompts
        self.required_fields = {
            'fitness_goal': {
                'query': "What's your main health objective? (e.g., weight reduction, muscle acquire, basic health)",
                'validate': self._validate_fitness_goal
            },
            'age': {
                'query': "How outdated are you? (Have to 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
            },
            'top': {
                'query': "What's your top? (e.g., 5'10" or 178 cm)",
                'validate': self._validate_height
            },
            'activity_level': {
                'query': "What's your exercise degree? (sedentary, frivolously lively, reasonably lively, very lively, extraordinarily lively)",
                'validate': self._validate_activity_level
            },
            'dietary_preferences': {
                'query': "Do you comply with any particular eating 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., fitness center, dwelling exercises, tools obtainable, any accidents?)",
                'validate': self._validate_workout_preferences
            },

        }
        self.current_step = 0

Configuração do agente Langchain

Inicialização do agente:

  • Modelo: GPT-4O-mini com temperatura 0,3 para consistência.
  • Memória: Conversorbuffermemory para consistência do contexto.
  • Ferramentas: Pesquisa na Internet para permitir que o agente procure informações em tempo actual.

O initialize_fitcoach_agent A função configura o Fitcoach, um agente de conversação do Langchain que serve como um treinador digital de condicionamento físico e nutrição. Ele se conecta ao modelo de idioma GPT-4O-MINIé potencialmente aumentado por ferramentas de pesquisa na internet e acompanha a memória de conversação para o contexto. O agente segue uma continuidade rigorosa e baseada em regras: faz perguntas específicas aos usuários, uma de cada vez, para extrair todas as informações importantes sobre metas de condicionamento físico, idade, métricas corporais, hábitos alimentares e histórico médico, entre outros. Somente depois de tudo que você precisava saber que foi reunido e confirmado, o agente se comprometerá a não gerar planos de condicionamento físico ou dieta. Dessa forma, o agente permite as instruções seguras, precisas e personalizadas que os usuários desejam em um agente. Depois que todas as informações necessárias forem coletadas, o FitCoach gera rotinas abrangentes de exercícios e planos de refeições com base no usuário, oferecendo um plano de treinamento interativo e envolvente.

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

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

        # Initialize the language mannequin with right mannequin identify
        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 might 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 lógica

  • IS_PLAN_CONTENT: Determina se um determinado texto possui um plano detalhado de condicionamento ou nutrição, verificando várias palavras -chave, como dias da semana, nomes de refeições e comparações de exercícios. Ajuda a separar os planos das conversas informais em torno da aptidão.
  • format_plan_for_text: Formatos Plano de health bruto Textos em seções mais limpas enquanto mantém títulos, listas e parágrafos, para melhorar a legibilidade e a adequação para compartilhar bate -papo ou e -mail.
  • chat_function: Gerencia o fluxo de bate -papo Fitcoach. Coleta informações do usuário em etapas (Objetivo de Health do Usuário, Preferências de Refeição), chama o agente de IA para produzir um plano de treino e refeição personalizado e lida com segurança aos erros para manter o fluxo de bate -papo ininterrupto.
 ----------- GRADIO CHATBOT LOGIC ------------

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

    # Verify for frequent plan indicators
    plan_indicators = (
        'exercise plan', 'train routine', 'coaching program',
        'meal plan', 'diet plan', 'eating 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', 'diet',
        'train', 'exercise', 'coaching', 'routine', 'program', 'plan'
    )

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

    # Require not less than 3 matching indicators to think about it a plan
    return len(matching_indicators) >= 3

Nota: Eu mostrei apenas partes do código no artigo. Meu código completo está disponível aqui.

Interface do usuário

Quando se trata da interface do usuário, você pode usar soluções como o StreamLit ou o Gradio para simplificar. Usei o Gradio, pois me permite criar um aplicativo da Internet polido com um design personalizado, atualizações automáticas e uma interface rápida e responsiva que se adapte a aplicativos de saúde e health. Clique aqui Para visualizar o código -fonte.

Construa um treinador de health Langchain: seu private coach da AI

Casos de uso para Langchain

  • Bots de suporte ao cliente: Crie um assistente que possa pesquisar nas bases de conhecimento de suporte ao cliente para encontrar respostas para as perguntas dos clientes.
  • Chatbots auxiliados por pesquisa: Mapas de maldição para fontes de conhecimento em tempo actual, como Google e Wikipedia.
  • Q&A do documento: Permita que o usuário faça add de um PDF e recupere automaticamente respostas precisas com citações.
  • Assistentes de manipulação de dados: Permita que os usuários enviem e explorem dados em uma planilha enquanto fazem perguntas relacionadas aos dados.
  • Ferramentas de geração de conteúdo: Gere conteúdo, incluindo blogs, e -mails ou postagens de mídia social.
  • Sistemas multi-agentes: Crie sistemas nos quais os agentes de IA podem colaborar ou se especializar na tarefa.

Conclusão

Quando tudo está dito e feito, a IA não é tudo sobre tecnologia; É sobre o funcionamento interno de como alavancar a tecnologia como um poder para melhorar nossa vida cotidiana! Seja para entrar em forma, comer bem ou permanecer motivado, projetar seu próprio treinador de health pessoal exclusivo é um exemplo perfeito de como a IA pode apoiar e motivar, mas ainda assim nos mantenha responsáveis ​​por nossas ações atingirem nossos objetivos. E a melhor parte é que você não precisa ser um assistente de tecnologia para começar a criar seu aplicativo! Existem várias ferramentas como o Langchain for Growth, OpenAI para recursos de IA e Gradio para implantar seu aplicativo inteligente, apenas para mencionar alguns, que podem ajudar a criar aplicativos inteligentes e exclusivos para si mesmos. O futuro da aptidão, assim como muitas outras áreas da vida, está disponível para nós!

Cientista de dados | AWS Licensed Options Architect | Ai & ML Innovator

Como cientista de dados da Analytics Vidhya, especializo-me em aprendizado de máquina, aprendizado profundo e soluções orientadas a IA, alavancando a PNL, visão computacional e tecnologias em nuvem para criar aplicativos escaláveis.

Com um B.Tech em ciência da computação (ciência de dados) da VIT e certificações como arquiteto e tensorflow de soluções certificadas da AWS, meu trabalho abrange IA generativa, detecção de anomalias, detecção de notícias falsas e reconhecimento de emoções. Apaixonado pela inovação, eu me esforço para desenvolver sistemas inteligentes que moldem o futuro da IA.

Faça login para continuar lendo e desfrutar de conteúdo com curado especialista.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *