Observação: para executar localmente os endpoints da API Gemini, primeiro configure sua conta google vertex ai https://cloud.google.com/sdk/docs/initializing
Este aplicativo Travel Assistant foi projetado para testar a arquitetura escalonável completa de aplicativos de IA generativa.
Exploramos extensivamente a chamada de função Gemini Pro e os recursos abertos do AI Dev Day. Os serviços são desenvolvidos usando a estrutura FastAPI e a fronteira Frontend é alimentada com NextJS 14, bem como streamlit para desenvolvedores python puros.
Os mapas alimentados por IA são alimentados com "Google Maps javascript API" para NextJS e "Plotly with MapBox" para streamlit.
Neste vídeo, apresento um passo a passo da arquitetura geral, do pipeline da API de streaming Gemini Pro e da arquitetura de chamada de funções.
gemmini => backend fastapi => frontend nextjs (resposta totalmente transmitida)
Clone o repositório em sua máquina local:
Renomeie .env.template para .env e adicione suas chaves de API e URLs de banco de dados lá. Crie um problema ou sinta-se à vontade para me enviar uma mensagem se tiver algum problema ao configurar o aplicativo
Instale os pacotes Python necessários:
backend -> src
. pip install -r requirements.txt
Inicie o servidor FastAPI executando:
uvicorn main:app
Teste o back-end diretamente fazendo a seguinte solicitação POST no PostMan ou em qualquer software de teste de API.
http://localhost:8000/travel_assistant?prompt="Share 2 places to visit in UAE"
Certifique-se de que os serviços de front-end e back-end estejam em execução simultaneamente para que o aplicativo funcione corretamente.
app.py
. streamlit run app.py
Acesse o frontend em: http://localhost:8501/
Vá para o diretório nextjs, execute pnpm install e o pnpm dev
Extraia as imagens do docker e execute lá
Com os serviços frontend e backend em execução, acesse o aplicativo Streamlit em seu navegador e interaja com os recursos do assistente de viagem.
Vamos primeiro criar uma imagem docker e executar o frontend usando um contêiner executado a partir desta imagem.
Em seguida, enviaremos a imagem e implementaremos nosso back-end no Google Run
docker build -t travel_ai_service .
Para usuários Mac M2, use este comando: docker buildx build --platform linux/amd64 -t <Image Name> .
imagens da janela de encaixe
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
Através do Cli
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
Em seguida, vá para o Google Cloud e clique em "Editar e implementar nova revisão"
Adicione suas variáveis de ambiente e altere a porta de 8080 para 80 (é isso que configuramos no dockerfile).
Ou você pode visitar diretamente o Google Run e clicar em Criar um serviço. Preencha os detalhes para implantar sua imagem docker
Em primeiro lugar, cole o URL no navegador e você verá o texto ""top here"". Em seguida, substitua-o por streamlit
Obtenha suas chaves de API do Google Cloud Project Service. Baixe-os em formato json e armazene no diretório backend.
Nós os passamos em tempo de execução após construir a imagem para executar o contêiner localmente.
Sempre inclua-os em .gitignore e .dockerignore. , eu acidentalmente expus o docker hub antes de ***
docker build -t travel_ai_service .
Para usuários de Mac M2, use este comando:
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
imagens da janela de encaixe
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 execute implantar ai-travel-assistant --image mjunaidca/travel_ai_assistant:mais recente
Em seguida, vá para o Google Cloud e clique em "Editar e implementar nova revisão"
Adicione suas variáveis de ambiente e altere a porta de 8080 para 80 (é isso que configuramos no dockerfile).
Ou você pode visitar diretamente o Google Run e clicar em Criar um serviço. Preencha os detalhes para implantar sua imagem docker
Em primeiro lugar, cole o URL no navegador e você verá o texto ""top here"". Em seguida, substitua-o por streamlit
Por que não vercel: o tempo limite de inoculação padrão do Vercel é de 10,01 segundos. Usando edge podemos aumentar para 25 segundos e ainda por cima usando streaming podemos aumentar para tempo infinito.
Aqui, o tempo médio de resposta com chamada de função é de 30 a 40 segundos, então meu plano é encaixar e implementar isso também no 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
Contribuições para este projeto são bem-vindas. Para contribuir:
git checkout -b feature-branch
).git commit -am 'Add some feature'
).git push origin feature-branch
).Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE.md para obter detalhes.
Para quaisquer perguntas ou comentários adicionais, entre em contato com os mantenedores do projeto.
Divirta-se explorando o mundo com o aplicativo Travel Assistant!
Aproveite sua experiência de assistente de viagem virtual!