こんにちは!逆瀬川 ( https://twitter.com/gyakuse ) です。
今日はメールの自動返信作成をMake(ツール連携サービス)を使ってやってみたいと思います。
※MakeとはZapierやIFTTTと同じIPaaS系のサービスです。
参考
概要
Gmailに来た新着メールをMakeとChatGPT APIを使い返信文章候補を作成します。
そもそもできそうかの確認
OpenAIのChatGPT API Playgroundを使って、これができるか確認してみます。
なお、text-davinci-003はChatGPT API(gpt-3.5 turbo)の10倍の価格なので、今回は用いません
追記: 脳死で書いてたのであれですが、MakeはまだChatGPT APIに対応していないのでtext-davinci-003を使います。
以下のようなプロンプトを実行しました
以下のビジネスメールの重要度を5段階評価し、内容を要約し、返信を作成してください
Sender: 株式会社クローズドAI
Address: contact@closedai.com
Subject: 美味しさに感動した牛乳について
Content: 尊敬するホゲホゲ乳業の皆様
私は先日、貴社の牛乳を購入しました。その牛乳を飲んで、その美味しさに感動しましたので、このメールをお送りさせていただきました。
私が購入した牛乳は、濃厚でクリーミーな味わいが特徴的でした。牛乳本来の風味がしっかりと感じられ、まるで牧場で生産されたような本格的な味わいに感じました。また、何よりも口当たりがとても滑らかで、飲みやすかったです。朝食に飲む牛乳は、私にとって欠かせないものですが、この牛乳は朝から幸せな気分にしてくれました。
今までいくつかの牛乳を試してきましたが、今回購入した牛乳は、断トツで一番美味しい牛乳だと思います。このような素晴らしい製品を作っている貴社に敬意を表し、このメールを送らせていただきました。
今後も、貴社の製品に注目していきたいと思います。この度は、素晴らしい製品を提供してくださり、誠にありがとうございました。
重要度と要約と返信案:
今回はSystemは空とします。以下のように返答が生成されました。
重要度:3
要約:クローズドAI社がホゲホゲ乳業に送った、美味しい牛乳についての感謝のメール。
返信案:尊敬するクローズドAI様、貴重なご意見ありがとうございます。私たちは、美味しい牛乳を提供することを目指して日々努力しています。今後も、より良い製品を提供できるよう努めてまいります。また、クローズドAI様にもご満足いただける製品を提供できるよう、社員一同精進してまいります。この度は、誠にありがとうございました。敬具
よさそうなので使っていきます。
Make Integration
Gmailモジュール(メールの受信処理)
Makeに登録して新しいシナリオを作ります。
中央の追加ボタンをクリックして、Gmailを選択します。
メール受信のtriggerを選びます。
Gmailアカウントと接続します。
自分の場合は個人のGoogleアカウントとの接続だったため、以下のドキュメントに従い、
Google Cloudで専用のプロジェクトを作り、Gmail APIを有効化し、OAuth画面を作成します(ここが一番めんどくさいです)。
Google Cloudで専用プロジェクトを作り、Gmail APIを有効化しOAuth画面を作成する方法
基本的には以下を参考に進めれば大丈夫です。念の為日本語で書きます。
まずGoogle Cloudにアクセスします。
上部の「プロジェクトを作成」をクリックして適当な名前でプロジェクトを新規作成します(わたしはforMakeという名前にしました)。
トップに戻り、左上のメニューをクリックし、さきほど作成したforMakeを選択します。これで現在のプロジェクトが切り替わります。
次に以下URLへ飛び、Gmail APIを有効化します。
次にOAuth同意画面を作成します。以下URLへ飛び、外部を選択。
アプリ名にMake、ユーザーサポートメールに自分のメールアドレス、
承認済みドメインに以下のドメインをそれぞれ追加、デベロッパーの連絡先に自分のメールアドレスを追加してください。
- integromat.com
- make.com
他の情報は空白で大丈夫です。終わったら一番下の「保存して次へ」をクリックします。
次にスコープを追加します。
「スコープを追加または削除」をクリックし、下にあるスコープの手動追加欄のテキストボックスに以下を貼り付けます。
https://mail.google.com/
https://www.googleapis.com/auth/gmail.labels
https://www.googleapis.com/auth/gmail.send
https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.compose
https://www.googleapis.com/auth/gmail.insert
https://www.googleapis.com/auth/gmail.modify
https://www.googleapis.com/auth/gmail.metadata
https://www.googleapis.com/auth/gmail.settings.basic
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/drive.readonly
「テーブルに追加」をクリックすると反映されます。
終わったら更新ボタンを押してください。
「保存して次に」をクリックし次へ進みます。
テストユーザー画面では、「Add Users」をクリックし、自分のメールアドレスを追加します。
「保存して次に」をクリックすると、ステータスの確認ができます。問題なければ一番下の「ダッシュボードに戻る」をクリックしてください。
次に、以下URLの認証情報の画面で、認証情報を作成をクリックします。
OAuthクライアントIDを選択してください。
アプリケーションの種類にウェブアプリケーションを選び、承認済みのリダイレクトURIに以下を追加します。
https://www.integromat.com/oauth/cb/google-restricted
追加したら作成ボタンを押してください。
完了すると、以下のような画面になります。
このクライアントIDとクライアントシークレットを使います。
Gmailモジュール(メールの受信処理)(続き)
先程のMakeの画面でAddボタンを押します。
詳細設定をクリックします。
クライアントIDとクライアントシークレットを入れるフォームが出てくるので、さきほど保存しておいたそれらを貼り付けます。貼り付け終えたらSaveします。
SaveするとGoogleの認証画面になります。アカウントを選ぶと、以下のような注意が表示されます。自分がさきほど作った認証画面なので、続行を押します。
フォルダ、Criteria、Maximum number of resultsをいじってokを押します。
自分はフォルダにInboxを選びました。
Choose Where to start は From now onにします。
完成したGmail Moduleの右に生えるボタンを押して次のモジュールを追加します。
GPTモジュール
追加ボタンを押し、Add another moduleをクリックします。
OpenAIと入力し、選択します。
Create a Completionを選択します。
アカウントの追加画面です。Addを押します。
https://platform.openai.com/account/api-keys
OpenAIの鍵を新しく作り、貼り付けます。
貼り付けたらsaveします。
Modelはtext-davinci-003を選択し、プロンプトに以下を貼り付けます。
Sender:
Address:
Subject:
Content:
重要度と要約と返信案:
以下の矢印のそれぞれをドラッグアンドドロップで配置します(赤くハイライトされている部分はドラッグ可能です)。
貼り付けると以下のようになります。
Max Tokenに1024, Temperatureに0.7と入れます。
全体像がこちらです。
なお、この実装だとText Contentを含め4096tokens以上の場合死ぬので、substring関数を選び、Text Contentを1000文字に収めます。
以下のように修正します。
OKを押して次に行きます。
Discord Module
追加ボタンを押下後、Discordと入力すると以下が候補として出てくるのでクリックします。
Send a Messageを選択します。
アカウント画面でAddを押すと以下が出てくるので、Saveを押します。
Discordのログインをして、認証します。
Choose a Methodで Send a Message to a Channelを選び、
Channel IDに任意のチャンネルを選びます。
Message欄に以下を貼り付けます。
New Message
From:
===
さきほどと同様、貼り付けていきますが、Choicesは▼を押して中のtextを貼り付けてください。
choices[
]text
となっているので、そこに1という文字をいれます(API使ったことある人は0を入れてしまうと思いますが、これだとエラーで1だとOKです)。
全体像は以下です。
最後にScheduleをONにして完了です。
確認
ちゃんと動いているかDiscordで確認します。
後記
実は今回はじめてMakeを使ったのですが、30分くらいの作業でメール返信自動化(候補作成まで)を行えました。
もっと頑張りたい場合、メール分類用のGPT-3.5の処理を入れて、問い合わせだったら、予定調整だったら、宣伝と思われるものだったら、みたいに分岐させるとよいです。