8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Virtual Agentsで社内文書を読み込んでトピックを作成する

Last updated at Posted at 2023-03-24

はじめに

Power Virtual Agents のトピックの提案機能では公開された文書の読み込みにしか対応していません。公開できない社内文書を読み込むにはどのようにすべきか、ここではその方法を紹介します。

対象者

Power Virtual Agents の初心者の方
Power Virtual Agents でトピックの提案機能を使いたい方
公開できない社内文書からトピックを作成したい方

Power Virtual Agents は以降PVAと表記。

公開できない社内文書を読み込んでトピックを作成

今回は公開できない社内文書を Azure Blob Storage にアップロードし、その URL を PVA のオンラインコンテンツとして指定することでトピックの作成を行いました(下図)。
14社内文書取込結果.png

トピックの作成手順

具体的な作成手順は以下の通りで、以降説明していきます。

  1. ストレージアカウントを作成する。
  2. ネットワークアクセスの設定で、PVAが使用するIPアドレスを追加する。
  3. コンテナーを作成する。(アクセスレベルはコンテナーかBLOBを選択)
  4. 社内文書をアップロードする。
  5. PVAのトピックの提案を実行する。

経緯

ChatGPT 4.0 のリリースが発表され、ほとんどの内容は ChatGPT を利用すればいいのかなと思いますが、さすがに社内固有の情報について ChatGPT を利用することはできません。そこで、PVA の利用を考えました。

01PVA利用シーン.png

実際、ChatGPT に PVA の使い道を訊いてみると、4.内部サポート として挙がってきました。

02PVA使い道.png

トピックの提案

PVA に トピックの提案 という機能があり、既存の社内文書をもとに問い合わせトピックを作成してくれます。

トピックの提案は、FAQ またはサポート構造を使用して、コンテンツからトピックを抽出する機能です。 構造が異なる Web ページは、予想どおりに機能しない可能性があります。 Web ページからコンテンツを抽出できない場合は、コンテンツを CSV ファイルとして提供してみてください。
引用元 https://learn.microsoft.com/ja-jp/power-virtual-agents/advanced-create-topics-from-web

03トピックの提案.png

トピックの提案でサポートされているコンテンツ

トピックの提案機能は現時点(2023年3月)でファイルのアップロードには対応しておらず、下図の要件を満たす必要があります。ですが、この要件は公開できない社内文書を保存しておける環境ではありません。
(そのうちアップロードにも対応してくれるのではないかと期待していますが)

04サポートされているコンテンツ.png

ストレージアカウントの設定

今回は Azure Blob Storage に社内文書を保存する方法で進めました。Azure Blob Storage では PVA からのアクセスのみを許可して、PVA 以外のアクセスを禁止するようにできれば要件をクリアできるはず。

05社内文書への不正アクセス.png

PVA からのアクセスのみを許可する方法、思い付くのはIPアドレスによるフィルタリングでした。
Azure Blob Storage のネットワーク設定の画面で許可するIPアドレスを追加していけば実現できるはず。

05AzureBlobStorageの設定.png

PVA が使用するIPアドレス

Microsoft の公式サイトに公開されています。
PVA のクォータ、制限、構成の値
日本リージョンで使用されるIPアドレスは下図の通りでしたので、これをもとに設定を進めます。

06日本リージョンでのPVAのIPアドレス.png

アクセスを許可するIPアドレスの追加

IPアドレスの設定は、IPアドレスCIDR形式 である必要があるため、サイトの情報そのままでは設定できません。Excelで加工して CIDR形式 にしています。実際に追加するのは、Azure Portalからではなくコマンドで行いたいため、数式を使ってコマンド文字列を作成しています。

今回はCIDR形式で設定するため、20.43.71.224-20.43.71.255 を 20.43.71.0/24 のように置き換えています。このため、PVA の使用IPアドレス範囲を超えてアクセスが許可されています。現状この方法しか思い付かなかったためとなりますので、ご注意ください。

IPアドレスを追加するためのコマンド
az storage account network-rule add --resource-group "[resourcegroup]" --account-name "[storageaccount]" --ip-address "[ipaddress]"

Excelで加工したときの状態。
07IPアドレス群の許可.png

Azure Portal のツールバーにある Cloud Shell ボタンをクリックすると、コマンドラインのペインが表示されるので、ここで生成したコマンドを入力していく。

08コマンド実行.png

コマンドで追加した結果。

09コマンド実行結果.png

PVA からのみアクセスできるように設定できたので、下表の通りコンテナーを作成します。
その後作成したコンテナーに社内文書(InternalUseOnly.docx)をアップロードします。

項番 コンテナー名 アクセスレベル アクセスした結果
1 public-container コンテナー アクセスできる
2 blob-container BLOB アクセスできる
3 private-container プライベート アクセスできない

10コンテナ作成.png

アクセスレベル=プライベートは外部からアクセスできないんだろうなとは予想できますが、アクセスレベル=コンテナーと BLOB は正直違いが分かっておりません。ご容赦ください…

作成したコンテナー上の社内文書にアクセスした結果

コンテナー上の社内文書にHTTPリクエストを送信したところ、上の表のアクセスした結果の通りとなりました。

クライアントからアクセス可否を確認するためには、アクセスを許可するIPアドレスに追加する必要があります。
11アクセス確認用の設定.png

public-container にアップロードした社内文書にアクセスした結果
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      : {}
blob-container にアップロードした社内文書にアクセスした結果
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      : {}
private-container にアップロードした社内文書にアクセスした結果
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アドレスを追加しない場合、アクセスできないことも確認しています。

public-container および blob-container にアップロードした社内文書にアクセスした結果
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初心者でもできたので、おすすめです。
うまくいかないところや気になる点があれば、コメントお願いします。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?