🍅

Azure OpenAI サンプル(5. 企業内向けChatと社内文書検索) をデプロイしてみる

2023/10/27に公開

Azure OpenAI サンプル(5. 企業内向けChatと社内文書検索) をデプロイしてみる

Azure OpenAI についてお客様と会話していると、以下ニュースのような「なんかできそうな感じはする、けど、実際どういう用途に使えば思いつかない(使えるのかわからない)」という話をお伺いすることもあります。

https://www.msn.com/ja-jp/news/opinion/生成ai-使ったことない-844-の調査結果-chatgpt-仕事で継続利用どころか/ar-AA1iq0bO

そんなとき、技術の細かな話はいったん置いておいて、以下のようなサンプルアプリケーションを実際に触ってみて頂くと、どういうことができるのか、実感としてつかめて良いのではないかと思います。

実は、Azure OpenAIを活用したサンプルアプリケーションが、以下 GitHub にて公開されています。

https://github.com/Azure-Samples/jp-azureopenai-samples/tree/main

中でも「5. 企業内向けChatと社内文書検索」として公開されているサンプルが、私個人としては、実践的で各企業でそのまま使えそうなサンプルなのではないかと思っています。
こちらを試すためのサンプルアプリケーションのデプロイ方法も、同ページ中で公開されていますが、私自身の備忘も兼ね、Step by Step で、デプロイしてみた手順を参考に残しておきます。

ちなみに、胡田さんのこちら のシリーズが、デプロイ手順等を動画で確認でき、非常に便利です!

デプロイ手順

Step 0. 前提

前提として、Azure Open AI サービスが有効になっているサブスクリプションが必要です。
申請は こちら

Step 1.ローカル開発環境 の準備

今回は、ローカル開発環境として、Azure 上にまっさらな Windows 11 Pro 22H2 (22621.2428) を用意し、必要な開発環境を用意していきます。

必要な環境は こちら 記載の通りです。

ただし、記載順に上からインストールをしていくと、 Node.js のインストール中に Python 関連のエラーが出てしまいます。
その結果、私の場合では Python のPATH等が通っていない状態にもなってしまいましたので、今回ご案内の手順では、Node.js を先にインストールして、後から Python 3+ をインストールする順番としています。Python 3+ を Node.js の後からインストールする場合であれば、エラー無く進められるかと思います。

1-1. Azure Developer CLI

Azure Developer CLI をインストールします。
PowerShell を起動し、以下のコマンドを実行します。

azd のインストール
powershell -ex AllSigned -c "Invoke-RestMethod 'https://aka.ms/install-azd.ps1' | Invoke-Expression"

1-2. Azure CLI

Azure CLI をインストールします。
PowerShell を起動し、以下のコマンドを実行します。

Azure CLI のインストール
$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; Remove-Item .\AzureCLI.msi

32 ビットの Azure CLI が、C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2 にインストールされます。

1-3. Node.js

Node.js をインストールします。
公式サイトで、LTS - Windows Installer の部分をクリックしてインストーラをダウンロードします。

ダウンロード完了後は、インストーラーを起動してインストールを行います。
基本的には既定値のまま、次へ次へと進めていけば問題ありません。

参考画面キャプチャ:Node.js のインストール



npmも既定で含まれているはずですので、特に変更せずに「Next」をクリックしていきます。

「Automatically ...」 のチェックは、Chocolatey (Windows 用のパッケージ管理ソフトウェア) のインストールを行うかどうかの確認です。チェックはせず「Next」をクリックしていきます。




インストール完了後、コマンドプロンプトを開き node -vnpm -v でバージョンを確認できます。

実行結果
C:\>node -v
v20.9.0
実行結果
C:\>npm -v
10.1.0

1-4. Python 3+ のインストール

Python 3 をインストールします。
Download Python 3.xx.xx (2023/10/26時点では 3.12.0 が最新でした) をクリックしてインストーラをダウンロードします。

ダウンロード完了後は、インストーラーを起動してインストールを行います。
Add Python.exe to PATH のチェックを忘れずに入れてから、 Install Now を選択していきます。


インストール完了後は、Close をクリックして終了します。

