Maison > développement back-end > Tutoriel Python > Créer une application GenAI Fitness avec Gemini

Créer une application GenAI Fitness avec Gemini

DDD
Libérer: 2024-09-27 18:16:02
original
385 Les gens l'ont consulté

L'été dernier, lorsque j'ai découvert le concours de développeurs d'API Gemini, j'y ai vu une excellente occasion de me salir les mains avec les applications GenAI. En tant que passionnés de fitness, nous (moi et Manos Chainakis) avons pensé à créer une application capable de générer des plans d'entraînement et de nutrition personnalisés, combinant l'IA avec les préférences des entraîneurs humains. C’est ainsi qu’est né Fitness Tribe AI. Cet article vous guidera à travers le processus de développement et la pile technologique que j'ai utilisée, en mettant l'accent sur l'aspect GenAI.

Building a GenAI Fitness App with Gemini

IA de la tribu Fitness |  Concours de développeurs d'API Gemini |  Google IA pour les développeurs

Améliorer l'entraînement personnel pour tous, partout.

Building a GenAI Fitness App with Gemini ai.google.dev

Le concept derrière l’IA Fitness Tribe

Fitness Tribe AI combine l'expertise des entraîneurs humains avec les capacités des modèles d'IA pour créer des programmes de remise en forme personnalisés qui répondent aux besoins et aux objectifs de chaque athlète.

La pile technologique

Les principaux composants de la pile technologique sont :

  • FastAPI pour l'intégration du backend et du modèle IA
  • Supabase pour l'authentification des utilisateurs et la gestion des données
  • Ionic & Angular pour l'application mobile frontend
  • Astro pour la page de destination

FastAPI : intégration backend et IA

FastAPI sert d'épine dorsale à Fitness Tribe AI, gérant l'analyse basée sur l'IA.

Voici comment le projet est structuré :

fitness-tribe-ai/
├── app/
│   ├── main.py              # Entry point for FastAPI app
│   ├── routers/             # Handles API routes (meals, nutrition, workouts)
│   ├── models/              # Manages interactions with AI models
│   ├── schemas/             # Pydantic models for input validation
│   ├── services/            # Business logic for each feature
Copier après la connexion

Éléments clés de la mise en œuvre de FastAPI :

  • Routage API : les itinéraires sont divisés en fichiers distincts pour les repas (meals.py), les entraînements (workouts.py) et la nutrition (nutrition.py), gardant la structure de l'API organisée et évolutive. Chaque routeur est connecté dans main.py, où le système de routage de FastAPI relie tout.
from fastapi import FastAPI
from app.routers import meals, nutrition, workouts

app = FastAPI()

app.include_router(meals.router)
app.include_router(nutrition.router)
app.include_router(workouts.router)
Copier après la connexion
  • Intégration du modèle Gemini : la classe GeminiModel, dans gemini_model.py, gère l'interaction du modèle IA. En prenant comme exemple la méthode d'analyse de repas, j'utilise Pillow pour traiter les données d'image, et l'application envoie à la fois l'image et une invite personnalisée à l'IA Gemini pour analyser les détails du repas. Un détail important ici est que l'invite doit être suffisamment spécifique, en ce qui concerne le format de la réponse attendue, pour qu'elle puisse être traitée par la couche de service.
class GeminiModel:
    @staticmethod
    def analyze_meal(image_data):
        prompt = (
            "Analyze the following meal image and provide the name of the food, "
            "total calorie count, and calories per ingredient..."
            "Respond in the following JSON format:"
            "{'food_name': '<food name>' ...}"
        )
        image = Image.open(BytesIO(image_data))
        response = model.generate_content([prompt, image])
        return response.text
Copier après la connexion
  • Schéma Pydantic pour la validation des données : La réponse du modèle d'IA est validée et structurée à l'aide de modèles Pydantic. Par exemple, le schéma Meal dans schemas/meal.py garantit que la réponse est cohérente avant qu'elle ne soit renvoyée à l'utilisateur.
from pydantic import BaseModel
from typing import Dict

