ChatGPT API × Power Automate 活用事例 ~ Teams 文字起こし から 議事録 作成 ~
ChatGPT を個人単位の利用ではなく、業務・組織で組み込んで活用するために、 Power Automate を使った ChatGPT API 連携を考えていきます。サービス構成として Power Automate ・ SharePoint ・ ChatGPT ・ Teams を使い、「 Teams の文字起こしデータ( 拡張子 vtt データ )を SharePoint ドキュメント に格納し ChatGPT で 議事録作成 し、 Teams で通知を受信する」フローを作成してみます。
目次
Power Automate とは
ChatGPT と Power Automate の条件
作成するフローの要件
作成するフローの概要
Teams の文字起こしデータ( 拡張子 vtt データ )作成方法
ChatGPT と Power Automate を使った業務フローの作成
運用イメージ
ChatGPT を使ったフロー自動化による効果
Power Automate とは
Microsoft365を契約されている方の中には、Microsoft Office サインイン後のトップページで Power Automate を見たことがあるという方もいらっしゃるのではないでしょうか。 Power Automate はアプリやサービスとの間に自動化されたワークフローを作成することができるサービスです。
システムを使っている業務では、フローが自動化されているケースも多いと思いますが、システム化されていない業務や細かな作業は、メールやチャットを駆使して手動でフローを実現することも多いですよね。そんな状況も、 Power Automate を利用すればすぐにフローを作成し運用することができますよ。
Power Automate で できること や 活用事例 は「 Power Automate ・ Power Automate for Desktop で できること 活用事例」でも多く紹介しています。
スマートワーク を実現するための事例を「 スマートワーク 実現 ~ ChatGPT ・ Power Automate をはじめとした活用事例 ~」で紹介しています。
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 ・ Teams を使います。
その他 の 組み合せでも フロー を作成することもできます。関連記事を例として確認してみてくださいね。
ChatGPT と Teams に承認を組み合わせた業務フロー作成は「 ChatGPT ・ Power Automate 活用事例 – Teams 連携 承認フロー で セキュリティ対策 –」で紹介しています。
ChatGPT と Forms を組み合わせたフロー作成は「 ChatGPT ・ Power Automate できること 活用事例 – Forms からの 問い合わせ 自動応答 –」で紹介しています。
作成するフローの概要
作成するフローに関しては次の点を要件にします。
- SharePoint ドキュメント に保存された Teams の文字起こしデータ( 拡張子 vtt データ )を受信しフローを起動すること。
- ChatGPT の API を利用し、文字起こしデータ( 拡張子 vtt データ )の解析と回答の作成を行うこと。
- Teams のチャネルに作成した回答を通知すること。
イメージはこのようになります。
作成する Power Automate の完成図です。
使用する Teams の文字起こしデータ( 拡張子 vtt データ )の一部です。
Teams の文字起こしデータ( 拡張子 vtt データ )作成方法
Teams の文字起こしデータ( 拡張子 vtt データ )は会議中の画面の「その他」-「レコーディングと文字起こし」-「文字起こしの開始」から作成することができます。
メニューが確認できない場合は、Microsoft365の管理センターで許可設定をする必要がありますので、組織の管理者へ確認してくださいね。
会議終了後、下記のように自動生成されるので「.vtt としてダウンロード」を選択し、ダウンロードします。
ChatGPT と Power Automate を使った業務フローの作成
Power Automate の設定を行うことでフローを作成していきます。
組織の権限によって実行できない場合は、組織の管理者へ確認してくださいね。
①フロー作成
Power Automate を起動し、「作成」から「自動化したクラウドフロー」を選択します。
フローのトリガーには SharePoint の「ファイルが作成されたとき (プロパティのみ)」を選択します。
最後に「作成」をクリックします。
「作成」をクリック後の画面です。
②文字起こしデータ( 拡張子 vtt データ )を格納する SharePoint ドキュメント の場所を指定
赤枠から「サイトのアドレス」、「ライブラリ名」、「フォルダー」をそれぞれ設定します。
③受信したファイルの詳細を取得
「ファイルコンテンツの取得」アクションを追加し、「サイトのアドレス」には②で設定した値と同じ値を設定し、ファイルの識別子には動的なコンテンツから「識別子」を設定します。
④変数の設定
文字起こしデータ( 拡張子 vtt データ )を変数に設定します。
「変数を初期化する」アクションを追加します。
「名前」には任意の変数名を設定します。今回は「voice」とします。
「種類」には「文字列」を選択します。
「値」には 動的なコンテンツから「ファイルコンテンツ」 を選択します。
⑤スクリプトの実行
文字起こしデータ( 拡張子 vtt データ )の不要な部分を検索、置換するために正規表現を使います。
ですが Power Automate のクラウドフローでは正規表現を行う標準のアクションがありません。
なので今回は、 Excel の「スクリプトの実行」アクションを使って正規表現を実現します。
新規 Excel ファイルを開き、「自動化」-「新しいスクリプト」からスクリプトを作成します。
作成した Excel ファイルは、 SharePoint ドキュメント や OneDrive 、 Teams のドキュメント上で管理する必要があります。
右側に表示されるコードエディターにスクリプトを記述します。
下記のように定義します。
function main(workbook: ExcelScript.Workbook, targetText: string, pattern: string, flags: string): string[] {
let ptn: RegExp = new RegExp(pattern, flags);
return targetText.match(ptn) ?? [];
}
「スクリプトの実行」アクションを追加します。
作成したExcelファイルの、「場所」、「ドキュメントライブラリ」、「ファイル」をそれぞれ設定します。
「スクリプト」には「正規表現」を選択します。
「targetText」には「voice」(④で設定した変数)を設定します。
「pattern」には「<.*>」と入力します。
「flags」には「g」と入力します。
スクリプトの実行前と実行後の例です。
時間と空白行を排除することができました。
※個人情報に関する箇所はモザイクをかけています。
【スクリプト実行前の変数の値】
【スクリプト実行後の変数の値】
⑥変数の設定
スクリプトの実行結果を変数に設定します。
「変数の設定」アクションを追加します。
「名前」には「voice」(④で設定した変数)を設定します。
「値」には 動的なコンテンツから「result」 を選択します。
⑦Htmlからテキストに変換
スクリプトの実行後の値からHtmlを排除します。
「Htmlからテキスト」アクションを追加します。
「コンテンツ」には「voice」を設定します。
⑧文字起こしデータ( 拡張子 vtt データ )の値の整形
ChatGPT に質問を送信するために、更に不要な部分を排除します。
「変数を初期化する」アクションを追加します。
「名前」には任意の変数名を設定します。今回は「voice2」とします。
「値」には「式」から replace(outputs(‘Html_からテキスト’)?[‘body’],'”‘,”)を設定します。
「変数の設定」アクションには下記のように設定し、voice ↔ voice2 と交互に入れることで
都度不要な値を排除 (置換)しています。
アクション名 | 「名前」に設定する変数 | 「値」の「式」に入力する式 |
---|---|---|
変数の設定 3 | voice | replace(variables(‘voice2’),'[‘,”) |
変数の設定 4 | voice2 | replace(variables(‘voice’),’]’,”) |
変数の設定 5 | voice | replace(variables(‘voice2′),’,’,”) |
不要な値を排除するには、 replace(置換対象の値,’置換前の文字‘,’置換後の文字‘)を設定することで実現できます。
変換前、変換後のデータをリスト化して繰り返し処理で置換をすると更に簡単になります。
⑧ ChatGPT に送信する質問の作成
「変数を初期化する」アクションを追加します。
「名前」には任意の変数名を設定します。今回は「ChatContents」とします。
「種類」には「文字列」を選択します。
「値」には下記のように変数とテキスト文言を組み合わせて設定しています。
記載するテキスト文言 | 設定する変数 |
---|---|
下記文章を元に議事録を作成してください | voice |
⑨変数の設定
OpenAI API key の値を変数に設定します。
「変数を初期化する」アクションを追加します。
「名前」には任意の変数名を設定します。今回は「APIKey」とします。
「種類」には「文字列」を選択します。
「値」には OpenAI API key の値を入力します。
OpenAI API key の取得方法については、
「 ChatGPT 活用 ~ OpenAI の ChatGPT API で チャットボット を作成~」をご覧ください。
Azure OpenAI Service をご利用の場合は、 Azure OpenAI Service で確認した API Key を設定することで同じことができます。
⑩ ChatGPT へ質問を送信
「HTTP」アクションを追加します。
「方法」には「POST」を選択します。
「POST」を指定する理由は、 ChatGPT へリクエストを送信して新しいデータを作成するためです。
「URL」には「https://api.openai.com/v1/chat/completions」を入力します。
「ヘッダー」には下記のように設定します。
「Content-Type 」に 「application/json」を指定する理由は、リクエストの本文がJSON形式であることを示すためです。
「Authorization」に 「Bearer APIkey」を指定する理由は、APIキーを使用して認証を行うためです。
「Bearer」は、APIキーを使用してリクエストを送信するための権限を持っています。
「API Key」は動的なコンテンツから⑨で設定したOpenAI API key の値を設定します。
「本文」は下記のように定義しています。
★の部分はご自身の環境に合わせて設定してください。
{
“model”: “gpt-4”,
“messages”: [
{
“role”: “system”,
“content”: “日本語で返答してください。”
},
{
“role”: “user”,
“content”: ★ ChatGPT に送信する質問の作成で設定した変数(本記事では「ChatContents」)★
}
]
}
「“model”: “gpt-4”」で、 ChatGPT の利用モデルを設定しています。
本記事では GPT-4 を利用しています。
「“role”: “system”」とは、 ChatGPT の応答や振る舞いを制御するための指示を出す役割を持ち、
「“content”」で、日本語で返答するように設定しています。
「“role”: “user”」とは、ユーザーが ChatGPT に対して質問や指示を出す役割を持ち、
「“content”」で質問内容を設定しています。
その他にもいくつかパラメータが提供されていますが、パラメータについては公式ドキュメントを参考にしてください。https://platform.openai.com/docs/api-reference/chat/create
⑪ Teams にメッセージを投稿する
「チャットまたはチャネルでメッセージを投稿する」アクションを追加します。
「投稿者」には「フローボット」を選択します。
「投稿先」には「 Channel 」を選択します。
「 Team 」には投稿するチーム名を設定します。
「 Channel 」には投稿するチャネル名を設定します。
「Message」には下記のように変数とテキスト文言を組み合わせて設定しています。
記載するテキスト文言 | 設定する値 |
---|---|
【 ChatGPT に与えた命令だよ】 | ChatContenst (変数) |
【 ChatGPT からの応答だよ】 | trim(body(‘HTTP’)?[‘choices’][0]?[‘message’]?[‘content’]) |
【 Chat GPT からの応答だよ】の値には以下の「式」を入れています。
trim(body(‘HTTP’)?[‘choices’][0]?[‘message’]?[‘content’])
ChatGPT の応答から情報を取り出すには、trimという式を使います。
取り出す際は下記のように指定します。
trim(body(‘HTTP’)?[‘choices’][0]?[‘message’]?[‘content’])
trim(body(‘HTTP’)の部分では、「HTTP」アクションでの出力結果を指定しています。
?[‘choices’][0]?[‘message’]?[‘content’])の部分では、出力結果から答えのみ抽出するために、対象の文字列の位置を指定しています。
「HTTP」のアクションでの出力結果は下記のとおりです。
trim(body(‘HTTP’)?[‘choices’][0]?[‘message’]?[‘content’])と指定することで、 ChatGPT からの回答のみ取得することができます。
運用イメージ
作成したフローの運用イメージです。
① データ格納
Teams の文字起こしデータ( 拡張子 vtt データ )を SharePoint ドキュメント に格納します。
② ChatGPT からの回答を Teams のチャネルに通知
文字起こしデータ( 拡張子 vtt データ )の内容と 、 ChatGPT が 議事録作成 した内容を投稿することができました。
※個人情報に関する箇所はモザイクをかけています。
ChatGPT を使ったフロー自動化による効果
今回は Power Automate により、 Teams で作成した文字起こしデータ( 拡張子 vtt データ )から、 ChatGPT で 議事録作成す る自動化フローを構築しました。 ChatGPT API 連携によって、作成した文字起こしデータ( 拡張子 vtt データ )からすぐに 議事録作成 できることが分かります。
明確な議事録になるかは、文字起こしデータ( 拡張子 vtt データ )の精度次第という面もありますが、 フロー自動化によって 議事録作成 時間の効率化になるのではないでしょうか。また、文字起こしデータ( 拡張子 vtt データ )だけではなく、 作成した議事録を ChatGPT に 再度 ブラッシュアップさせることもできますし、他のツールと組み合わせて使うことでさらなる効率化も考えられるのではないでしょうか。
ぜひあなたも Power Automate と ChatGPT の連携を活用してみてはいかがでしょうか。
Power Automate を習得し
組織として業務活用し運用していきたい、
ChatGPT API を活用していきたい、といった
業務自動化・効率化に関する、ご相談を承っています。
ご相談・お見積りは無料です。お気軽にお問い合わせください。