注意:要在本地運行 Gemini API 端點,請先設定您的 google vertex ai 帳戶https://cloud.google.com/sdk/docs/initializing
此旅行助理應用程式旨在測試完整的生成式AI 應用程式可擴展架構。
我們廣泛探索了 Gemini Pro 函數調用,並開放了 AI 開發日功能。這些服務是使用 FastAPI 框架開發的,前端前緣由 NextJS 14 以及針對純 python 開發人員的 Streamlit 提供支援。
AI 驅動的地圖由適用於 NextJS 的「Google Maps javascript API」和適用於 Streamlit 的「Plotly with MapBox」提供支援。
在本影片中,我演練了整體架構和 Gemini Pro Streaming 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
拉取 docker 映像並在那裡運行
在前端和後端服務都運行的情況下,在 Web 瀏覽器中存取 Streamlit 應用程式並與旅行助手的功能進行互動。
讓我們先建立一個 docker 映像,並使用從該映像運行的容器來運行前端。
接下來我們將推送鏡像並在 Google Run 上部署我們的後端
docker build -t travel_ai_service .
對於 Mac M2 用戶,請改用此指令: docker buildx build --platform linux/amd64 -t <Image Name> .
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
透過命令列
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
然後前往 Google Cloud 並點擊“Edit & Deply New Revision”
新增環境變數並將連接埠從 8080 更改為 80(這是我們在 dockerfile 中配置的)。
或者您可以直接訪問 Google Run 並點擊「建立服務」。填寫詳細資訊以部署您的 docker 映像
首先在瀏覽器中輸入網址,您將看到““top here””文字。接下來用streamlit替換它
取得您的 Google Cloud Project 服務 API 金鑰。以json格式下載並儲存在後端目錄中。
我們在構建鏡像後在運行時傳遞它們以在本地運行容器。
始終將它們包含在 .gitignore 和 .dockerignore 中。 ,我之前不小心暴露了他們的docker hub ***
docker build -t travel_ai_service .
對於 Mac M2 用戶,請改用此指令:
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
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 執行部署 ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
然後前往 Google Cloud 並點擊“Edit & Deply New Revision”
新增環境變數並將連接埠從 8080 更改為 80(這是我們在 dockerfile 中配置的)。
或者您可以直接訪問 Google Run 並點擊「建立服務」。填寫詳細資訊以部署您的 docker 映像
首先在瀏覽器中輸入網址,您將看到““top here””文字。接下來用streamlit替換它
為什麼不使用 vercel:Vercel 預設逾時時間為 10.01 秒。使用邊緣,我們可以將其增加到 25 秒,並且在其之上使用流,我們可以增加到無限時間。
這裡函數呼叫的平均回應時間是 30-40 秒,所以我的計畫是 dockerize 並在谷歌雲端上部署它。
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 文件。
如有任何其他問題或意見,請聯絡專案維護人員。
使用旅行助手應用程式享受探索世界的樂趣!
享受您的虛擬旅行助理體驗!