はじめに
Power Virtual Agents のトピックの提案機能では公開された文書の読み込みにしか対応していません。公開できない社内文書を読み込むにはどのようにすべきか、ここではその方法を紹介します。
対象者
Power Virtual Agents の初心者の方
Power Virtual Agents でトピックの提案機能を使いたい方
公開できない社内文書からトピックを作成したい方
Power Virtual Agents は以降PVAと表記。
公開できない社内文書を読み込んでトピックを作成
今回は公開できない社内文書を Azure Blob Storage にアップロードし、その URL を PVA のオンラインコンテンツとして指定することでトピックの作成を行いました(下図)。
トピックの作成手順
具体的な作成手順は以下の通りで、以降説明していきます。
- ストレージアカウントを作成する。
- ネットワークアクセスの設定で、PVAが使用するIPアドレスを追加する。
- コンテナーを作成する。(アクセスレベルはコンテナーかBLOBを選択)
- 社内文書をアップロードする。
- PVAのトピックの提案を実行する。
経緯
ChatGPT 4.0 のリリースが発表され、ほとんどの内容は ChatGPT を利用すればいいのかなと思いますが、さすがに社内固有の情報について ChatGPT を利用することはできません。そこで、PVA の利用を考えました。
実際、ChatGPT に PVA の使い道を訊いてみると、4.内部サポート として挙がってきました。
トピックの提案
PVA に トピックの提案 という機能があり、既存の社内文書をもとに問い合わせトピックを作成してくれます。
トピックの提案は、FAQ またはサポート構造を使用して、コンテンツからトピックを抽出する機能です。 構造が異なる Web ページは、予想どおりに機能しない可能性があります。 Web ページからコンテンツを抽出できない場合は、コンテンツを CSV ファイルとして提供してみてください。
引用元 https://learn.microsoft.com/ja-jp/power-virtual-agents/advanced-create-topics-from-web
トピックの提案でサポートされているコンテンツ
トピックの提案機能は現時点(2023年3月)でファイルのアップロードには対応しておらず、下図の要件を満たす必要があります。ですが、この要件は公開できない社内文書を保存しておける環境ではありません。
(そのうちアップロードにも対応してくれるのではないかと期待していますが)
ストレージアカウントの設定
今回は Azure Blob Storage に社内文書を保存する方法で進めました。Azure Blob Storage では PVA からのアクセスのみを許可して、PVA 以外のアクセスを禁止するようにできれば要件をクリアできるはず。
PVA からのアクセスのみを許可する方法、思い付くのはIPアドレスによるフィルタリングでした。
Azure Blob Storage のネットワーク設定の画面で許可するIPアドレスを追加していけば実現できるはず。
PVA が使用するIPアドレス
Microsoft の公式サイトに公開されています。
➡PVA のクォータ、制限、構成の値
日本リージョンで使用されるIPアドレスは下図の通りでしたので、これをもとに設定を進めます。
アクセスを許可するIPアドレスの追加
IPアドレスの設定は、IPアドレス か CIDR形式 である必要があるため、サイトの情報そのままでは設定できません。Excelで加工して CIDR形式 にしています。実際に追加するのは、Azure Portalからではなくコマンドで行いたいため、数式を使ってコマンド文字列を作成しています。
今回はCIDR形式で設定するため、20.43.71.224-20.43.71.255 を 20.43.71.0/24 のように置き換えています。このため、PVA の使用IPアドレス範囲を超えてアクセスが許可されています。現状この方法しか思い付かなかったためとなりますので、ご注意ください。
az storage account network-rule add --resource-group "[resourcegroup]" --account-name "[storageaccount]" --ip-address "[ipaddress]"
Azure Portal のツールバーにある Cloud Shell ボタンをクリックすると、コマンドラインのペインが表示されるので、ここで生成したコマンドを入力していく。
コマンドで追加した結果。
PVA からのみアクセスできるように設定できたので、下表の通りコンテナーを作成します。
その後作成したコンテナーに社内文書(InternalUseOnly.docx)をアップロードします。
項番 | コンテナー名 | アクセスレベル | アクセスした結果 |
---|---|---|---|
1 | public-container | コンテナー | アクセスできる |
2 | blob-container | BLOB | アクセスできる |
3 | private-container | プライベート | アクセスできない |
アクセスレベル=プライベートは外部からアクセスできないんだろうなとは予想できますが、アクセスレベル=コンテナーと BLOB は正直違いが分かっておりません。ご容赦ください…
作成したコンテナー上の社内文書にアクセスした結果
コンテナー上の社内文書にHTTPリクエストを送信したところ、上の表のアクセスした結果の通りとなりました。
PS C:\Users\******> Invoke-WebRequest -URI 'https://st4pva.blob.core.windows.net/public-container/InternalUseOnly.docx'
StatusCode : 200
StatusDescription : OK
Content : {80, 75, 3, 4…}
RawContent : HTTP/1.1 200 OK
ETag: 0x8DB267F1472320E
Server: Windows-Azure-Blob/1.0
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: ddcb99be-301e-0050-2a1b-5e81dd000000
x-ms-version: 2009-09-19
x-ms-lease-sta…
Headers : {[ETag, System.String[]], [Server, System.String[]], [x-ms-request-id, System.String[]], [x-ms-vers
ion, System.String[]]…}
RawContentLength : 24509
RelationLink : {}
PS C:\Users\******> Invoke-WebRequest -URI 'https://st4pva.blob.core.windows.net/blob-container/InternalUseOnly.docx'
StatusCode : 200
StatusDescription : OK
Content : {80, 75, 3, 4…}
RawContent : HTTP/1.1 200 OK
ETag: 0x8DB267F230ACFCC
Server: Windows-Azure-Blob/1.0
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: ee1cf8f4-d01e-0058-091a-5e9bd2000000
x-ms-version: 2009-09-19
x-ms-lease-sta…
Headers : {[ETag, System.String[]], [Server, System.String[]], [x-ms-request-id, System.String[]], [x-ms-vers
ion, System.String[]]…}
RawContentLength : 24509
RelationLink : {}
PS C:\Users\******> Invoke-WebRequest -URI 'https://st4pva.blob.core.windows.net/private-container/InternalUseOnly.docx'
Invoke-WebRequest: ResourceNotFoundThe specified resource does not exist.
RequestId:7662f44f-101e-0035-511b-5e2f99000000
Time:2023-03-24T06:38:48.1098402Z
クライアントのIPアドレスを追加しない場合、アクセスできないことも確認しています。
PS C:\Users\******> Invoke-WebRequest -URI 'https://st4pva.blob.core.windows.net/public-container/InternalUseOnly.docx'
Invoke-WebRequest: AuthorizationFailureThis request is not authorized to perform this operation.
RequestId:1e10bf5e-b01e-0095-5520-5eab38000000
Time:2023-03-24T07:15:05.1582253Z
PS C:\Users\******> Invoke-WebRequest -URI 'https://st4pva.blob.core.windows.net/blob-container/InternalUseOnly.docx'
Invoke-WebRequest: AuthorizationFailureThis request is not authorized to perform this operation.
RequestId:0de688ef-701e-0023-0e20-5ed94e000000
Time:2023-03-24T07:15:01.7957341Z
まとめ
PVAのトピックの提案機能がアップロードに対応していなかったため、公開できない社内文書からトピックを作成することはできないかと思いましたが、Azure Blob Storage を利用することで実現できました。私のようなAzure初心者でもできたので、おすすめです。
うまくいかないところや気になる点があれば、コメントお願いします。