注意:要在本地运行 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 文件。
如有任何其他问题或意见,请联系项目维护人员。
使用旅行助手应用程序享受探索世界的乐趣!
享受您的虚拟旅行助手体验!