Remarque : Pour exécuter localement Gemini API Endpoints, configurez d'abord votre compte Google Vertex AI https://cloud.google.com/sdk/docs/initializing
Cette application Travel Assistant est conçue pour tester l'architecture évolutive complète des applications d'IA générative.
Nous avons exploré en profondeur les appels de fonctions Gemini Pro et les fonctionnalités Open AI Dev Day. Les services sont développés à l'aide du framework FastAPI et la frontière Frontend est alimentée par NextJS 14 ainsi que rationalisée pour les développeurs Python purs.
Les cartes alimentées par l'IA sont alimentées par « l'API javascript de Google Maps » pour NextJS et « Plotly with MapBox » pour Streamlit.
Dans cette vidéo, j'ai présenté l'architecture globale, le pipeline de l'API de streaming Gemini Pro, ainsi que l'architecture des appels de fonctions.
gemmini => backend fastapi => frontend nextjs (réponse entièrement diffusée)
Clonez le dépôt sur votre ordinateur local :
Renommez .env.template en .env et ajoutez-y vos clés API et URL de base de données. Créez un problème ou n'hésitez pas à m'envoyer un message si vous rencontrez un problème lors de la configuration de l'application
Installez les packages Python requis :
backend -> src
. pip install -r requirements.txt
Démarrez le serveur FastAPI en exécutant :
uvicorn main:app
Testez le backend directement en effectuant la requête POST suivante dans PostMan ou tout autre logiciel de test d'API.
http://localhost:8000/travel_assistant?prompt="Share 2 places to visit in UAE"
Assurez-vous que les services frontend et backend s’exécutent simultanément pour que l’application fonctionne correctement.
app.py
. streamlit run app.py
Accédez au frontend à l'adresse : http://localhost:8501/
Allez dans le répertoire nextjs, exécutez pnpm install et pnpm dev
Extrayez les images du docker et exécutez-y
Une fois les services frontend et backend exécutés, accédez à l'application Streamlit dans votre navigateur Web et interagissez avec les fonctionnalités de l'assistant de voyage.
Créons d'abord une image Docker et exécutons le frontend à l'aide d'un conteneur exécuté à partir de cette image.
Ensuite, nous allons pousser l'image et déployer notre backend sur Google Run
docker build -t travel_ai_service .
Pour les utilisateurs de Mac M2, utilisez plutôt cette commande : docker buildx build --platform linux/amd64 -t <Image Name> .
Images : docker
docker run --env-file .env -d --name 2bd90a3c026f -p 80:80 travel_ai_assistant
docker tag travel_ai_assistant mjunaidca/travel_ai_assistant:latest
docker push mjunaidca/travel_ai_assistant:latest
Via CLI
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Ensuite, allez sur Google Cloud et cliquez sur « Modifier et appliquer une nouvelle révision »
Ajoutez vos variables d'environnement et changez le port de 8080 à 80 (c'est ce que nous avons configuré dans dockerfile).
Ou vous pouvez directement visiter Google Run et cliquer sur Créer un service. Remplissez les détails pour déployer votre image Docker
Tout d’abord, passez l’URL dans le navigateur et vous verrez le texte « en haut ici ». Ensuite, remplacez-le par Streamlit
Obtenez vos clés API Google Cloud Project Service. Téléchargez-les au format json et stockez-les dans le répertoire backend.
Nous les transmettons au moment de l'exécution après avoir créé l'image pour exécuter le conteneur localement.
Incluez-les toujours dans .gitignore et .dockerignore. ,Je les ai accidentellement exposés au Docker Hub avant ***
docker build -t travel_ai_service .
Pour les utilisateurs de Mac M2, utilisez plutôt cette commande :
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
Images : docker
docker run --env-file .env -d --name travel_ai_assistant -p 80:80 -v /Users/mjs/Documents/GitHub/genai_fastapi/travel_ai_service/backend/travel-ai-gauth.json:/app/travel-ai-gauth.json -e GOOGLE_APPLICATION_CREDENTIALS=/app/travel-ai-gauth.json mjunaidca/travel_ai_assistant:v1```
4. Test Locally and then Push it on Docker Hub
Is API Working?
http://localhost:80
Are Gemini Endpoints Working?
http://localhost/gemini_streaming_travel_ai/?query=%22hello%22
http://localhost/gemini_streaming_travel_ai/mapstate
For OpenAi it's Post request using postman
http://localhost:80/travel_assistant/?prompt="Share 2 places to visit in UAE"
docker push mjunaidca/travel_ai_assistant:v1
5. Deply your service on Google Cloud
Through Cli
gcloud run déployer ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Ensuite, allez sur Google Cloud et cliquez sur « Modifier et appliquer une nouvelle révision »
Ajoutez vos variables d'environnement et changez le port de 8080 à 80 (c'est ce que nous avons configuré dans dockerfile).
Ou vous pouvez directement visiter Google Run et cliquer sur Créer un service. Remplissez les détails pour déployer votre image Docker
Tout d’abord, passez l’URL dans le navigateur et vous verrez le texte « en haut ici ». Ensuite, remplacez-le par Streamlit
Pourquoi pas Vercel : le délai d'expiration par défaut de Vercel est de 10,01 secondes. En utilisant Edge, nous pouvons l'augmenter à 25 secondes et en plus, en utilisant le streaming, nous pouvons augmenter jusqu'à un temps infini.
Ici, le temps de réponse moyen avec l'appel de fonction est de 30 à 40 secondes, donc mon plan est de le docker et de l'utiliser également sur Google Cloud.
docker buildx build --platform linux/amd64 -t nextjs_travel_ai .
docker images
docker run --env-file .env -d --name 4f04288c45a8 -p 3000:8000 nextjs_travel_ai
verify the containor is running and no error occured
docker ps
docker tag nextjs_travel_ai mjunaidca/nextjs_travel_ai:latest
docker push mjunaidca/nextjs_travel_ai:latest
gcloud run deploy nextjs-travel-ai --image mjunaidca/nextjs_travel_ai:latest
Les contributions à ce projet sont les bienvenues. Pour contribuer :
git checkout -b feature-branch
).git commit -am 'Add some feature'
).git push origin feature-branch
).Ce projet est sous licence MIT - voir le fichier LICENSE.md pour plus de détails.
Pour toute question ou commentaire supplémentaire, veuillez contacter les responsables du projet.
Profitez d'explorer le monde avec l'application Travel Assistant !
Profitez de votre expérience d'assistant de voyage virtuel !