インストール完了後、PowerShell を開き python --versionnpm --version でバージョンを確認できます。

実行結果
PS C:\> python --version
Python 3.12.0
実行結果
PS C:\> npm --version
10.1.0

1-5.Git のインストール

Git をインストールします。
Click here to download を選ぶか、Standalone Installer - 64bitを選ぶと、インストーラをダウンロードできます。
(2023/10/26時点では Git-2.42.0.2-64-bit が最新でした)


インストーラーを起動後は、全て既定値のままインストールを進めていきます。

参考画面キャプチャ:Git のインストール

















インストール完了後、PowerShell を開き git --version でバージョンを確認できます。

実行結果
PS C:\>  git --version
git version 2.42.0.windows.2

1-6. Powershell 7+ (pwsh) のインストール

Powershell 7 をインストールします。
(2023/10/26時点では PowerShell-7.3.8-win-x64.msi が最新でした)

インストーラーを起動後は、全て既定値のままインストールを進めていきます。

参考画面キャプチャ:Powershell 7 のインストール







インストール完了後は、PowerShell 7 が利用可能になるはずです。(PowerShell 5.1 とは別にインストールされます)

Step2.インストール

2-1. Azure OpenAI サンプルのリポジトリをクローン

PowerShell 7 を起動し、Azure OpenAI サンプルのリポジトリをクローンします。
「jp-azureopenai-samples」というフォルダが作成され、その中にサンプルアプリのファイル一式がダウンロードされます。

リポジトリをクローン
git clone https://github.com/Azure-Samples/jp-azureopenai-samples.git


サンプル画面キャプチャでは、 PowerShell 7 のカレントディレクトリ C:\git clone を行いました。
そのため、各種ファイル一式は C:\jp-azureopenai-samples としてダウンロードされています。
これからデプロイを行うのは C:\jp-azureopenai-samples\5.internal-document-search です。

カレントディレクトリを移動しておきます。

カレントディレクトリを移動
PS C:\> cd .\jp-azureopenai-samples\5.internal-document-search\

2-2. Azure Developer CLI の Azure 認証

azd auth login を実行して Azure の認証を行います。

Azure Developer CLI の Azure 認証
azd auth login

