참고: Gemini API 엔드포인트를 로컬에서 실행하려면 먼저 google vertex ai 계정 https://cloud.google.com/sdk/docs/initializing
을 설정하세요. 이 Travel Assistant 애플리케이션은 전체 Generative AI 애플리케이션 확장 가능한 아키텍처를 테스트하도록 설계되었습니다.
우리는 gemini pro 함수 호출과 공개 AI 개발일 기능을 광범위하게 탐색했습니다. 서비스는 FastAPI 프레임워크를 사용하여 개발되었으며 프런트엔드 프론티어는 NextJS 14와 순수 Python 개발자를 위한 스트림라이트로 구동됩니다.
AI 기반 지도는 NextJS용 "Google Maps javascript API"와 스트림라이트용 "Plotly with MapBox"로 구동됩니다.
이 비디오에서는 전반적인 아키텍처와 Gemini Pro 스트리밍 API 파이프라인, 함수 호출 아키텍처를 살펴보았습니다.
gemmini => fastapi 백엔드 => nextjs 프론트엔드(완전히 스트리밍된 응답)
저장소를 로컬 머신에 복제합니다.
.env.template의 이름을 .env로 바꾸고 여기에 API 키와 데이터베이스 URL을 추가하세요. 애플리케이션을 설정하는 동안 문제가 발생하면 문제를 생성하거나 저에게 메시지를 보내주세요.
필수 Python 패키지를 설치합니다.
backend -> src
디렉터리로 이동합니다. pip install -r requirements.txt
다음을 실행하여 FastAPI 서버를 시작합니다.
uvicorn main:app
PostMan 또는 API 테스트 소프트웨어에서 다음 POST 요청을 수행하여 백엔드를 직접 테스트합니다.
http://localhost:8000/travel_assistant?prompt="Share 2 places to visit in UAE"
애플리케이션이 제대로 작동하려면 프런트엔드 서비스와 백엔드 서비스가 동시에 실행되고 있는지 확인하세요.
app.py
포함된 streamlit 디렉터리로 이동합니다. streamlit run app.py
http://localhost:8501/
에서 프런트엔드에 액세스합니다.
nextjs 디렉토리로 이동하여 pnpm install 및 pnpm dev를 실행하세요.
도커 이미지를 가져와서 실행하세요.
프런트엔드 및 백엔드 서비스가 모두 실행 중인 상태에서 웹 브라우저에서 Streamlit 애플리케이션에 액세스하고 여행 도우미 기능과 상호 작용합니다.
먼저 Docker 이미지를 생성하고 이 이미지에서 실행되는 컨테이너를 사용하여 프런트엔드를 실행해 보겠습니다.
다음으로 이미지를 푸시하고 Google Run에 백엔드를 배포하겠습니다.
docker build -t travel_ai_service .
Mac M2 사용자의 경우 docker buildx build --platform linux/amd64 -t <Image Name> .
도커 이미지
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
CLI를 통해
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
그런 다음 Google Cloud로 이동하여 '새 버전 수정 및 배포'를 클릭하세요.
환경 변수를 추가하고 포트를 8080에서 80으로 변경합니다(dockerfile에서 구성한 것입니다).
또는 Google Run을 직접 방문하여 서비스 만들기를 클릭할 수도 있습니다. Docker 이미지를 배포하려면 세부정보를 입력하세요.
먼저 브라우저에서 URL을 지나면 ""top here"" 텍스트가 표시됩니다. 다음으로 스트림라이트로 교체하세요
Google Cloud 프로젝트 서비스 API 키를 받으세요. json 형식으로 다운로드하여 백엔드 디렉터리에 저장합니다.
컨테이너를 로컬로 실행하기 위해 이미지를 빌드한 후 런타임에 이를 전달합니다.
항상 .gitignore 및 .dockerignore에 포함하세요. ,이전에 실수로 도커 허브를 노출시켰습니다 ***
docker build -t travel_ai_service .
Mac M2 사용자의 경우 대신 이 명령을 사용하십시오.
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
도커 이미지
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"
도커 푸시 mjunaidca/travel_ai_assistant:v1
5. Deply your service on Google Cloud
Through Cli
gcloud run install ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
그런 다음 Google Cloud로 이동하여 '새 버전 수정 및 배포'를 클릭하세요.
환경 변수를 추가하고 포트를 8080에서 80으로 변경합니다(dockerfile에서 구성한 것입니다).
또는 Google Run을 직접 방문하여 서비스 만들기를 클릭할 수도 있습니다. Docker 이미지를 배포하려면 세부정보를 입력하세요.
먼저 브라우저에서 URL을 지나면 ""top here"" 텍스트가 표시됩니다. 다음으로 스트림라이트로 교체하세요
vercel이 안되는 이유: Vercel의 기본 inocation 제한 시간은 10.01초입니다. 엣지를 사용하면 25초까지 늘릴 수 있고 스트리밍을 사용하면 무한 시간까지 늘릴 수 있습니다.
여기서 함수 호출의 평균 응답 시간은 30~40초이므로 내 계획은 이를 Google 클라우드에도 고정화하고 배포하는 것입니다.
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
이 프로젝트에 대한 기여를 환영합니다. 기여하려면:
git checkout -b feature-branch
).git commit -am 'Add some feature'
).git push origin feature-branch
).이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE.md 파일을 참조하세요.
추가 질문이나 의견이 있으면 프로젝트 관리자에게 문의하세요.
여행 도우미 애플리케이션으로 세계를 탐험해 보세요!
가상 여행 도우미 경험을 즐겨보세요!