class Meal(BaseModel):
    food_name: str
    total_calories: int
    calories_per_ingredient: Dict[str, int]
Copier après la connexion
  • Service Layer : La couche de service, située dans services/, encapsule la logique de chaque fonctionnalité. Par exemple, repas_service.py gère l'analyse des repas, garantissant que les données sont correctement traitées avant de renvoyer les résultats de l'IA.
from app.models.gemini_model import GeminiModel
from app.schemas.meal import Meal
from fastapi import HTTPException
import logging
import json

def analyze_meal(image_data: bytes) -> Meal:
    try:
        result_text = GeminiModel.analyze_meal(image_data)
        if not result_text:
            raise HTTPException(status_code=500, detail="No response from Gemini API")

        clean_result_text = result_text.strip("```

json\n").strip("

```")
        result = json.loads(clean_result_text)
        return Meal(
            food_name=result.get("food_name"),
            total_calories=result.get("total_calories"),
            calories_per_ingredient=result.get("calories_per_ingredient"),
        )
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
Copier après la connexion

En tirant parti de la structure modulaire de FastAPI, du routage clair des API, de Pydantic pour la validation des données et d'une logique de service bien organisée, Fitness Tribe AI gère efficacement les interactions du modèle d'IA avec des invites personnalisées pour fournir des informations personnalisées sur la condition physique et la nutrition. Vous pouvez trouver le dépôt complet ici :

Building a GenAI Fitness App with Gemini tribu fitness / fitness-tribu-ai

Fitness Tribe AI est une API basée sur l'IA, fournissant des points de terminaison aux entraîneurs et aux athlètes.

API Fitness Tribe

Fitness Tribe AI est une API de fitness basée sur l'IA conçue pour les entraîneurs et les athlètes. L'API fournit une fonctionnalité d'analyse des repas en analysant les photos des repas et un générateur d'entraînement alimenté par l'IA, qui peut générer des plans d'entraînement basés sur les profils des athlètes. Fitness Tribe AI a été construit sur le modèle Gemini.

Caractéristiques

  • Meal Analysis: Upload a photo of a meal to receive a detailed analysis of its ingredients and calorie count.
  • Workout Builder: Input an athlete's profile details to receive a personalized workout plan tailored to the athlete's fitness goal.

Project Structure

fitness-tribe-ai/
├── app/
│   ├── __init__.py
│   ├── main.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── gemini_model.py
│   ├── routers/
│   │   ├── __init__.py
│   │   ├── meals.py
│   │   ├── nutrition.py
│   │   ├── workouts.py
│   ├── schemas/
│   │   ├── __init__.py
│   │   ├── meal.py
│   │   ├── nutrition.py
│   │   ├──
Copier après la connexion
View on GitHub

Supabase: User Management & Auth

For user authentication and account management, I used Supabase, which provided a secure, scalable solution without requiring a custom-built authentication system.

Key features I leveraged:

  • Authentication: Supabase's built-in authentication enabled users to log in and manage their profiles with ease.

  • Database Management: Using Supabase’s PostgreSQL-backed database, I stored user preferences, workout routines, and meal plans to ensure updates reflected immediately in the app.

Ionic & Angular: Cross-Platform Frontend

For the frontend, I chose Ionic and Angular, which enabled me to create a mobile-first app that could be deployed on the web right away while it could also be shipped as native for both iOS and Android.

Astro: A Lightning-Fast Landing Page

For the landing page, I opted for Astro, which focuses on performance by shipping minimal JavaScript. Astro allowed me to build a fast, lightweight page that efficiently showcased the app.

Conclusion

Developing Fitness Tribe AI was a learning journey that enabled me to explore the power that AI models give us nowadays. Each framework played a role, from FastAPI’s robust backend capabilities and ease of use to Supabase’s user management, Ionic’s cross-platform frontend and Astro’s high-performance landing pages.

For anyone looking to build a GenAI app, I highly recommend exploring these frameworks (and especially FastAPI) for their powerful features and smooth developer experience.

Have questions or want to learn more about it? Let me know in the comments!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal