cari
Rumahpembangunan bahagian belakangTutorial PythonMembina Apl Kecergasan GenAI dengan Gemini

Musim panas lalu, apabila saya mengetahui tentang Pertandingan Pembangun API Gemini, saya melihatnya sebagai peluang yang baik untuk mengotorkan tangan saya dengan aplikasi GenAI. Sebagai peminat kecergasan, kami (saya & Manos Chainakis) terfikir untuk mencipta apl yang boleh menjana pelan senaman dan pemakanan yang diperibadikan—menggabungkan AI dengan keutamaan jurulatih manusia. Begitulah cara Fitness Tribe AI dilahirkan. Siaran ini akan membimbing anda melalui proses pembangunan dan susunan teknologi yang saya gunakan, dengan tumpuan pada aspek GenAI.

Building a GenAI Fitness App with Gemini

Fitness Tribe AI  |  Pertandingan Pembangun API Gemini  |  Google AI untuk Pembangun

Menjadikan Latihan Peribadi Lebih Baik untuk Semua Orang, Di Mana-mana.

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

Konsep Di Sebalik Fitness Tribe AI

Fitness Tribe AI menggabungkan kepakaran jurulatih manusia dengan keupayaan model AI untuk mencipta program kecergasan tersuai yang memenuhi keperluan dan matlamat setiap atlet.

The Tech Stack

Komponen utama timbunan teknologi ialah:

  • FastAPI untuk bahagian belakang dan penyepaduan model AI
  • Supabase untuk pengesahan pengguna dan pengurusan data
  • Ion & Sudut untuk apl mudah alih bahagian hadapan
  • Astro untuk halaman pendaratan

FastAPI: Bahagian Belakang dan Integrasi AI

FastAPI berfungsi sebagai tulang belakang Fitness Tribe AI, mengendalikan analisis dikuasakan AI.

Begini cara projek distrukturkan:

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

Elemen utama pelaksanaan FastAPI:

  • Penghalaan API: Laluan dibahagikan kepada fail berasingan untuk makan (meals.py), senaman (workouts.py) dan pemakanan (nutrition.py), memastikan struktur API teratur dan berskala. Setiap penghala disambungkan dalam main.py, di mana sistem penghalaan FastAPI menghubungkan semuanya bersama-sama.
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)
  • Penyatuan Model Gemini: Kelas GeminiModel, dalam gemini_model.py, mengendalikan interaksi model AI. Mengambil contoh kaedah penganalisis makanan, saya menggunakan Bantal untuk memproses data imej dan apl menghantar kedua-dua imej serta gesaan tersuai kepada Gemini AI untuk menganalisis butiran makanan. Butiran penting di sini ialah gesaan hendaklah cukup khusus, apabila ia datang kepada format respons yang dijangkakan, supaya ia boleh diproses oleh lapisan perkhidmatan.
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
</food>
  • Skema Pydantic untuk Pengesahan Data: Respons daripada model AI disahkan dan distrukturkan menggunakan model Pydantic. Sebagai contoh, skema Hidangan dalam schemas/meal.py memastikan respons adalah konsisten sebelum ia dikembalikan kepada pengguna.
from pydantic import BaseModel
from typing import Dict

class Meal(BaseModel):
    food_name: str
    total_calories: int
    calories_per_ingredient: Dict[str, int]
  • Lapisan Perkhidmatan: Lapisan perkhidmatan, terletak dalam perkhidmatan/, merangkum logik setiap ciri. Contohnya, meal_service.py mengendalikan analisis makanan, memastikan data diproses dengan betul sebelum mengembalikan hasil AI.
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))

Dengan memanfaatkan struktur modular FastAPI, penghalaan API yang jelas, Pydantic untuk pengesahan data dan logik perkhidmatan yang teratur, Fitness Tribe AI dengan cekap mengendalikan interaksi model AI dengan gesaan tersuai untuk menyampaikan cerapan kecergasan dan pemakanan yang diperibadikan. Anda boleh dapatkan repo penuh di sini:

Building a GenAI Fitness App with Gemini kecergasan-suku / kecergasan-suku-ai

Fitness Tribe AI ialah API dikuasakan AI, menyediakan titik akhir untuk jurulatih dan atlet.

Fitness Tribe API

