Azure Web Apps で Chainlit を動かす
Azure Web Apps で Chainlit を動かす方法
はじめに
この記事では、Chainlit を Azure Web Apps にデプロイして公開する手順を紹介します。Chainlit は AI チャットアプリを数分で作成することができるライブラリです。Azure Web Apps はウェブアプリケーションをホストするためのスケーラブルで信頼性の高いプラットフォームを提供します。
前提条件
始める前に、以下の前提条件を確認してください
- Azure アカウント
- ローカルマシンにインストールされた Azure CLI
- デプロイ準備が整った Chainlit プロジェクト
- サンプルプロジェクトはこちら: https://github.com/yukit7s/chainlit-test
git clone https://github.com/yukit7s/chainlit-test.git
- サンプルプロジェクトはこちら: https://github.com/yukit7s/chainlit-test
Azure Web App の設定
-
Azure にログイン:ターミナルを開き、以下のコマンドを使用して Azure アカウントにログインします:
az login
-
リソースグループの作成:リソースを整理するためのリソースグループを作成します。
myResourceGroup="myResourceGroup" az group create --name $myResourceGroup --location japaneast
-
App Service プランの作成:App Service プランを作成して、ウェブアプリの価格帯を定義します。
az appservice plan create --name myAppServicePlan --resource-group $myResourceGroup --sku B1 --is-linux
-
Web App の作成:App Service プラン内にウェブアプリを作成します。
myChainlitApp="myChainlitApp-$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 12 | head -n 1)" az webapp create --resource-group $myResourceGroup --plan myAppServicePlan --name $myChainlitApp --runtime "PYTHON|3.12"
Chainlit を Azure Web Apps にデプロイ
-
Chainlit プロジェクトの準備:Chainlit プロジェクトがデプロイの準備ができていることを確認します。必要な依存関係を含む
requirements.txt
ファイルがあることを確認してください。 -
Git を使用してデプロイ:まだ Git リポジトリを初期化していない場合は、Chainlit プロジェクトディレクトリで Git リポジトリを初期化します。上記のサンプルプロジェクトを利用する場合は不要です。
git init git add . git commit -m "Initial commit"
-
環境変数の設定:Azure Web Apps にデプロイする前に、Chainlit アプリケーションの環境変数を設定します。以下のコマンドを使用して、Azure Web Apps に環境変数を設定します。
az webapp config appsettings set --name $myChainlitApp --resource-group $myResourceGroup --settings SCM_DO_BUILD_DURING_DEPLOYMENT=1 WEBSITES_PORT=8000
サンプルプロジェクトを利用する場合、以下の環境変数を追加で設定します。事前に Azure OpenAI で gpt-4o のモデルを作成し、エンドポイントと API キーを取得してください。[1]
az webapp config appsettings set --name $myChainlitApp --resource-group $myResourceGroup --settings AZURE_OPENAI_ENDPOINT="{YOUR-ENDPOINT}" az webapp config appsettings set --name $myChainlitApp --resource-group $myResourceGroup --settings AZURE_OPENAI_API_KEY="{YOUR-API-KEY}" az webapp config appsettings set --name $myChainlitApp --resource-group $myResourceGroup --settings AZURE_OPENAI_MODEL_ID="gpt-4o" az webapp config appsettings set --name $myChainlitApp --resource-group $myResourceGroup --settings AZURE_OPENAI_API_VERSION="2024-07-01-preview"
-
スタートアップ コマンドの設定:スタートアップ コマンドを設定します。
az webapp config set --name $myChainlitApp --resource-group $myResourceGroup --startup-file "startup.sh"
-
デプロイの設定:Azure App Service へのローカル Git デプロイ[2]を設定します。
az webapp deployment source config-local-git --name $myChainlitApp --resource-group $myResourceGroup
このコマンドは、Git URL を提供します。この URL を Git リポジトリのリモートとして追加します。ただし、
https://
~@
の間が正しい ローカル Git ユーザー名 になっていることを確認してください。ローカル Git ユーザー名は Azure Portal から確認できます。(対象の Web App > デプロイ > デプロイ センター > ローカル Git または FTPS の資格情報 > ローカル Git ユーザー名)
また、GIT_URL は シングルクォートで囲む必要があります。ローカル Git ユーザー名の$
をエスケープするためです。git remote add azure '<GIT_URL>'
-
Azure へのプッシュ:コードを Azure リモートにプッシュして、Chainlit プロジェクトをデプロイします。
git push azure main:master # Username: <ローカル Git ユーザー名> # Password: <パスワード> Azure Portal から確認
デプロイのテスト
デプロイが完了したら、ウェブアプリの URL に移動して Chainlit アプリケーションをテストできます。ウェブアプリの URL は Azure Portal の「概要」セクションで確認できます。
おわりに
この記事では、Chainlit を Azure Web Apps にデプロイして実行する方法を紹介しました。これらの手順に従うことで、Azure Web Apps に Chainlit アプリケーションをホストできます。
実際に私がハマったポイントは、以下の2点でした。皆さんの参考になれば幸いです。
- 環境変数の設定
- SCM_DO_BUILD_DURING_DEPLOYMENT=1
- WEBSITES_PORT=8000
- スタートアップ コマンドの設定
- 中身は
python -m chainlit run app.py --host 0.0.0.0 --port 8000
です。
- 中身は
-
Azure OpenAI の詳細はこちら: Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn ↩︎
-
他のデプロイ方法でも問題ありません。参考: ローカル Git リポジトリからデプロイする - Azure App Service | Microsoft Learn ↩︎
Discussion