松本典子の「はじめよう!Azure Logic Apps/Power Automateでノーコード/ローコード」 第28回
OpenAI GPTコネクタを利用してOpenAI APIにアクセスする
ChatGPTをMicrosoft Teamsから使う仕組みをノーコードで作ろう
2023年07月25日 08時00分更新
こんにちは、Microsoft MVP(Azure / Business Applications)の松本典子です。
最近では一般のニュースでも聞かない日がないほど話題になっている「ChatGPT」。人工知能がとても自然な対話を行い、豊かな知識と語彙を提供するため、全世界で急速に普及しています。すでに業務で活用している、という方も多いのではないでしょうか。
ChatGPTは、基本的にはWebサイトかスマホ用のアプリから利用するようになっています。ですが、たとえばMicrosoft Teamsを利用中に「わざわざChatGPTのアプリに切り替えず、このままTeams内で利用できれば……」と思う場面もあるかと思います。
そこで今回は、Azure Logic Apps / Power Automateを利用し、ノーコードでTeamsからChatGPT※注を利用できるようにする方法をご紹介しましょう。
※注:ChatGPTはOpenAIのGPTモデルを使ったサービス名であり、厳密に言えば、今回利用するOpenAI GPTコネクタ経由で利用できるのはChatGPTではなく、GPTモデルそのものです。ただし、本記事ではわかりやすいように「ChatGPTを利用する」と表現しています。
1. 事前準備
Azure Logic Apps / Power Automateには「OpenAI GPT」コネクタがあります。今回はこのOpenAI GPTコネクタを利用し、ChatGPTへの質問と回答の表示をTeamsで行うこととします。なおLogic Apps / Power Automateのどちらでも利用できますが、今回はPower Automateで説明します。
1-1. Microsoft Teamsのチャネル作成
まずはTeamsに、ChatGPTへの質問および回答の表示するためのチャネルを1つ作成しておきます。今回は「ChatGPT用」というチャネル名にしました。
1-2. OpenAI APIの取得
OpenAI GPTコネクタの利用には、OpenAIのAPIキーが必要になるので取得します。ChatGPTのWebサイトにアクセスし、ログインします。
カテゴリが表示されるので「API」をクリック。
右上のプロフィール画像をクリックするとメニューが表示されるので、「View API keys」をクリックします。
画面中ほどに表示される「+Create new serect key」ボタンをクリックすると上図のウィンドウがポップアップします。「Name」にAPIの名前(今回は「MyChatGPTConnetorKey」としました)を入力し、「Create secret key」をクリックします。
「sk-」から始まる文字列が表示されますが、これがAPI Keyです。赤枠内のアイコンをクリックするとクリップボードにコピーされます。
API Keyはこの新規作成時にしか表示されないので、テキストファイルとして保存するなど、なくさないように必ず控えておいてください。もちろん、悪用されないように他人に知られないように気をつけましょう。
2. ChatGPT APIの「トークン数」問題
ChatGPT APIを利用する際、注意しなければならないのが「トークン数」です。トークン数とは、テキストデータをChatGPTモデルが理解できる形式に分割した単位のことで、APIの利用料金はこのトークン数に応じて課金されます。ChatGPTと日本語でやり取りすると、英語に比べて消費するトークン数は多くなります。
今回のようにOpenAI GPTコネクタを利用する場合もOpenAI APIを利用しますので、「無料お試し利用」トークンを使い切る、もしくは試用期限切れになると、有料で利用することになります。したがって、できるだけ消費するトークン数を減らしたいところです。
そこで今回の仕組みでは、質問内容をいったん英語に翻訳してからChatGPTに渡すことで、消費するトークン数を抑える工夫をします。
3. ワークフロー全体図
今回作成するワークフローの全体像は上図のとおりです。
Microsoft Teamsの特定チャネル(ChatGPT用チャネル)に新しいメッセージが投稿されると、そのメッセージを英語に翻訳してからOpenAI GPTコネクタでChatGPTに送り、ChatGPTからの応答をチャネルのメッセージとして投稿する仕組みです。
3-1. トリガーの設定
今回のワークフローでは、Microsoft Teamsの指定のチャネルに新しいメッセージが投稿されるとトリガーが起動するように設定します。
検索窓に「Teams」と入力して、「Microsoft Teams」コネクタを選択します。トリガー一覧から「チャネルに新しいメッセージが追加されたとき」をクリックします。
(1)チーム:一覧から該当のチームを選択
(2)チャネル:「1-1. Microsoft Teamsのチャネル作成」で作成したチャネル名を選択
3-2. アクションの設定:Htmlからテキスト
Microsoft Teamsから送信されたメッセージはHTML形式になっているのでテキスト形式に変換します。
検索窓に「HTML」と入力して、「Content Conversion」コネクタを選択し、アクション一覧から「Html からテキスト」をクリックします。
「コンテンツ」には動的なコンテンツから「メッセージ本文 コンテンツ」を選択します。
3-3. アクションの設定:テキストの翻訳
テキスト形式に変換したメッセージを、英語に自動翻訳します。
検索窓に「翻訳」と入力して、「Microsoft Translator V2」コネクタを選択します。
今回利用する「Microsoft Translator V2」コネクタは、Subscription Keyが空白でも利用可能です。初めて利用するときは「接続名」のみ入力して作成すると、1日あたり5万5000文字、1分あたり100リクエストまで利用できます。
アクション一覧から「テキストの翻訳」をクリックします。
(1)ターゲット言語:「英語」を選択
(2)テキスト:「Htmlからテキスト」の動的なコンテンツから「本文」を選択
3-4. アクションの設定:OpneAI GPT
OpneAI APIコネクタを利用し、メッセージに対する答えを自動で出力します。
検索窓に「ChatGPT」と入力して、「OpneAI GPT」コネクタを選択します。
(1)接続名:わかりやすい接続名を入力(今回は「MyChatGPTbot」)
(2)API Key:「Bearer 」と入力したあとに「1-2. OpenAI APIの取得」で取得したAPI Keyを入力します(「Bearer sk-xxxxx」という形になります)
続いて、OpneAI APIコネクタのアクション一覧から「Get chat completions」を選択します。
なおChatGPTに英語で質問した場合、通常はその答えも英語で出力されます。今回のように回答を日本語で出力したい場合、もう一度「3-3. アクションの設定:テキストの翻訳」のように機械翻訳を利用すればいいのでは? と思われるかもしれませんが、そうするとChatGPTが出力する文章の自然さが損なわれる可能性があります。
ただし、ChatGPT APIでは「role」(ここでは“人格”のようなもの)として、「system」「user」「assistant」が設定できるようになっています。このroleを利用して「質問は英語でも、ChatGPTは日本語で回答するように」設定します。
(1)Model:利用するモデルの種類。「gpt-3.5-turbo」を選択
(2)Messages Role-1:「system」と入力
(3)Messages Content-1:ChatGPTに指示を出します。今回は「あなたは優秀なアシスタントです。私はあなたに英語で質問をしますが、あなたはそれに対して日本語で回答してください。」という文章を英語で記入しました
(4)Messages Role-2:「+新しい項目の追加」をクリックすると表示されるので「user」と入力
(5)Messages Content-2:テキストの翻訳の動的なコンテンツから「翻訳されたテキスト」を選択
3-5. アクションの設定:チャネル内のメッセージで応答します
ChatGPTで自動出力した結果をMicrosoft Teamsの指定チャネルに投稿します。
検索窓に「Teams」と入力して、「Microsoft Teams」コネクタを選択します。アクション一覧から「チャネル内のメッセージで応答します」をクリックします。
(1)投稿者:「Flow bot」を選択
(2)投稿先:「Channel」を選択
(3)Message ID:「チャネルに新しいメッセージが追加されたとき」の動的なコンテンツから「メッセージID」を選択
(4)Team:一覧から該当のチームを選択
(5)Channel:「1-1. Microsoft Teamsのチャネル作成」で作成したチャネル名を選択
(6)Message:「Get chat completions」の動的なコンテンツ「First Content」を選択
以上でワークフローが完成しました。最後は忘れずに、「ChatGPT-Teams連携」などわかりやすい名前をつけて保存してください。
4. 実行結果
実際にワークフローを動かしてみましょう。
質問や指示を日本語で、Microsoft TeamsのTeams用チャネルに投稿します。今回は上図の内容を投稿しました。
しばらく待つと、上図のようにChatGPTからの返答がTeamsに投稿されます。Teamsコネクタのトリガーはメッセージ投稿後に即時実行されるわけではないため、実行してから結果が返信されるまで、最大で3分程度かかります。
また、今回の方法では往復の会話(それ以前のやり取りを踏まえた会話)はできず、ワンショットの指示/質問とその回答ということになります。
5. OpneAI GPTコネクタの処理が完了しない場合
まれにMicrosoft Teamsのチャネルに質問を投稿したあと、数分待ってもワークフローの処理が完了しない場合があります。
そのときはPower Automateポータル画面で実行結果の詳細を確認してみてください。赤枠内のように「実行中」になったままのフローの日時をクリックします。
実行履歴でOpneAI GPTコネクタの「表示」をクリックすると、図のような画面が表示されます。
「状態」に「429」と表示されている場合は、OpneAI APIの「無料お試し利用」トークンが残っていなかったり、試用期限が終了していたりして、ワークフロー処理が途中で止まっています。この場合は、有料アカウント(従量課金)を契約する必要があります。
ご自分のアカウントが無料トライアルアカウントかどうかを確認したい場合は、以下のURLからログインしてみてください。「Free trial」と表示されれば無料トライアルアカウントです。
●https://platform.openai.com/account/billing/overview
上記のように実行中のまま停止したワークフローは、実行履歴の詳細ページで「キャンセル」をクリックすることで処理を止められます。キャンセルすると、実行履歴の表示は「取り消し済み」となります。
最後に
OpneAI GPTコネクタを利用することで、ノーコードでMicrosoft Teamsから質問・自動返信する仕組みが手軽に作成できました。トークン数の節約のために質問内容を英語に翻訳する方法も、コネクタを組み合わせることで解決できます。今回のワークフローを参考に、ぜひOpneAI GPTコネクタを他のサービスと組み合わせて活用してみてください。
参考資料
●OpenAI GPT (独立系発行者) (プレビュー)
●【Azure Logic Apps】ChatGPTと話せるLINE Botを開発するハンズオン!~②ChatGPTのトークン消費量を節約
この連載の記事
-
第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で自動化するワークフローを作ろう -
第38回
Team Leaders
生成AIに日本語プロンプトで指示を出し、メールから情報を抽出してもらおう -
第37回
Team Leaders
フォルダー内のすべてのファイルを添付してメールを自動送信するフローを作ろう -
第36回
Team Leaders
ローカルPCのテキストファイルをPower Automateに読み込ませて活用しよう -
第35回
Team Leaders
受信メールの添付ファイルを種類に応じたフォルダに自動保存する -
第34回
Team Leaders
Power AutomateでTeamsのチーム全員にメンションを送る方法 -
第33回
Team Leaders
Power AutomateのCopilotは日本環境でも使えるか? 試してみました - この連載の一覧へ