Hinweis: Um Gemini API Endpoints lokal auszuführen, richten Sie zunächst Ihr Google Vertex AI-Konto ein https://cloud.google.com/sdk/docs/initializing
Diese Travel Assistant-Anwendung dient zum Testen der vollständigen skalierbaren Architektur generativer KI-Anwendungen.
Wir haben uns ausführlich mit dem Funktionsaufruf von Gemini Pro und den Funktionen des Open AI Dev Day befasst. Die Dienste werden mit dem FastAPI-Framework entwickelt und die Frontend-Grenze wird mit NextJS 14 betrieben und ist für reine Python-Entwickler optimiert.
Die KI-gestützten Karten werden mit „Google Maps Javascript API“ für NextJS und „Plotly with MapBox“ für Streamlit betrieben.
In diesem Video habe ich einen Überblick über die Gesamtarchitektur und die Gemini Pro-Streaming-API-Pipeline sowie die Architektur für Funktionsaufrufe gegeben.
gemmini => fastapi backend => nextjs frontend (vollständig gestreamte Antwort)
Klonen Sie das Repository auf Ihren lokalen Computer:
Benennen Sie .env.template in .env um und fügen Sie dort Ihre API-Schlüssel und Datenbank-URLs hinzu. Erstellen Sie ein Problem oder schreiben Sie mir eine Nachricht, wenn beim Einrichten der Anwendung ein Problem auftritt
Installieren Sie die erforderlichen Python-Pakete:
backend -> src
. pip install -r requirements.txt
Starten Sie den FastAPI-Server, indem Sie Folgendes ausführen:
uvicorn main:app
Testen Sie das Backend direkt, indem Sie die folgende POST-Anfrage in PostMan oder einer anderen API-Testsoftware stellen.
http://localhost:8000/travel_assistant?prompt="Share 2 places to visit in UAE"
Stellen Sie sicher, dass sowohl die Frontend- als auch die Backend-Dienste gleichzeitig ausgeführt werden, damit die Anwendung ordnungsgemäß funktioniert.
app.py
enthält. streamlit run app.py
Greifen Sie auf das Frontend zu: http://localhost:8501/
Gehen Sie zum nextjs-Verzeichnis, führen Sie pnpm install und pnpm dev aus
Rufen Sie die Docker-Images ab und führen Sie sie dort aus
Während sowohl die Frontend- als auch die Backend-Dienste ausgeführt werden, greifen Sie in Ihrem Webbrowser auf die Streamlit-Anwendung zu und interagieren Sie mit den Funktionen des Reiseassistenten.
Lassen Sie uns zunächst ein Docker-Image erstellen und das Frontend mithilfe eines Containers ausführen, der von diesem Image aus ausgeführt wird.
Als nächstes werden wir das Bild pushen und unser Backend auf Google Run bereitstellen
docker build -t travel_ai_service .
Für Mac M2-Benutzer verwenden Sie stattdessen diesen Befehl: docker buildx build --platform linux/amd64 -t <Image Name> .
Docker-Bilder
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
Durch Cli
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Gehen Sie dann zu Google Cloud und klicken Sie auf „Neue Revision bearbeiten und bereitstellen“.
Fügen Sie Ihre Umgebungsvariablen hinzu und ändern Sie den Port von 8080 auf 80 (das haben wir in der Docker-Datei konfiguriert).
Oder Sie besuchen direkt Google Run und klicken auf „Dienst erstellen“. Geben Sie die Details ein, um Ihr Docker-Image bereitzustellen
Geben Sie zunächst die URL im Browser ein und Sie sehen den Text „hier oben“. Als nächstes ersetzen Sie es durch Streamlit
Holen Sie sich Ihre Google Cloud Project Service-API-Schlüssel. Laden Sie sie im JSON-Format herunter und speichern Sie sie im Backend-Verzeichnis.
Wir übergeben sie zur Laufzeit, nachdem wir ein Image erstellt haben, um den Container lokal auszuführen.
Fügen Sie sie immer in .gitignore und .dockerignore ein. ,Ich habe den Docker-Hub versehentlich entlarvt, bevor ***
docker build -t travel_ai_service .
Für Mac M2-Benutzer verwenden Sie stattdessen diesen Befehl:
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
Docker-Bilder
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 runploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Gehen Sie dann zu Google Cloud und klicken Sie auf „Neue Revision bearbeiten und bereitstellen“.
Fügen Sie Ihre Umgebungsvariablen hinzu und ändern Sie den Port von 8080 auf 80 (das haben wir in der Docker-Datei konfiguriert).
Oder Sie besuchen direkt Google Run und klicken auf „Dienst erstellen“. Geben Sie die Details ein, um Ihr Docker-Image bereitzustellen
Geben Sie zunächst die URL im Browser ein und Sie sehen den Text „hier oben“. Als nächstes ersetzen Sie es durch Streamlit
Warum nicht Vercel: Das standardmäßige Inocation-Timeout von Vercel beträgt 10,01 Sekunden. Mit Edge können wir die Zeit auf 25 Sekunden erhöhen und darüber hinaus mit Streaming auf eine unendliche Zeit erhöhen.
Hier beträgt die durchschnittliche Reaktionszeit bei Funktionsaufrufen 30–40 Sekunden, daher ist es mein Plan, dies auch in der Google Cloud zu dockerisieren und bereitzustellen.
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
Beiträge zu diesem Projekt sind willkommen. Mitwirken:
git checkout -b feature-branch
).git commit -am 'Add some feature'
).git push origin feature-branch
).Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der Datei LICENSE.md.
Bei weiteren Fragen oder Kommentaren wenden Sie sich bitte an die Projektbetreuer.
Viel Spaß beim Erkunden der Welt mit der Travel Assistant-Anwendung!
Genießen Sie Ihr virtuelles Reiseassistenten-Erlebnis!