概要
社内業務で ChatGPT を利用したいという方は多いと思います。弊社ではTeamsをメインで利用していることもあり、Teams上からChatGPTを利用できる方法を解説したいと思います。 実現にあたって利用するサービスは以下になります。
・Azure OpenAI Service
・Power Virtual Agents
・Power Platform
Teams上でPowerVirtualAgentsを使ってユーザーとやり取りし、PowerVirtualAgentsからPowerAutomateを呼び出し、Azure OpenAI ServiceのAPIを呼び出し、ユーザーへ返答するという流れになります。
Azure OpenAI Serviceについて
Azure OpenAI Serviceは、ChatGPTやGPT-4をはじめとする多様な生成AIモデルを、Azureのクラウドプラットフォーム上で利用できるサービスです。自然言語の理解と生成を行うことができるGPT-3、自然言語とGitHub上のパブリックコードを使ってトレーニングされた、コーディング支援に特化したAIモデルのCodeXなど、事前学習済みのAIモデルをWebユーザインターフェース経由で利用できるサービスになります。
Azure OpenAI Serviceを利用する
Azure OpenAI Serviceの利用方法を解説します。
Azureのサブスクリプションがあることを前提とします。
Azure OpenAI Serviceの利用申請
Azure OpenAI Serviceを利用するには事前申請が必要です。以下のリンク先にて必要事項を入力し、申請を行なってください。申請後、1週間以内には返事が来るようです。筆者の場合は1日ほどで承認されました。
利用申請
Azure OpenAI Serviceのリソース作成
Azure OpenAI Serviceの承認が通りましたら、Azure Portal上でAzure OpenAI Serviceのリソースを作成していきます。
Azure Portal上部の検索バーにて「Azure OpenAI」と入力するとサービスがヒットするので、こちらを選択します。
Azure AI services | Azure OpenAIへ遷移するので画面上部にある作成を押下します。
リソース作成画面に遷移するので、必須情報の入力・選択を行なった後、「次へ」ボタンを押下します。今回はリソースグループは新規に作成、価格レベルはStandards0にしています。
そのまま次へで画面を進めて「作成」ボタンを押下します。
Azure AI services | Azure OpenAIへ遷移し、先ほど作成したリソース名のものが表示されていたらリソース作成は完了になります。
Azure OpenAI Studioにてモデルのデプロイを行う
リソースが作成できましたら続いて利用するモデルのデプロイを行なっていく必要があります。 モデルのデプロイはAzure OpenAI Studioで行います。先ほど作成したリソースを選択すると以下のような画面に遷移しますのでここから赤枠(どちらでも良い)をクリックしてAzure OpenAI Studioへ遷移します。
Azure OpenAI Studioへ遷移したら左側メニューのDeploymentsを選択し、Create New Deploymentを押下します。
モデルを選択し、任意の名前をつけ作成します。今回はモデルはgpt-35-turboを利用します。
デプロイしたモデルの名称が表示されていれば完了です。
API情報の取得
ChatGPT のAPI を利用するためには、APIキーを取得することが必要になります。ここまででモデルがデプロイできたため、次はこれらを利用するためのAPI情報を取得します。
先ほどデプロイしたモデルを選択して、右上にある「Open In Playground」を押下します。
Chat playgroundではデプロイしたモデルでのAIチャットの実行、AIのパラメーターの設定を変更したりできますが今回は割愛します。API情報を取得するには画面の「View Code」を押下します。
以下の画面のEnd PointおよびKeyの情報をこの後のAPI呼び出し時に利用するため控えておきます。
Power Virtual Agentsによるチャットbotの作成
Power Virtual Agentsは独自のチャットボットを簡単に作成できるサービスになります。ユーザーとのやり取りはこちらのPower Virtual Agentsで作成したチャットで行うため、早速チャットボットを作成していきます。
チャットBotの作成
Power Virtual Agentsを開いて、左側にあるチャットボットを選択し、「新しいチャットボット」を押下します。
任意のボット名を入力し、「作成」ボタンを押下します。
作成した名前のボットが表示されていればチャットbotの作成は完了です。続いて作成したチャットbotを選択し、左メニューにあるトピックを選択し、「新しいトピックの作成」を押下します。トピックとはボットがユーザーからの質問にどのように応答するかを定義したものになります。
次に以下のようにチャットにてChatGPTを呼び出すためのトリガーフレーズを設定します。トリガーフレーズとはユーザーがトピックを呼び出すためのフレーズとなります。トリガーフレーズはなんでも良いのですが今回はチャットにてユーザーが"gpt"と入力したらChatGPTによる応答を開始したいと思いますので、「編集」を押下し、"gpt"と入力します。
次に"gpt"と入力されたらチャットbot側からメッセージを投げ、ユーザーの返答を受け取るようにします。"+"ボタンを押下し、ノードを追加します。ノードの種類は「質問」を選択し、botから送信する適当なメッセージを入力してください。「特定」の部分は"ユーザーの応答全体"を選択してください。これによりChatGPTへ投げるためのメッセージをユーザーから取得できるようになりました。
Power AutomateからChatGPTを呼び出す
実際にChatGPTのAPIにリクエストを投げ、そのレスポンスを取得する処理はPower Automateにて行います。Power Virtual Agentsではフロー内でPower Automateで作成した処理を呼び出すことができます。先ほどの「質問」ノードからさらにノードを追加し、「アクションを呼び出す」を選択し、「フローの作成」を選択してください。これでPower AutomateのPower Virtual Agents フローのテンプレートが立ち上がります。
Power Automateのフロー作成
ではPower AutomateにてChatGPTを呼び出すフローを作成していきます。 APIへリクエストを投げてそのレスポンスを受け取るだけの簡単なフローになりますが今回は以下のようなフローとしました。
まず入力のところの記載となりますがこちらはPower Virtual Agentsから受け取る入力(ユーザーのメッセージ)を任意の名称(今回はcontent)で定義します。「入力の追加」から「テキスト」を選択し、追加します。値は空で問題ありません。
次にAPIキーの値を宣言、初期化します。
ノード下部の"+"ボタンを押下し、検索欄に"変数"と入力すると、「変数の初期化」の項目があると思いますのでそちらを選択してください。
名称は任意(今回はAPI_KEYとした)で、種類は文字列とし、値の部分にはこの記事の"API情報の取得"にて取得済みのKeyの値を設定してください。
同様に変数の初期化を新たに追加して、この記事の"API情報の取得"にて取得済みのエンドポイントの値を設定してください。
次に、APIへ投げるためのデータ部の値を宣言、初期化します。
OpenAIのドキュメントによると、リクエストのためのjsonは以下のような構造となるようです。
https://platform.openai.com/docs/api-reference/making-requests
contentの部分がユーザーの質問部分となるので、messagesを以下のように初期化しています。
APIリクエストのための各パラメーターの初期化が終わったらいよいよリクエスト部分のノードを追加します。以下のようにノード追加時に検索欄に"HTTP"と入力すると「HTTP」の項目があると思いますのでそちらを選択してください。
HTTPの各設定項目は以下のようになります。
最後にAPIからのレスポンスをPower Virtual Agentsに返す設定を行なっていきます。OpenAIのレスポンスはドキュメントによると以下のようになっており、json内のcontentの部分がユーザーへの返答部分となります。なのでレスポンス部分の不要な部分をトリミングする必要があります。
トリミングは以下のような式でできます。
body('HTTP')?['choices'][0]?['message']?['content']
こちらの式をReturn Valueのノードに以下のように設定します。これでPower Virtual Agents側にはユーザーの質問の回答だけが返るようになります。
これにてPower Automateのフローは作成完了です。名前をつけてフローを保存してください。
Power Virtual AgentsからPower Automateのフローを呼び出す
Power Automateのフローは作成できたのでPower Virtual Agentsから作成したフローを呼び出します。Power Virtual Agentsでノードを追加し、「アクションを呼び出す」を選択し、先ほど作成、保存したPower Automateのフローが選べると思うので選択してください。
先ほど作成したPower Automateのフローの入力と出力の設定が行えるようになります。出力は自動的に値が設定されていると思うのでそのままにしてください。入力の方は以下のようにひとつ前のノードの値(ユーザーの入力内容)を設定するようにしてください。
最後にPower Automateのフローから受け取ったレスポンスをbotからユーザーへメッセージとして送信するためのノードを追加します。
これでPower Virtual Agents上でChatGPTからの回答を受けることができるようになりました。念の為botテストで質問を投げて回答が返されるか確認します。たぶんちゃんと動いていそうです。
Teamsで利用してみる
最後に、Power Virtual Agentsを公開してTeamsでも同様のことができるようにします。Power Virtual Agentsの左側メニューから「公開」を選択し、公開します。
次に「設定」の「チャネル」より、Teamsを選択します。そのまま「Teamsを有効にする」を押下して、遷移した画面にて「ボットを開く」を押下してください。これでTeams上でも同じChatGPTを応答に用いたbotが利用できるようになります。
Teams上でもちゃんと動いているようです。
今後の活用について
今回はAzure OpenAI Service、Power Virtual Agents、Power Automateを用いて単純にChatGPTの応答をTeamsでも利用するだけのものでしたが、今後は社内ナレッジに特化したモデルの作成を行い、社内の規則や手続き方法などに手軽に回答できるAIチャットの開発を進める予定です。