ChatGPT API × Power Automate 活用事例 – Teams 連携 による 承認フロー –
ChatGPT を、業務に取り入れて効率化を行うことを考えている方や、企業は多いのではないでしょうか。しかし、 ChatGPT を業務利用する上では、以下のようなセキュリティ面が気になるのではないでしょうか?
・個人のアカウントで、 ChatGPT を業務利用すること。
・業務上の機密情報を、 ChatGPT に入力すること。
・プライバシーに関わる内容を、 ChatGPT に入力すること。
・ ChatGPT の回答を精査・判断せずに、そのまま利用すること。
こうしたセキュリティ懸念等より、 ChatGPT の利用制限や利用禁止する企業がいることもご存じかと思います。そこで本記事では、セキュリティ懸念を少しでも軽減し、組織で統制した形で ChatGPT API を使い、 Power Automate で Teams や 承認フロー と 連携 する方法を紹介します。
ChatGPT と Power Automate の条件
本記事では、 ChatGPT と Teams ・ SharePoint を Power Automate で連携させます。 ChatGPT と Power Automate に関して下記の条件があります。
条件 | 説明 |
---|---|
ChatGPT | ChatGPT API を利用します |
Power Automate | プレミアム コネクタを利用します。 プレミアム コネクタは、Microsoft 365 ライセンスには含まれていません。 Power Automate ライセンスの スタンドアロン プランが必要です。 |
弊社では、 Power Automate ライセンスの販売から、サポートまでトータルで行っています。ChatGPT API の組み合わせ支援も可能ですので、お気軽にお問い合わせください。
また、ChatGPT API の詳細は「ChatGPT 活用 ~ OpenAI の ChatGPT API で チャットボット を作成~」を参照してください。
ChatGPT を利用する Power Automate クラウドフロー 要件
Power Automate で ChatGPT と Teams を 連携 したクラウドフローを作成します。Microsoft365 の Teams を法人利用し、 ChatGPT と 連携 することを前提とします。これにより、 ChatGPT を個人のアカウントで業務利用しない形とします。
また、質問者は ChatGPTへ 入力したいメッセージを、Teams の指定チャネルに投稿します。回答も、チャネルで受信します。
セキュリティ対策として、質問者が投稿した内容について、 Power Automate で投稿を検知し、承認者が承認を行うようにしています。これにより、業務上の秘密情報や、プライバシーに関わる内容が ChatGPT へ入力されることを防止します。
また、 ChatGPT からの応答メッセージについても、承認者が承認を行うようにしています。これにより、ChatGPT の回答を精査・判断せずに、そのまま利用することを防止します。
以上を実現する、クラウドフローに関しては、次のような全体像になります。
作成手順
Power Automate ・ Teams ・ ChatGPT を 連携 したクラウドフローの作成手順を示します。 Power Automate でのトリガー作成や、アクション作成の詳細を示します。
①トリガーの追加
「チャネルに新しいメッセージが追加されたとき」をトリガーにします。
項目 | 値 |
チーム | トリガーにするチーム |
チャネル | トリガーにするチームのチャネル |
②「ユーザー プロフィールの取得 (V2)」のアクションを追加
「ユーザー(UPN)」の項目に「メッセージfromユーザーID」を設定します。
これは、チャネルに質問を投稿したユーザーのメールアドレスを取得するためです。
項目 | 値 |
ユーザー(UPN) | メッセージfromユーザーID ※①「チャネルに新しいメッセージが追加されたとき」から取得できる動的コンテンツ |
③「メッセージ詳細を取得する」のアクションを追加
チャネルに追加された新しいメッセージの詳細を取得します。
項目 | 値 |
メッセージ | メッセージfromユーザーID ※①「チャネルに新しいメッセージが追加されたとき」から取得できる動的コンテンツ |
メッセージの種類 | チャネル |
Team | トリガーと同じチーム |
Channel | トリガーと同じチャネル |
④「変数を初期化する」アクションを追加
OpenAI の WEBサイトより取得した、 ChatGPT の APIキーを設定します。
項目 | 値 |
名前 | APIKey |
種類 | 文字列 |
値 | ChatGPTのAPIキー |
ChatGPT API の詳細は「ChatGPT 活用 ~ OpenAI の ChatGPT API で チャットボット を作成~」で紹介しています。
⑤承認アクションを追加
「開始して承認を待機」を使用します。
項目 | 値 |
承認の種類 | 承認/拒否-最初に応答 |
タイトル | 任意のタイトル |
担当者 | 承認者のメールアドレス |
詳細 | 任意のメッセージ 例) 以下のChatGPT質問内容の承認/却下を行ってください。 Body PLainTextContent ※③「メッセージ詳細を取得する」から取得できる動的コンテンツ |
要求元 | メール ※②「ユーザー プロフィールの取得 (V2)」から取得できる動的コンテンツ |
⑥条件分岐を設定
承認者の選択によって分岐を行います。
「承認」を選択した場合は、 ChatGPT に入力メッセージを送信します。
「拒否」を選択した場合は、「拒否されました」という内容のチャットをチャネルに返信します。
項目 | 値 |
左辺 | 結果 ※⑤「開始して承認を待機」から取得できる動的コンテンツ |
条件式 | 次の値に等しい |
右辺 | Approve |
⑦-1 はいの場合
「HTTP」アクションを設定し、 ChatGPT の API を呼び出します。
項目 | 値 |
方法 | POST |
URl | https://api.openai.com/v1/completions |
ヘッダー 1行目 | Content-Type application/json |
ヘッダー 2行目 | Authorization Bearer APIKey ※③「変数を初期化する」から取得できる動的コンテンツ |
本文 | { “model”: “gpt-3.5-turbo”, “messages”: [ { “role”: “system”, “content”: “日本語で返答してください。” }, { “role”: “user”, “content”: Body PLainTextContent ※③「メッセージ詳細を取得する」から取得できる動的コンテンツ } ] } |
※ChatGPTAPI仕様の補足
model:
利用する ChatGPT のモデルID。(“gpt-3.5-turbo”、”gpt-4″、…、等)
message:
ChatGPT に送るメッセージオブジェクトの配列。
オブジェクトには、role (AIへ送信するコンテンツの役割)と content (メッセージや指示)を指定。
role:
“system”, “assistant”, “user” の3タイプを指定。
“user”: ユーザからのChatGPTへの質問文。
“assistant”: ChatGPTからの回答。
“sysytem”: ChatGPTへの指示。
AI のキャラ設定などを content に細かく指示すると
そのキャラクターになりきって回答してくれるようになります。
その他にもいくつかパラメータが提供されていますが、パラメータについては公式ドキュメントを参考にしてください。
https://platform.openai.com/docs/api-reference/chat
⑦-2いいえの場合
「チャネル内のメッセージで応答します」のアクションを追加します。
承認者がChatGPTに質問内容の入力を拒否したことを応答します。
項目 | 値 |
投稿者 | Flow bot |
投稿先 | Channel |
Message ID | メッセージfromユーザーID ※①「チャネルに新しいメッセージが追加されたとき」から取得できる動的コンテンツ |
Team | トリガーと同じチーム |
Channel | トリガーと同じチャネル |
Message | 任意のメッセージ 例) 担当者から質問内容が却下されました。 |
⑧承認アクションを追加
「開始して承認を待機」を使用します。
項目 | 値 |
承認の種類 | 承認/拒否-最初に応答 |
タイトル | 任意のタイトル |
担当者 | 承認者のメールアドレス |
詳細 | 任意のメッセージ 例) 以下のChatGPT質問内容の承認/却下を行ってください。 @{trim(body(‘HTTP’)?[‘choices’][0]?[‘message’]?[‘content’])} |
要求元 | メール ※②「ユーザー プロフィールの取得 (V2)」から取得できる動的コンテンツ |
⑨条件分岐の追加
承認者の選択によって分岐を行います。
「承認」を選択した場合は、 ChatGPT から得た回答メッセージをチャネルに送信します。
「拒否」を選択した場合は、「拒否されました」という内容のチャットをチャネルに送信します。
項目 | 値 |
左辺 | 結果 ※⑧「開始して承認を待機」から取得できる動的コンテンツ |
条件式 | 次の値に等しい |
右辺 | Approve |
⑩-1はいの場合
「チャネル内のメッセージで応答します」アクションを追加します。
ChatGPTからの回答内容を応答します。
項目 | 値 |
投稿者 | Flow bot |
投稿先 | Channel |
Message ID | メッセージfromユーザーID ※①「チャネルに新しいメッセージが追加されたとき」から取得できる動的コンテンツ |
Team | トリガーと同じチーム |
Channel | トリガーと同じチャネル |
Message | @{trim(body(‘HTTP’)?[‘choices’][0]?[‘message’]?[‘content’])} |
⑩-2いいえの場合
「チャネル内のメッセージで応答します」アクションを追加します。
承認者が回答内容の表示を拒否したことを応答します。
項目 | 値 |
投稿者 | Flow bot |
投稿先 | Channel |
Message ID | メッセージfromユーザーID ※①「チャネルに新しいメッセージが追加されたとき」から取得できる動的コンテンツ |
Team | トリガーと同じチーム |
Channel | トリガーと同じチャネル |
Message | 任意のメッセージ 例) 担当者から回答内容の表示が却下されました。 |
Teams 投稿後の ChatGPT 連携 ~運用イメージ~
作成したフローの運用イメージです。Teams の指定チャネルに、 ChatGPTへ 入力したいメッセージを投稿します。内容に問題がない場合は、 Teams で通知されます。
① 質問者が質問投稿
まず、質問者が Teams の指定チャネルに、 ChatGPTへ 入力したいメッセージを投稿します。
②承認者に承認依頼の通知
メッセージが投稿されると、クラウドフローがトリガを検知し、承認者へ承認要求通知を送信します。
これに承認者が返答します。
「承認」の場合は、ChatGPTに質問をします。その後、応答メッセージの承認要求通知がきます。
「拒否」の場合は Teams へ拒否されたことを応答します。
「承認」の場合
「拒否」の場合
③ Teams へ応答内容の送信
承認者が応答内容へ対応します。
「承認」の場合は、 Teams へ ChatGPT からの応答メッセージを送信します。
「拒否」の場合は Teams へ拒否されたことを応答します。
まとめ
本方式のように、サービスを組み合わせることによって、セキュリティ懸念を軽減しながら、 ChatGPT を活用していくことができます。業務内容によって、チャネルを使い分けたり、フローで承認を行わないようにすることも可能です。 ChatGPT の活用と同時に、セキュリティ対策を考えている場合は、ぜひ一度紹介の内容を試してみてください。
ZiDOKA AI
Teams を介した ChatGPT の組織活用が実現できます。
承認機能 や 機密情報保護といったセキュリティ対策を備えています。
ZiDOKA AI で ChatGPT 活用を始めましょう。