注: Gemini API エンドポイントをローカルで実行するには、まず Google vertex ai アカウントをセットアップしますhttps://cloud.google.com/sdk/docs/initializing
この Travel Assistant アプリケーションは、完全なジェネレーティブ AI アプリケーションのスケーラブル アーキテクチャをテストするように設計されています。
私たちは、gemini pro の関数呼び出しとオープン ai dev day の機能を幅広く調査してきました。サービスは FastAPI フレームワークを使用して開発されており、フロントエンド フロンティアは NextJS 14 と純粋な Python 開発者向けの streamlit で強化されています。
AI Powered Maps は、NextJS 用の「Google Maps JavaScript API」と、streamlit 用の「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 を実行します。
docker イメージをプルしてそこで実行します
フロントエンド サービスとバックエンド サービスの両方が実行されている状態で、Web ブラウザで 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
クリを通じて
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
次に、Google Cloud に移動し、[新しいリビジョンの編集とデプロイ] をクリックします。
環境変数を追加し、ポートを 8080 から 80 に変更します (これは dockerfile で構成したものです)。
または、直接 Google Run にアクセスして、[サービスの作成] をクリックすることもできます。詳細を入力して Docker イメージをデプロイします
まずブラウザに URL を貼り付けると、「top here」というテキストが表示されます。次にstreamlitに置き換えます
Google Cloud プロジェクト サービス 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 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 rundeploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
次に、Google Cloud に移動し、[新しいリビジョンの編集とデプロイ] をクリックします。
環境変数を追加し、ポートを 8080 から 80 に変更します (これは dockerfile で構成したものです)。
または、直接 Google Run にアクセスして、[サービスの作成] をクリックすることもできます。詳細を入力して Docker イメージをデプロイします
まずブラウザに URL を貼り付けると、「top here」というテキストが表示されます。次にstreamlitに置き換えます
vercel ではない理由: Vercel のデフォルトの inocation タイムアウトは 10.01 秒です。エッジを使用すると、これを 25 秒に増やすことができ、さらにストリーミングを使用すると、無限の時間に増やすことができます。
ここでの関数呼び出しの平均応答時間は 30 ~ 40 秒であるため、これを Docker 化して 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
このプロジェクトへの貢献は大歓迎です。貢献するには:
git checkout -b feature-branch
)。git commit -am 'Add some feature'
)。git push origin feature-branch
)。このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE.md ファイルを参照してください。
その他の質問やコメントについては、プロジェクトの管理者にお問い合わせください。
トラベル アシスタント アプリケーションで世界の探索をお楽しみください。
バーチャル旅行アシスタント体験をお楽しみください!