Zenn
👌

Azure Web Apps で Chainlit を動かす

に公開

Azure Web Apps で Chainlit を動かす方法

はじめに

この記事では、Chainlit を Azure Web Apps にデプロイして公開する手順を紹介します。Chainlit は AI チャットアプリを数分で作成することができるライブラリです。Azure Web Apps はウェブアプリケーションをホストするためのスケーラブルで信頼性の高いプラットフォームを提供します。

前提条件

始める前に、以下の前提条件を確認してください

  • Azure アカウント
  • ローカルマシンにインストールされた Azure CLI
  • デプロイ準備が整った Chainlit プロジェクト

Azure Web App の設定

  1. Azure にログイン:ターミナルを開き、以下のコマンドを使用して Azure アカウントにログインします:

    az login
    
  2. リソースグループの作成:リソースを整理するためのリソースグループを作成します。

    myResourceGroup="myResourceGroup"
    az group create --name $myResourceGroup --location japaneast
    
  3. App Service プランの作成:App Service プランを作成して、ウェブアプリの価格帯を定義します。

    az appservice plan create --name myAppServicePlan --resource-group $myResourceGroup --sku B1 --is-linux
    
  4. 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 にデプロイ

  1. Chainlit プロジェクトの準備:Chainlit プロジェクトがデプロイの準備ができていることを確認します。必要な依存関係を含む requirements.txt ファイルがあることを確認してください。

  2. Git を使用してデプロイ:まだ Git リポジトリを初期化していない場合は、Chainlit プロジェクトディレクトリで Git リポジトリを初期化します。上記のサンプルプロジェクトを利用する場合は不要です。

    git init
    git add .
    git commit -m "Initial commit"
    
  3. 環境変数の設定: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"
    
  4. スタートアップ コマンドの設定:スタートアップ コマンドを設定します。

    az webapp config set --name $myChainlitApp --resource-group $myResourceGroup --startup-file "startup.sh"
    
  5. デプロイの設定: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>'
    
  6. 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 です。
脚注
  1. Azure OpenAI の詳細はこちら: Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn ↩︎

  2. 他のデプロイ方法でも問題ありません。参考: ローカル Git リポジトリからデプロイする - Azure App Service | Microsoft Learn ↩︎

Discussion

ログインするとコメントできます