ChatGPTとMakeを使ってGmailの返信を自動化してみる

![•_Discord____ai___なんでもかんでもやればいいってわけじゃない.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/03beab15-163f-3138-817e-d9b30a226625.png)

こんにちは！逆瀬川 ( https://twitter.com/gyakuse ) です。
今日はメールの自動返信作成をMake(ツール連携サービス)を使ってやってみたいと思います。

※MakeとはZapierやIFTTTと同じIPaaS系のサービスです。

## 参考

https://twitter.com/hiraoka_dx/status/1631987817722294272

## 概要

Gmailに来た新着メールをMakeとChatGPT APIを使い返信文章候補を作成します。

## そもそもできそうかの確認

OpenAIのChatGPT API Playgroundを使って、これができるか確認してみます。
~~なお、text-davinci-003はChatGPT API(gpt-3.5 turbo)の10倍の価格なので、今回は用いません~~
追記: 脳死で書いてたのであれですが、MakeはまだChatGPT APIに対応していないのでtext-davinci-003を使います。

https://platform.openai.com/playground?model=text-davinci-003

以下のようなプロンプトを実行しました

```
以下のビジネスメールの重要度を5段階評価し、内容を要約し、返信を作成してください

Sender: 株式会社クローズドAI
Address: contact@closedai.com
Subject: 美味しさに感動した牛乳について
Content: 尊敬するホゲホゲ乳業の皆様

私は先日、貴社の牛乳を購入しました。その牛乳を飲んで、その美味しさに感動しましたので、このメールをお送りさせていただきました。

私が購入した牛乳は、濃厚でクリーミーな味わいが特徴的でした。牛乳本来の風味がしっかりと感じられ、まるで牧場で生産されたような本格的な味わいに感じました。また、何よりも口当たりがとても滑らかで、飲みやすかったです。朝食に飲む牛乳は、私にとって欠かせないものですが、この牛乳は朝から幸せな気分にしてくれました。

今までいくつかの牛乳を試してきましたが、今回購入した牛乳は、断トツで一番美味しい牛乳だと思います。このような素晴らしい製品を作っている貴社に敬意を表し、このメールを送らせていただきました。

今後も、貴社の製品に注目していきたいと思います。この度は、素晴らしい製品を提供してくださり、誠にありがとうございました。

重要度と要約と返信案:
```

今回はSystemは空とします。以下のように返答が生成されました。

```
重要度：3

要約：クローズドAI社がホゲホゲ乳業に送った、美味しい牛乳についての感謝のメール。

返信案：尊敬するクローズドAI様、貴重なご意見ありがとうございます。私たちは、美味しい牛乳を提供することを目指して日々努力しています。今後も、より良い製品を提供できるよう努めてまいります。また、クローズドAI様にもご満足いただける製品を提供できるよう、社員一同精進してまいります。この度は、誠にありがとうございました。敬具
```

よさそうなので使っていきます。

## Make Integration

### Gmailモジュール(メールの受信処理)

Makeに登録して新しいシナリオを作ります。

![My_Team___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/5cd15484-4c4e-afeb-79d7-4afc62a72238.png)

中央の追加ボタンをクリックして、Gmailを選択します。

![New_scenario___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/8f13c501-9c09-883c-9056-e7a0553e531d.png)

メール受信のtriggerを選びます。

![New_scenario___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/06a35229-9a2f-2ef1-5f3d-87fc37937466.png)

Gmailアカウントと接続します。
自分の場合は個人のGoogleアカウントとの接続だったため、以下のドキュメントに従い、
Google Cloudで専用のプロジェクトを作り、Gmail APIを有効化し、OAuth画面を作成します(ここが一番めんどくさいです)。

### Google Cloudで専用プロジェクトを作り、Gmail APIを有効化しOAuth画面を作成する方法

基本的には以下を参考に進めれば大丈夫です。念の為日本語で書きます。

https://www.make.com/en/help/connections/connecting-google-services-using-a-custom-oauth-client

まずGoogle Cloudにアクセスします。

https://console.cloud.google.com/cloud-resource-manager

上部の「プロジェクトを作成」をクリックして適当な名前でプロジェクトを新規作成します(わたしはforMakeという名前にしました)。

トップに戻り、左上のメニューをクリックし、さきほど作成したforMakeを選択します。これで現在のプロジェクトが切り替わります。

![ようこそ_–_My_First_Project_–_Google_Cloud_コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/e50782bd-5431-195f-65f2-40927d30ba44.png)

次に以下URLへ飛び、Gmail APIを有効化します。

https://console.cloud.google.com/marketplace/product/google/gmail.googleapis.com

![Gmail_API_–_マーケットプレイス_–_forMake_–_Google_Cloud_コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/74f18019-2d91-fc79-42df-5586301f9ef4.png)

次にOAuth同意画面を作成します。以下URLへ飛び、外部を選択。

https://console.cloud.google.com/apis/credentials/consent

アプリ名に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を選択してください。

https://console.cloud.google.com/apis/credentials

![認証情報_–_API_とサービス_–_forMake_–_Google_Cloud_コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/18a15e69-b191-8296-9430-b5b1ff299fef.png)

アプリケーションの種類にウェブアプリケーションを選び、承認済みのリダイレクトURIに以下を追加します。

`https://www.integromat.com/oauth/cb/google-restricted`

追加したら作成ボタンを押してください。
完了すると、以下のような画面になります。

![認証情報_–_API_とサービス_–_forMake_–_Google_Cloud_コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/b81ecd15-7aa2-4c39-f2b1-89c5e0e9e786.png)

このクライアントIDとクライアントシークレットを使います。

### Gmailモジュール(メールの受信処理)(続き)

先程のMakeの画面でAddボタンを押します。

![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/47d70b29-7214-14c7-3be6-a6c89f4886b8.png)

詳細設定をクリックします。

![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/ace0cb73-4574-fc4e-b612-0b69368de05e.png)

クライアントIDとクライアントシークレットを入れるフォームが出てくるので、さきほど保存しておいたそれらを貼り付けます。貼り付け終えたらSaveします。

SaveするとGoogleの認証画面になります。アカウントを選ぶと、以下のような注意が表示されます。自分がさきほど作った認証画面なので、続行を押します。

![ログイン_-_Google_アカウント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/ee286276-b356-8cfb-2d3d-82115b6546ef.png)

フォルダ、Criteria、Maximum number of resultsをいじってokを押します。
自分はフォルダにInboxを選びました。


![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/9a111baa-0e70-8efc-b5bd-5d1cae249ecf.png)

Choose Where to start は From now onにします。
完成したGmail Moduleの右に生えるボタンを押して次のモジュールを追加します。

![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/55eb0d8a-d1f4-72dd-f674-2b64f8f86870.png)

### GPTモジュール

追加ボタンを押し、Add another moduleをクリックします。

![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/487adb7a-b5d8-a0c5-e2c8-9733b4224c47.png)

OpenAIと入力し、選択します。

![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/38513869-4af8-6da7-0f27-eed7ea02e730.png)

Create a Completionを選択します。

![Integration_Gmail___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/fd1f996a-81ac-4a1c-afc7-23bdaf34a6c4.png)

アカウントの追加画面です。Addを押します。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT____Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/0c4dc2ad-a8b0-85b9-00c7-20b4fb76ab40.png)