Fitness Tribe AI ialah API kecergasan dikuasakan AI yang direka untuk jurulatih dan atlet. API menyediakan fungsi analisis makanan dengan menganalisis foto makanan dan pembina senaman dikuasakan AI, yang boleh menjana rancangan senaman berdasarkan profil atlet. Fitness Tribe AI telah membina model Gemini.

Ciri

  • 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
│   │   ├──
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!

Atas ialah kandungan terperinci Membina Apl Kecergasan GenAI dengan Gemini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Bagaimana anda memotong senarai python?Bagaimana anda memotong senarai python?May 02, 2025 am 12:14 AM

Slicingapythonlistisdoneusingthesyntaxlist [Mula: berhenti: langkah] .here'showitworks: 1) startistheindexofthefirstelementtoinclude.2) stopistheindexofthefirstelementToexclude.3)

Apakah beberapa operasi biasa yang boleh dilakukan pada array numpy?Apakah beberapa operasi biasa yang boleh dilakukan pada array numpy?May 02, 2025 am 12:09 AM

NumpyallowsforvariousoperationsonArrays: 1) BasicarithmeticLikeaddition, penolakan, pendaraban, danDivision; 2) Pengerjaan AdvancedSuchasmatrixmultiplication; 3) Element-WiseOperationswithoutExplicitLoops;

Bagaimana tatasusunan digunakan dalam analisis data dengan python?Bagaimana tatasusunan digunakan dalam analisis data dengan python?May 02, 2025 am 12:09 AM

Arraysinpython, terutamanya yang ada, adalah, penawaran yang ditawarkan.1) numpyarraysenableFandlingoflargedataSetsandClexPleperationsLikemovingAverages.2)

Bagaimanakah jejak memori senarai dibandingkan dengan jejak memori array di Python?Bagaimanakah jejak memori senarai dibandingkan dengan jejak memori array di Python?May 02, 2025 am 12:08 AM

ListsSandnumpyAraySInpythonHavedifferMememoryFootPrints: listsaremoreflexibleButlessMememory-cekap, pemanmak

Bagaimana anda mengendalikan konfigurasi khusus persekitaran semasa menggunakan skrip python yang boleh dilaksanakan?Bagaimana anda mengendalikan konfigurasi khusus persekitaran semasa menggunakan skrip python yang boleh dilaksanakan?May 02, 2025 am 12:07 AM

ToensurePythonscriptsbehaveCorrectlyCrossdevelopment, pementasan, dan produksi, usetheseStregies: 1) Environmentvariablesforsimplesettings, 2) ConfigurationFilesfilePlexSetups, dan3) Dynamicloadingforadaptability.EachMethodeFerPiReFiteReFiteShitsandReFitSandRiteFitSandRiteFitSandRiteFiteSandRiteReFitSandRiteReFitSandRiteFiteShiteSandReFiteShitsandReShitsAnfitsEts,

Bagaimana anda memotong array python?Bagaimana anda memotong array python?May 01, 2025 am 12:18 AM

Sintaks asas untuk pengirim senarai python adalah senarai [Mula: Berhenti: Langkah]. 1. Start adalah indeks elemen pertama yang disertakan, 2.Stop adalah indeks elemen pertama yang dikecualikan, dan 3. Step menentukan saiz langkah antara elemen. Hirisan tidak hanya digunakan untuk mengekstrak data, tetapi juga untuk mengubah suai dan membalikkan senarai.

Di bawah keadaan apa yang mungkin senarai lebih baik daripada tatasusunan?Di bawah keadaan apa yang mungkin senarai lebih baik daripada tatasusunan?May 01, 2025 am 12:06 AM

ListsOutPerFormAraySin: 1) DynamicsizingandFrequentInsertions/Deletions, 2) StoringHeterogeneousData, dan3) MemoryeficiencyForSparsedata, ButmayHaveslightPerformancecostSincertaor.

Bagaimana anda boleh menukar array python ke senarai python?Bagaimana anda boleh menukar array python ke senarai python?May 01, 2025 am 12:05 AM

ToConvertapythonarraytoalist, usethelist () constructororageneratorexpression.1) importTheArrayModuleAndCreateeanArray.2) uselist (arr) atau [xforxinarr] toConvertittoalist, urusanPengerasiPormanceAndMemoryeficiencyForlargedatasets.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular