頭脳はスプレッドシート! 店舗用お問合せAI LINE Botを作ろう

この記事は、[AEON Advent Calendar 2023](https://qiita.com/advent-calendar/2023/aeon)の5日目です🎄

https://qiita.com/advent-calendar/2023/aeon

昨日の記事 by @hikkie さん

https://zenn.dev/aeonpeople/articles/4c42f68d649316

こんにちは！AEONグループで働く[おきなか](https://twitter.com/okinakamasayos1)です！
グループの中ではLINE Botを活用している店舗も多いため、**書き換え可能なスプレッドシート内の情報を、AIがいい感じに回答してくれるお問い合わせLINE Bot**を作りました🤭

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/605ac6cd-c541-f0e4-0871-16976659dbd4.png)

- 『営業時間：10時～22時』と書き込んでおくと、「夜遅くに行っても大丈夫？」など、直接『営業時間』がキーワードとして質問に入っていなくても適切に回答してくれます。

- 『魚売り場：4番通路』との情報に対し「Where fish space」などの英語質問にもきちんと回答。

- データベース(スプレッドシート)にない問い合わせがあった場合は、『そちらにはお答えできません お急ぎの場合は当店のカスタマーサービスまでお問合せ下さい』と回答します。

ChatGPT優秀。

## LINE AI応答メッセージのサービス終了…

実はLINEで「AI応答メッセージ」という似たようなデフォルトサービスがあり~~ます~~ました。

AI応答メッセーとは、**AIが質問の内容を判断して適切なメッセージを自動返信する機能**で
特定のキーワード設定をしなくても、相手の質問内容に沿った自動返信を高確率で行えます。
あいさつ・使い方・お礼・応答不可・クレーム・お問い合わせ
などを設定しておくだけで、**24時間365日年中無休でAIが自動返信**してくれます。

https://lme.jp/media/line/response-message/



が

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/65a0228d-dea6-73d4-46d9-f9a4bb94a8fc.png)

ということで、汎用性のあるAI LINE Botを自ら作っていきます。
<font color="Red">**「あ、それくらいなら自分たちで作れますよ」がAEONには沢山いるんです☺**</front>

## 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/afbc39b5-d520-03a6-4fc2-b27876481edc.png)

LINEのメッセージ受信をトリガーに、あらかじめスプレッドシートに書き込んである情報を読み込んでChatGPTが処理し、ユーザーに適切な回答を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/c0ad1ecc-8072-13e2-a7d8-e05e3db6a03f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/605ac6cd-c541-f0e4-0871-16976659dbd4.png)

## make(旧integromat)でノーコード作成

makeというノーコードツールを使います

https://eu1.make.com/

基本的なLINEBotの作り方などは[こちら](https://qiita.com/okinakamasayoshi/items/07a6b2c41fb6d50dbd5e)をご覧ください

https://qiita.com/okinakamasayoshi/items/07a6b2c41fb6d50dbd5e

### Google Sheets モジュール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/6559a1df-a06c-3f2e-a8da-8bbf2e527231.png)

予め作成しておいた、スプレッドシートのA-Dの情報を全て読み込むよう設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/c0ad1ecc-8072-13e2-a7d8-e05e3db6a03f.png)

Text aggregatorモジュールで読み込んだ情報を整形。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/3a75af9d-930d-2134-520c-90613ab1b11a.png)

### Open AI モジュール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/8c53eca3-a8bf-f593-11a6-b56ba1be2cf7.png)

モデルは4.0以上を使用

:::note warn
プロンプト

#指示
あなたはスーパーマーケットの案内Botです
ユーザーからの問いかけに対して前提条件を参考に 正確に回答してください

#ルール
前提条件に含まれない質問の場合は
「そちらにはお答えできません お急ぎの場合は当店のカスタマーサービスまでお問合せ下さい」と返信してください

#前提条件
[Text aggregatorで整形したtext]
:::

## 工夫した点
### モデルは4.0以上を使う

`3.5-turbo`などのモデルでは「前提条件に含まれない場合は〇〇と返信して」と指示していても、前後の文脈から勝手に判断して、嘘情報を回答します。4.0だと上記プロンプトで問題ありませんでした。

### スプレッドシートのフォーマットをGPTが読み込みやすいように

仕組み上、スプレッドシートの情報をガバッとまとめて一つの情報としてGPTに送り込んでいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/82b45775-61d8-f294-8cb3-34321de72967.png)

| 項目 | 情報 |
|----------|----------|
| 営業時間 | 9時～22時 |
| 住所     | 〒123-4567 東京都渋谷区1-2-2 スーパー… |

とスプレッドシートに書き込んだ場合

`営業時間9時～22時住所〒123-4567東京都渋谷区1-2-2スーパー…`

と、単語単語の切れ目がない状態となりうまく情報を引き出せないことがあったので、
あらかじめB列とD列に「:」「,」と書き込んでおくことで

`営業時間:9時～22時,住所:〒123-4567東京都渋谷区1-2-2,スーパー…`

と一つ一つの情報を区切ってGPTに読み込ませています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/c0ad1ecc-8072-13e2-a7d8-e05e3db6a03f.png)

### Glideでデータベースも見れるように

とはいえGPTが間違う可能性もあるので、正確なデータベースも見れるようにします。
データベースのスプレッドシートをGlideでWebアプリ化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/89cf8259-1e88-56ae-5c61-3c9795612d1e.png)

リッチメニューで1タップでアクセスできるように設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/205f7fb0-ff73-7ef1-a317-faf9f346572d.png)

基本はAIが回答してくれますが、正確な情報にもアクセスできるようにしました。

## 最も多い問い合わせはこれだろう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793443/da091379-dd9e-a831-b4c1-a5de4cec4cbb.png)

明るく返答できるように設定してみました。

GPTはイラっとしないから偉いなぁ🤭

## まとめ

キーワードが一致しなくてもいい感じに回答してくれるので、むしろAI応答メッセージよりも優秀だ。スプレッドシートの内容を書き換えるだけで、小売業に限らず色々な店舗やサービスで利用できるので、ぜひやってみてね！
<br>

スプレッドシートサンプル

https://docs.google.com/spreadsheets/d/1nazKexrKAmrwL59XGgmZywvAOo5pRIji8eB38ztTO1I/edit?usp=sharing

明日は @Tocyuki さん！ぜひともお読みください！<font color="Red">**AEONわいわい☺**</front>

https://qiita.com/advent-calendar/2023/aeon