https://platform.openai.com/account/api-keys
OpenAIの鍵を新しく作り、貼り付けます。

貼り付けたらsaveします。

Modelはtext-davinci-003を選択し、プロンプトに以下を貼り付けます。


```
Sender: 
Address: 
Subject: 
Content: 

重要度と要約と返信案:
```

以下の矢印のそれぞれをドラッグアンドドロップで配置します(赤くハイライトされている部分はドラッグ可能です)。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT____Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/6731a545-efdc-6925-b72e-d2b371e34cb9.png)

貼り付けると以下のようになります。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT____Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/df3bb5c6-e8e1-1f78-6bfe-e11009ec1b8d.png)

Max Tokenに1024, Temperatureに0.7と入れます。
全体像がこちらです。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT____Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/cf491d2a-d108-cb94-17bc-11c00d2d04db.png)

なお、この実装だとText Contentを含め4096tokens以上の場合死ぬので、substring関数を選び、Text Contentを1000文字に収めます。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT___Discord___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/968d8d10-da74-be8f-76da-df6858b4771e.png)

以下のように修正します。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT___Discord___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/cd55af6b-a2d9-8e18-852a-d485dbb366fb.png)

OKを押して次に行きます。

### Discord Module

追加ボタンを押下後、Discordと入力すると以下が候補として出てくるのでクリックします。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT____Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/43ffc52d-a579-5399-e22d-8f042cd6d7b7.png)

Send a Messageを選択します。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT____Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/fcf49583-a6f3-9506-c599-9853b0f09665.png)

アカウント画面でAddを押すと以下が出てくるので、Saveを押します。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT___Discord___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/95fbd256-b64f-992c-1949-6b278de5bb14.png)

Discordのログインをして、認証します。

![Discord___アカウントへのアクセスを許可します.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/6971f479-af3f-3631-64ba-0d71124465dd.png)

Choose a Methodで Send a Message to a Channelを選び、
Channel IDに任意のチャンネルを選びます。

Message欄に以下を貼り付けます。

```
New Message
From:

===

```

さきほどと同様、貼り付けていきますが、Choicesは▼を押して中のtextを貼り付けてください。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT___Discord___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/1af85735-def8-f712-e151-b95c80f77d32.png)

`choices[` `]text` となっているので、そこに1という文字をいれます(API使ったことある人は0を入れてしまうと思いますが、これだとエラーで1だとOKです)。
全体像は以下です。

![Integration_Gmail__OpenAI__DALL-E___ChatGPT___Discord___Make.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/8587d419-5d34-0527-92e8-6a796a9eadc0.png)

最後にScheduleをONにして完了です。

## 確認

ちゃんと動いているかDiscordで確認します。

![•_Discord____ai___なんでもかんでもやればいいってわけじゃない.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958603/03beab15-163f-3138-817e-d9b30a226625.png)

## 後記

実は今回はじめてMakeを使ったのですが、30分くらいの作業でメール返信自動化(候補作成まで)を行えました。
もっと頑張りたい場合、メール分類用のGPT-3.5の処理を入れて、問い合わせだったら、予定調整だったら、宣伝と思われるものだったら、みたいに分岐させるとよいです。