Nota: Para ejecutar localmente los puntos finales de API de Gemini, primero configure su cuenta de Google Vertex AI https://cloud.google.com/sdk/docs/initializing
Esta aplicación Travel Assistant está diseñada para probar la arquitectura escalable completa de aplicaciones de IA generativa.
Hemos explorado ampliamente las llamadas a funciones de Gemini Pro y las funciones del día de desarrollo de Open AI. Los servicios se desarrollan utilizando el marco FastAPI y la frontera frontend funciona con NextJS 14 y está optimizada para desarrolladores de Python puro.
Los mapas impulsados por IA funcionan con la "API javascript de Google Maps" para NextJS y "Plotly with MapBox" para Streamlit.
En este video, describo la arquitectura general y la canalización de la API de transmisión de Gemini Pro, y la arquitectura de llamada de funciones.
gemmini => fastapi backend => nextjs frontend (respuesta completamente transmitida)
Clona el repositorio en tu máquina local:
Cambie el nombre de .env.template a .env y agregue allí sus claves API y las URL de la base de datos. Cree un problema o no dude en enviarme un mensaje si tiene algún problema al configurar la aplicación.
Instale los paquetes de Python necesarios:
backend -> src
. pip install -r requirements.txt
Inicie el servidor FastAPI ejecutando:
uvicorn main:app
Pruebe el backend directamente realizando la siguiente solicitud POST en PostMan o cualquier software de prueba API.
http://localhost:8000/travel_assistant?prompt="Share 2 places to visit in UAE"
Asegúrese de que los servicios frontend y backend se estén ejecutando simultáneamente para que la aplicación funcione correctamente.
app.py
streamlit run app.py
Acceda al frontend en: http://localhost:8501/
Vaya al directorio nextjs, ejecute pnpm install y pnpm dev
Extraiga las imágenes de la ventana acoplable y ejecútelas allí.
Con los servicios frontend y backend en ejecución, acceda a la aplicación Streamlit en su navegador web e interactúe con las funciones del asistente de viaje.
Primero creemos una imagen de la ventana acoplable y ejecutemos la interfaz usando un contenedor que se ejecuta desde esta imagen.
A continuación, enviaremos la imagen y desplegaremos nuestro backend en Google Run.
docker build -t travel_ai_service .
Para los usuarios de Mac M2, utilice este comando: docker buildx build --platform linux/amd64 -t <Image Name> .
Imágenes de 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
A través de CLI
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Luego vaya a Google Cloud y haga clic en "Editar e implementar nueva revisión".
Agregue sus variables de entorno y cambie el puerto de 8080 a 80 (esto es lo que configuramos en dockerfile).
O puede visitar directamente Google Run y hacer clic en Crear un servicio. Complete los detalles para implementar su imagen acoplable
En primer lugar, pase la URL en el navegador y verá el texto "arriba aquí". Luego reemplácelo con streamlit
Obtenga sus claves API del servicio Google Cloud Project. Descárgalos en formato json y guárdalos en el directorio backend.
Los pasamos en tiempo de ejecución después de crear la imagen para ejecutar el contenedor localmente.
Inclúyalos siempre en .gitignore y .dockerignore. Accidentalmente los expuse a Docker Hub antes de ***
docker build -t travel_ai_service .
Para los usuarios de Mac M2, utilice este comando en su lugar:
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
Imágenes de 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 ejecutar implementar ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Luego vaya a Google Cloud y haga clic en "Editar e implementar nueva revisión".
Agregue sus variables de entorno y cambie el puerto de 8080 a 80 (esto es lo que configuramos en dockerfile).
O puede visitar directamente Google Run y hacer clic en Crear un servicio. Complete los detalles para implementar su imagen acoplable
En primer lugar, pase la URL en el navegador y verá el texto "arriba aquí". Luego reemplácelo con streamlit
¿Por qué no vercel? El tiempo de espera de inocación predeterminado de Vercel es de 10,01 segundos. Usando Edge podemos aumentarlo a 25 segundos y además usando streaming podemos aumentarlo a un tiempo infinito.
Aquí el tiempo de respuesta promedio con llamadas a funciones es de 30 a 40 segundos, por lo que mi plan es acoplar e implementar esto también en 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
Las contribuciones a este proyecto son bienvenidas. Para contribuir:
git checkout -b feature-branch
).git commit -am 'Add some feature'
).git push origin feature-branch
).Este proyecto tiene la licencia MIT; consulte el archivo LICENSE.md para obtener más detalles.
Para cualquier pregunta o comentario adicional, comuníquese con los mantenedores del proyecto.
¡Disfruta explorando el mundo con la aplicación Travel Assistant!
¡Disfruta de tu experiencia de asistente de viaje virtual!