LINE Botで症状から適切な漢方薬をchoice！

こんにちは！小売業で働いているHaMaです🖐

当店では医薬品を扱っており、漢方薬の接客に力をいれております💪
しかし、「従業員がお客さまにどの漢方薬を選べば良いかわからない」という問題が発生しています😱

そこで、症状を聞いたら、適切な漢方薬を教えてくれるLINE Botを作りました！

# LINE Botとのやりとり

:::note info
要約
LINE Botに症状を聞くと、適切な漢方薬を返答してくれます。
:::

<blockquote class="twitter-tweet" data-media-max-width="560"><p lang="ja" dir="ltr">ひとまず、悪くない返答が返ってきたので記事を書きます。<a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a><a href="https://twitter.com/hashtag/LINEBot?src=hash&amp;ref_src=twsrc%5Etfw">#LINEBot</a><a href="https://twitter.com/hashtag/withMake?src=hash&amp;ref_src=twsrc%5Etfw">#withMake</a><a href="https://twitter.com/hashtag/%E6%BC%A2%E6%96%B9%E8%96%AC?src=hash&amp;ref_src=twsrc%5Etfw">#漢方薬</a> <a href="https://t.co/chmFhGhVQS">pic.twitter.com/chmFhGhVQS</a></p>&mdash; HaMa (@HaMa53687932) <a href="https://twitter.com/HaMa53687932/status/1786865230796185814?ref_src=twsrc%5Etfw">May 4, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

最初は、わざわざLINE Botにせず、直接ChatGPTに聞けばよいのでは🤔と思いました。

![chatGPTの返答.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/1b2e6a70-8775-cf0f-6580-d15dd991ee8b.png)

残念ながら、中国語で返答されました🤣
プロンプトを工夫すれば適切に返答してくれるはずです。
しかし、現場では、スマートフォンに不慣れな従業員が使用する予定ですので、今回のLINE Botを作りました。

# 使用したツール

・[LINE Developers](https://developers.line.biz/ja/)
・[ChatGPT](https://openai.com/index/chatgpt)
・[Make](https://www.make.com/en)
・[SSSAPI](https://sssapi.app/)
・Google スプレッドシート

# LINE Botの作り方

Makeを活用してLINE Botを構築し、Google スプレッドシートをSSSAPIでAPI化、それをChatGPTに読み込ませて返答させています。このプロセスにより、ユーザーの知りたい漢方薬を、Google スプレッドシートのデータからChatGPTが判断します。

# Makeの全体像と中身
![MAKE全体像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/cac35569-d7c1-fe2b-d86b-0661d018db47.png)

## API化したGoogle スプレッドシート
![スプレッドシート.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/2d34a6f3-9e48-37e0-e1c0-cf3d6ef51272.png)
行Aに漢方薬名、行Bにその漢方薬の適応症状を記載しました。

:::note warn
注意
行Aと行Bを適切にChatGPTに判断させる必要があります。
列1の文言を工夫しましょう。
この場合、B1が「症状」などだけですと、ChatGPTが判断できません
:::

## HTTPの中身
![http中身.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/cd5f78c9-c6a7-9cc4-a8ea-070f5a4a2b59.png)

Google スプレッドシートをSSSAPIでAPI化し、黒塗りのところにそのAPI URLを入力します。
Makeでは、Google スプレッドシートを直接連携することもできますが、ChatGPTがうまく判断できなかったので、この様にしました。


**SSSAPIの参考記事**

https://qiita.com/ataka2443/items/e476f4eb355e94fb8afd


## OpenAI(ChatGPT)の中身
![chatgpt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/3f0a603d-bcaa-ce86-b895-80653507df02.png)

:::note warn
注意
ConnectionのAddで、OpenAIのAPI Keyが必要になります。
OpenAIのGPT-4などの言語モデルの料金体系は、「1K tokens」=1000トークン当たりの利用料金となっています。
:::

Message 1で、HTTPから情報を読み込むこと、およびユーザーへの返答の仕方の指示を、ChatGPTに出します。
Message 2で、ユーザーがLINEに入力したテキスト（症状）を読み込みます。

## LINE Botの返す内容
![LINEbot返信内容1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/2f4cb623-5c9c-9855-2fe0-dee7c93364d8.png)

ChatGPTが、HTTPの情報をもとに、ユーザーの入力したテキスト（症状）に合った漢方薬を返答します。

# 今後の課題
###### 返答の精度が低い😥
冒頭の動画で、風邪と聞いていましたが、桂枝茯苓丸、杞菊地黄丸、が返答されました。これらの漢方薬は、まず風邪には使いません。現在、考えている改善策は2つあります。

①Google スプレッドシートの情報量を増やす
②OpenAI(ChatGPT)のMessage 1でユーザーへの返答の仕方の指示を工夫する

###### ChatGPTを有効活用できなかった
今回、ChatGPTに聞きながら制作していましたが、うまく活用できませんでした。
![chatgpt活用できない.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3756912/03106ae5-b959-a61e-0181-3da064a28a47.png)
プロンプトがお粗末で、よい返答を得られなかったのが原因です。
結局、自分でQiitaの記事を探したり、時間をかけて制作してしまいました。
今後は、ChatGPTをフル活用し、アジャイル開発できるよう心がけます。