松本典子の「はじめよう!Azure Logic Apps/Power Automateでノーコード/ローコード」 第38回
受信したメールの内容をGPTモデルに読ませて必要な情報をTeamsに投稿させるフロー
生成AIに日本語プロンプトで指示を出し、メールから情報を抽出してもらおう
2024年06月05日 09時00分更新
こんにちは、Microsoft MVP(Azure / Business Applications)の松本典子です。
皆さんが日々業務上でやり取りするメールでは、結構な頻度で「会議や打ち合わせの日程の打診」が発生しているのではないでしょうか? 打診する側は、社外の人も含めて出席者全員から返事が来なければ開催日時を決められませんが、打診を受ける側は忙しくて返事が遅れたり、メールを見落としてしまったり……ということがあります。
そこで今回は、Power Automateを使って、受信したメールの内容から必要な部分(「打ち合わせ日時」などの情報)を抽出して、「Microsoft Teams」のチャンネルに自動通知するワークフローを作成します。
なお先ごろ、「AI Builder」コネクタの「カスタムプロンプト」が、Power Automateの日本環境(日本リージョン)&日本語で公式に利用できるようになりました。つまり、ユーザーのニーズに応じたテキスト処理を、生成AI(GPT-3.5 Turbo モデル)に日本語で指示(プロンプト)を与えて実行させることができます。そこで今回のワークフロー作成では、このカスタムプロンプトも使ってみます。
0. フロー全体図
今回、Power Automateで作成するワークフローの全体像は上図のとおりです。
件名に「打ち合わせ」という言葉が含まれるメールを受信したら、それをトリガーとして実行します。生成AIがメールの本文から「相手の会社名」「相手の名前」「日時・場所」を抽出して、その情報をTeamsに投稿するという流れです。
なお、今回はクラシックデザイナーの画面で説明していますが、フローはモダンデザイナーでも同じように作成できます。
1. 事前準備
Power Platform でAI Builderのカスタムプロンプトを利用するには、事前に「生成AI機能」をオンにしておく必要があります。
まず、Power Platform 管理センター にアクセスし、左メニューから「環境」ページを開きます。そのうえで、カスタムプロンプトを利用したい環境をクリックします。
下の方にスクロールすると「生成AI機能」という項目があるので「編集」をクリックします。
上図のとおり、表示される2つの設定項目「リージョン間でデータを移動する」「Bing検索」にチェックを入れて「保存」ボタンをクリックします。これで事前準備は完了です。
なお、この生成AI機能は、設定してから環境に適用されるまでに数分ほど時間がかかる場合があります。
2. カスタムプロンプトの作成
続いて、フロー内で利用するカスタムプロンプトを作成します。具体的には、生成AIに「メール本文から相手の会社名、名前、日時・場所を抜き出す」よう指示するプロンプトです。
左メニューの「… 詳細」をクリックすると「AIハブ」という項目が表示されるので選択します。上図の表示に切り替わったら「AIプロンプト」をクリックします。
今回は独自のプロンプト(カスタムプロンプト)を使うので「GPTでプロンプトを使用してテキストを作成する」をクリックします。
上図のような表示に変わったら、必要な部分を入力していきます。
(1)名前:カスタムプロンプトに名前を付けます。Power Automateのフローで利用する際にわかりやすい名前を入力します(今回は「MTGreservation」としました)
(2)プロンプト:生成AIに処理内容を指示するプロンプトを、日本語で記述します。今回は、下に示す内容でプロンプトを作成しました。別の目的でカスタムプロンプトを作りたい場合は、これを参考にして書き替えるとよいでしょう。
なお、プロンプトの中で「HTMLの改行タグ(<br>タグ)を入れる」よう指示している部分がありますが、これはTeamsに投稿されるメッセージに改行を入れて、見やすくするためのものです。
下の文章から「相手の会社名」「相手の名前」「日時・場所」を抜き出しなさい。
出力は以下の条件を満たすこと。
・「相手の会社名」の最後に <br> を追加すること
・「相手の名前」には「様」をつけ、最後に <br> を追加すること
・「日時・場所」は箇条書きにし <br> を追加すること
また以下の文章が数文字以下の場合は、情報を抽出できないと答えなさい。
[Start of text]
<あなたの名前>様
お世話になっております。
<相手の会社名>の<相手の名前>と申します。
さて、突然のご連絡となりますが、○○プロジェクトについての打ち合わせをさせていただきたく、ご都合のよろしい日程をお伺いしたく存じます。
以下の日程でご都合いただけるでしょうか?
日時: ○○月○○日(曜日)○○時~○○時 場所: ○○会議室(または、オンライン会議ツール)
日時: ○○月○○日(曜日)○○時~○○時 場所: オンライン会議ツール
もしご都合が合わない場合は、別の日程をご提案いたしますので、お知らせいただければ幸いです。
何かご質問やご要望がございましたら、お気軽にお知らせください。
どうぞよろしくお願いいたします。
<相手の名前>
[End of text]
プロンプトを作成したら、保存する前に、生成AIが意図したとおりの応答をしてくれるかどうかをテストします。
「入力」は、フロー内で利用するときに動的なコンテンツが入る部分です。まず「名前」には、わかりやすい名前を付けます(筆者は「mail01」としました)。
続いて「サンプルデータ」に、打ち合わせの日程調整で送られてくるような内容のテキストを入力します。今回、筆者は以下のようにサンプル文を作りましたが、これまで受け取った実際の日程調整メールをコピー&ペーストしてテストするのでもよいでしょう。
福岡様
お世話になっております。株式会社△△の北九州と申します。
さて、突然のご連絡となりますが、○○プロジェクトについての打ち合わせをさせていただきたく、ご都合のよろしい日程をお伺いしたく存じます。
以下の日程でご都合いただけるでしょうか?
日時: 5月31日(金)14時~15時 場所: 弊社会議室(または、オンライン会議ツール)
日時: 6月3日(月)10時~12時 場所: オンライン会議ツール
日時: 5月4日(火)15時~16時 オンライン会議ツール
上記日程でご都合が合わない場合は、別の日程をご提案いたしますので、お知らせいただければ幸いです。
何かご質問やご要望がございましたら、お気軽にお知らせください。
どうぞよろしくお願いいたします。
株式会社△△ 北九州
「プロンプトのテスト」をクリックすると、「プロンプトの応答」欄にサンプルデータから生成AIが抽出した情報が表示されますので、内容の精度を確認します。期待どおりの内容になっていなければ、プロンプトの内容を修正します。応答に問題がなければ「カスタムプロンプトを保存」をクリックします。
以上で、AI Builderを活用してメール内容から打ち合わせに関する情報を抽出する準備ができました。
3. トリガーの設定
ワークフローに組み込むカスタムプロンプトが完成したので、フローの作成に入ります。
今回のフローでは、トリガーに「Outlook」コネクタを利用します。検索窓に「Outlook」と入力して「Outlook」コネクタを選択し、トリガー一覧から「新しいメールが届いたとき(V3)」をクリックします。
トリガーの設定では「件名フィルター」に「打ち合わせ」と入力します。これにより、件名に「打ち合わせ」が含まれるメールを受信したときにのみ、トリガーが起動してフローが自動実行されます。
4-1. アクションの設定:変数の初期化
Teamsの通知にメール差出人のメールアドレスを追加するため、変数を設定します。
「組み込み」タブをクリックすると、「変数」コネクタが表示されるのでクリックします。アクション一覧が表示されたら「変数の初期化」を選択します。
(1)名前:「送信者」と入力
(2)種類:「文字列」を選択
(3)値:Outlookコネクタの動的なコンテンツ「差出人」を選択
4-2. アクションの設定:GPT でプロンプトを使用してテキストを作成する
続いて、作成したカスタムプロンプトで生成AI(GPTモデル)にメール本文を読み取らせ、必要な情報を抽出するアクションの設定です。
検索窓に「GPT」と入力すると「AI Builder」コネクタが表示されるので選択します。アクション一覧から「GPT でプロンプトを使用してテキストを作成する」をクリックします。
(1)プロンプト:「2. カスタムプロンプトの作成」で作成した「MTGreservation」を選択
(2)mail01:Outlookの動的なコンテンツ「本文」を選択
4-3. アクションの設定:チャットまたはチャネルでメッセージを投稿する
GPTでプロンプトを使用して作成したテキストをMicrosoft Teamsに投稿します。
検索窓に「Teams」と入力して「Microsoft Teams」コネクタを選択します。アクション一覧から「チャットまたはチャネルでメッセージを投稿する」をクリックして、次のとおり設定します。
(1)投稿者:「ユーザー」を選択
(2)投稿先:「Channel」を選択
(3)Team:投稿先のチームを選択
(4)Channel:投稿先のチャネルを選択
(5)Message:投稿内容を入力
(6)Subject:投稿するメッセージの件名を入力
なお「(5)Message」には、次の動的なコンテンツや変数も含まれます。
・件名:Outlookの動的なコンテンツ「件名」を選択
・送信者:変数「送信者」を選択
・依頼内容:「GPT でプロンプトを使用してテキストを作成する」の動的なコンテンツ「Text」を選択
以上でワークフローは完成です! 最後にワークフローの名前を入力して「保存」をクリックします。
ただし、今回作成したフローを保存しようとすると「アクション 'GPT でプロンプトを使用してテキストを作成する' の後にコンテンツ承認アクションが存在しません。」と警告が表示され、フローチェックに引っかかります。
生成AIが自動生成するテキストは、しばしば正しくない情報や適切ではない内容を含むことがあります。こうしたリスクを回避するため、Power Automateでは生成AIの出力した内容に対して、人間による「承認」のアクションを入れることが推奨されています。
ただし、今回作成したフローは簡単な通知をするだけのものであり、そこまでする必要はないと思います。そのため、今回は「承認」コネクタは設定しませんでした。
5. 実行結果
さっそく作成したフローを実行して、メール本文から「相手の会社名」「相手の名前」「日時・場所」を自動抽出したうえでTeamsに投稿されるかどうかを確認してみます。
株式会社Kyusyuの鹿児島さんから、筆者宛に打ち合わせ依頼のメールが届いたという想定です。件名に「打ち合わせ」という言葉が含まれるため、トリガーが起動します。そのうえで、会社名、名前、打ち合わせ希望の日時・場所が抽出されるはずです。
Microsoft Teamsへの投稿を確認すると、それぞれの情報が正しく抽出されています。<br>タグによって、きちんと改行されていることも確認できました。
最後に
今回ご紹介したとおり、生成AIのGPTモデルに日本語で指示を与えるだけで、非定型のテキスト(メール本文)から簡単に情報が取り出せるのはとても便利ではないでしょうか。打ち合わせ日程の調整だけでなく、幅広いユースケースに使えると思います。ぜひ活用してみてください!
参考
・コパイロットと生成 AI 機能をオンにする(Microsoft Learn)
・Power Automate でプロンプトを使用する(Microsoft Learn)
この連載の記事
-
第44回
Team Leaders
契約書を確実に期限管理! SharePoint+Power Automateで期日通知を自動化 -
第43回
Team Leaders
社内からの質問に自動回答! AI Builder+ノーコードでQ&Aボットを作ろう -
第42回
Team Leaders
Power Automateで複数人の承認(多段階承認)ワークフローを簡単作成しよう -
第41回
Team Leaders
重要なTeamsメッセージの見失い/見落としを防ぐPower Autometeのフローを作ろう -
第40回
Team Leaders
クラウドフローからデスクトップフローを「Picture-in-Picture」で起動する -
第39回
Team Leaders
面倒なカレンダー登録作業を生成AIで自動化するワークフローを作ろう -
第37回
Team Leaders
フォルダー内のすべてのファイルを添付してメールを自動送信するフローを作ろう -
第36回
Team Leaders
ローカルPCのテキストファイルをPower Automateに読み込ませて活用しよう -
第35回
Team Leaders
受信メールの添付ファイルを種類に応じたフォルダに自動保存する -
第34回
Team Leaders
Power AutomateでTeamsのチーム全員にメンションを送る方法 - この連載の一覧へ