Azure OpenAIで自社データを取り込んだChatbotを実現する。
Azure OpenAI に新機能として自社データを利用する方法が提供されました。 どのようにデータを登録するのか、またどのように利用するのかをまとめてみます。
事前準備
- Azure Subscription
- Azure OpenAI
Azure OpenAI Serviceは使い始めるのに、今は申し込みが必要となっているので、もしまだリソースを作成することができない場合は、リソース作成時にこのようなメッセージが表示されているので、こちらのフォームから申し込みます。
モデルのデプロイ
Azure OpenAIではリソースを作成するだけでは利用することはできず、モデルをデプロイすることで利用することができます。 モデルのデプロイはAzure OpenAI Studioから行います。
左側メニューより「管理」-「デプロイ」から「+新しいデプロイの作成」でデプロイしていきます。 デプロイは、一つのモデルにつき、一つしかできません。(2023年6月時点)
また、GPT-4についても、すぐに使えるわけではなく、Waitlistへの登録が必要になっています。
モデルには色々な種類がありますが、Chatbotを作る場合は、text-xxxx-00x、gpt-35-turboもしくは、gpt-4を選びますが、 gpt-35-turboかgpt-4を選ぶことで Completion APIだけでなく、Chat Completion APIや、今回利用する自社データを取り込んだチャットをするためのCompletions extensions APIも利用することができます。
自社データの登録
自社データを登録し、チャットに反映させるためには、Azure Cognitive Searchを利用します。
自社データを利用するための設定として、Azure OpenAI Studio 左側メニューの「プレイグラウンド」ー「チャット」を開くと、アシスタントのセットアップという項目があるので、「Add your data(preview)」を開くことでできます。
「+ Add a data source」のボタンをクリックすることで、データソースを設定するためのウィザードが始まるのでウィザードに従って必要な項目を設定してきます。
ここでは、データソースとして、
- Azure Cognitive Search
- Azure Blob Storage
- Upload files
の三つが選べますが、 Azure Cognitive Searchはすでに自社データの入っている(利用している)Cognitive Searchが存在している場合に選ぶと良いと思います。 データの追加は別のアプリケーションにより実現できているような場合です。
Azure Blob Storageは、Blobにアップロードしたデータを元に自社データをAzure Cognitive Searchに取り込むような場合に選択します。 (結局Azure Cognitive Searchが使われます。)
Upload FilesはAzure OpenAI StudioのUIを使ってファイルをアップロードしてAzure Cognitive Searchに取り込むものになります。
今回はAzure Blob Storageから取り込むように設定していきます。
Azure Blob Storageのリソースの作成や、Containerの作成、ファイルのアップロードについては割愛します。気になる方は
クイック スタート:Azure portal を使用して BLOB をアップロード、ダウンロード、および一覧表示する
を参照してください。
Azure Cognitive Searchのリソース作成
Azure Cognitive Searchのリソース作成は、ウィザードの中にある。「Create a new Azure Cognitive Search resource」のリンクをクリックすると、リソース作成画面に遷移します。
サービス名と場所(リージョン)を選択し、「確認および作成」ボタンから作成していきます。
リソースの作成が完了したら、 Azure OpenAI Studioの画面をリロードし、再度「+ Add a data source」をクリックします。 (リソースが作成されると選択できるようになります。)
ウィザードに従って設定していくと、「+ Add a data source」のボタンのあった場所にデータの取り込み中の表示が出てきます。
データ量にもよりますが、少し時間がかかるのでしばし待ちましょう。
データソースの追加が終わったら、一度、Azure Cognitive Searchの中身を見てみましょう。
中身を見てみると、一つのPDFファイルもよしなに分割して入っていることがわかります。 (この分割サイズが良いかどうか置いておいて)
プレイグラウンドで試す
同じ画面内にすぐにチャットできるUIが備わっているので、こちらを使って会話を試してみます。
経営課題はありますか?というメッセージに対して、どのドキュメントから持ってきたのかも含め回答を生成してくれているのが確認できました。
アプリケーションに組み込む
自分のアプリケーションに組み込む場合には、アプリケーションでAzure Cognitive SearchのAPIをコールして、、その結果をプロンプトに組み込んで、、 なんていうことはしません。 入力候補の拡張機能APIを使うことで、dataSourcesという項目をリクエスト時に送ることができるようになるので、組み込みもアプリケーション側に大きな変更を加えなくても利用できるようになっています。
"dataSources": [ { "type": "AzureCognitiveSearch", "parameters": { "endpoint": "'YOUR_AZURE_COGNITIVE_SEARCH_ENDPOINT'", "key": "'YOUR_AZURE_COGNITIVE_SEARCH_KEY'", "indexName": "'YOUR_AZURE_COGNITIVE_SEARCH_INDEX_NAME'" } } ],
さいごに
GPT-3.5だけでも面白い会話ができるモデルではありましたが、今回自社データを利用することが可能になり、さらに幅が広がりました。
取り込めるデータもPDFやWordファイルなど元々のAzure Cognitive Searchが読みにいけるデータの種類の豊富さなども便利に使えるポイントかと思います。
今回この機能が出たことによって、新しいAPIが追加されているのも注目です。