ブラウザが起動し、認証画面が表示されます。
Azure OpenAI の利用が許可されているサブスクリプションが紐づく Azure AD テナントのアカウントでログインします。
( 複数テナントを利用している場合は、azd auth login --tenant-id <テナントID> で、利用するテナントを指定してログインすることも可能です。 → azd auth login オプション

ログインに成功したら、ブラウザを閉じます。

2-3. Azure Developer 新しいアプリケーション を初期化

デプロイにあたり、アプリケーションを初期化するため、azd init を実行します。
environment name は、任意の名前を入力します。 今回は sample-aoai としました。
なお、Azure上に作成されるリソースグループ名は rg-<environment name> となりますので、今回の例では rg-sample-aoai となります。

新しいアプリケーションを初期化
azd init
実行結果
PS C:\jp-azureopenai-samples\5.internal-document-search>  azd init
Initializing an app to run on Azure (azd init)

? Enter a new environment name: [? for help] sample-aoai

? Enter a new environment name: sample-aoai

SUCCESS: New project initialized!
You can view the template code in your directory: C:\jp-azureopenai-samples\5.internal-document-search
Learn more about running 3rd party code on our DevHub: https://aka.ms/azd-third-party-code-notice

Step 3. Azure OpenAI サンプルのデプロイ

Step 3-1. AZ CLI 認証 と サブスクリプションの選択、オブジェクトID の取得

az login を実行して、Azure CLI の認証を行います。
2-2 同様ブラウザが立ち上がりますので、認証を行います。
なお、テナントID を指定してログインする場合は、az login --tenant-id <テナントID> で、利用するテナントを指定してログインすることも可能です。 → az login

AZ CLI 認証
az login


続けて、Azure OpenAI をデプロイするサブスクリプションを選択します。
上記画像 オレンジ で塗りつぶした箇所に、サブスクリプション の ID が表示されているはずなので、そちらを使います。

AZ CLI サブスクリプションの選択
az account set -s YOUR_SUBSCRIPTION_ID

az ad user show --id your_account@your_tenant -o tsv --query id を実行して、操作をするユーザの AAD アカウントのオブジェクトID を取得します。
取得した結果を

オブジェクトID の取得
az ad user show --id your_account@your_tenant -o tsv --query id

ただ、これは正直 Azure Portal から Entra ID で見た方が早いです…。
AzurePortal を開き、 Microsoft Entra ID -> ユーザー -> と進み、ユーザーを検索します。
オレンジで塗りつぶした箇所にオブジェクトIDが表示されています。

Step 3-2. $Env:AZURE_PRINCIPAL_ID="Your Object ID" の設定

3-1. の最後に確認をしたオブジェクトIDを、環境変数 "AZURE_PRINCIPAL_ID" に設定します。

環境変数 "AZURE_PRINCIPAL_ID" を設定する
$Env:AZURE_PRINCIPAL_ID="Your Object ID"

Step 3-3. Azure OpenAI サンプルのデプロイを実行

いよいよデプロイです!
azd up を実行してデプロイ先のサブスクリプションを選択します。

Azure Developer CLI でデプロイを実行
azd up 

デプロイするサブスクリプションを、キーボードの上下キーで選択し、Enter で決定します。

同様に、デプロイするリージョンを選択します。今回は Japan East (japaneast) を選んでおきました。

デプロイが開始されます。
途中、設定する Password が聞かれます。任意のパスワードを入力します(特に今回のお試しでは使いません)。

デプロイ中に表示される URL を選択するか、Azure Portal から サブスクリプション -> デプロイ へと進むと、デプロイ中の状況が Azure Portal でも確認できます。


Azure 上へのリソースのデプロイが完了した後に、\jp-azureopenai-samples\5.internal-document-search\data 内にある社内文書を想定した pdf ファイル (サンプルでは厚生労働省のモデル就業規則とのこと) が Azure Blob Storage へアップロードされます。

アップロードが完了してしばらくすると、Azure OpenAI サンプルのデプロイが完了します。
表示された URL にアクセスすることで、サンプルアプリケーションを利用することができます。

なお、デプロイ直後にアクセスすると、 Hey, Python developers! が表示されることがありますが、1-2分まって更新すると、正常に表示されるようになりました。

デプロイ完了しました!

azd up を実行してからデプロイ完了までにかかった時間は、概ね 15 分程でした。

試してみる

デプロイできたサンプルを、軽く試してみます。
企業内向けChat では、汎用的な質問に対して、汎用的な回答を返すことができます。
私個人としては、例えば、エラーメッセージやログ等をそのまま張り付けてみて調査の手がかりとなるような情報が無いかを探したりするときに重宝しています。社外のAIに質問するにしては、少しセキュリティ的に気になる質問であっても、社内で閉じたのAIなのであれば、気軽に質問できるのではないかと思います。

また、社内文書検索 の方も試してみました。
こちらは汎用的な回答ではなく、質問内容に関連する社内ドキュメントからの回答を行ってくれます。
また、引用も示されており、該当社内文書を参照することもでき、非常に実用性が高いと思います。

最後に、簡単に作成されたリソースも見ておきます。
作成されたリソースグループ内には、以下のようなリソースが作成されています。
GitHub上で説明されているリソース群ですね。

AppService を開いて、参照 や 既定のドメインをクリックすれば、いつでもサンプルアプリを利用することができます。

デプロイしたサンプルを削除

検証した後の削除方法も記載しておきます。
一番簡単なのは、 azd down で削除が可能なので、これで消すのが簡単にきれいになります。

サンプルを削除する
azd down

手動で Azure Portal からリソースグループを削除した場合などは、Azure OpenAI のリソースが論理削除扱いとなります。
そのため、論理削除されたものを別途、追加で消す手順が必要です。 Azure Portal -> Open AI と進み、削除されたリソースの管理 から削除できます。
なお azd down であれば、リソース削除の後に追加削除も一緒に実施してくれます。

参考URL

https://youtu.be/pPdFS4NXjUE

Microsoft (有志)

Discussion