Difyで遊ぶ - ChatBot編（基本）

# はじめに
Difyが使えるようになったので
ちょっといろいろと機能を試してみよう
Chatbotで遊ぶ

# ChatBot基本
いい具合のあいづちを打ってくれるなべひろくんになってもらおう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/c36286ba-c859-54ca-fac9-9aba9e188c25.png)

# 設定画面
基本的な機能がしりたいのでこんな感じ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/bd54dcaf-434b-a90e-efdb-287bd656f976.png)

出来上がったら更新押せばOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/99de4578-6c5c-fb4a-f493-8038d49e9586.png)

# 試しに動かす
アプリを実行　クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/9a94d0ef-2511-044d-e161-1fac656a3853.png)

ChatGPTみたいな画面が出てきた
Start Chatで始まるようだ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/fb82d05a-498d-53f0-e7bb-e535a4e68a46.png)

やりとりをすすめてみるもあまり手ごたえがない。
プロンプトがよくなかったか。。。
それでもChatGPTみたいなインターフェースが一通りそろっているから
こんだけサクッと作れるならもうこれだけでも十分な気がする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/aedc4360-84b4-16c8-4632-4d0211013188.png)

# 変数を使ってみよう
変数使うんとどんなことができるのかな？試してみよう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/ac620f65-4456-44a6-2128-c88b4c417273.png)

## 「短文」を試す
例えば「短文」を選ぶと設定画面出た。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/378cee33-892e-768d-c121-b41e74e6cb4b.png)

登録したらこんな感じ。
入力フィールドが出た。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/808fe0ff-68da-d62b-3b4a-96dabcad0a86.png)

手順画面に{{name}}みたいに付け加えたら、ユーザー入力フィールドに入力された内容を代入して
うまい具合にプロンプトへ組み込んでくれるようだ。
デバグ画面からどんな感じで使えるのか試せる。助かる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/84146ea4-5e2c-c637-2521-eab8d8b099c6.png)

## 「選択」を試す
「選択」ではプルダウン形式で変数を指定できる。
試しに朝食を考えさせるようにさせたらいい具合の返事が来た
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/fa8e27a6-b957-6493-0a75-1610983afb26.png)

他にも「段落」「数値」が選べるけど大体似たようなもんなのがわかってきたので割愛

# コンテキストで何ができるかな？
コンテキストではドメイン知識を格納できるので専門的な会話ができるっぽい
試してみよう

コンテキストの 追加 をクリックして、 作成に進む クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/88ef021e-1481-27ab-c5ff-7e7b35cf8ccb.png)

3種類（テキストファイル、notion、ウェブサイト）からコンテキストに使う情報を選択できるようだ。
簡単なテキストから選ぼう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/08f8cc1e-5914-d6ff-d924-1f76979819ba.png)

お試しなので～～…こんな感じで癖の強めな食べ物の好みを書いてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/4ae7aacb-5fc0-0b54-716f-9ee84082e77d.png)

で、ドラッグアンドドロップでテキストをアップロード　次へ　クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/97aca634-99e7-e25f-7cdf-2ef0bda5638a.png)

テキストの前処理画面が出た！
自動を選ぶと作成したテキストは一塊で表された
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/9e0e3ba8-aef8-7d5c-f573-91172f59669f.png)

カスタムを選択すると、行ごとで分割されて保管されるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/afe46735-5f2c-8876-144b-c9dbb23c841f.png)

↓↓の説明をみると、この程度であればチャンクを分ける必要もないかなぁ～って思ったので「自動」を選択します

### 補足：チャンクって何？

最高にわかりやすい説明があったので置いときます。

https://zenn.dev/saitaman/articles/acbe79bd3b5e49

この引用がわかりやすかったそのまま置いときます

> チャンクの基本的な発想は大量のデータをより小さく、管理しやすいように分割しLLMに取り込むアプローチ方法になります。

> 感覚的に「ハリーポッターシリーズを全作品ぶっ通して見続けた後に書く感想文よりも、1作品ごとに見てから書く感想文の方が全体としてはいい出来だよね」みたいな話に近いです。

> LLMの文脈ではチャンクは入力データとモデルの出力の両方に適用でき、より効率的な処理とメモリ管理が可能になります。

ドキュメントの作成完了　ドキュメントへ移動　クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/b45ab7ca-66ee-ac55-268b-4dbf0d0c5180.png)

ドキュメントして保管されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/b0ea87eb-a956-89dd-60c4-f1b7241efe3a.png)

## 検索テストする
作成されたコンテキストがちゃんとHITするかテストができるっぽい。
これはいいですねぇ

試した結果がこちら。「厚切り」には反応した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/ecb78176-ea11-d6d5-bf1f-6e823703f080.png)

なぜか「パクチー」には反応しない。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/256eac3a-bd4f-2d34-3629-755108b510c9.png)

なんで反応しないのか調べてみたら・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/1100fbe5-fc63-8ebc-9d8e-05e33c0ebede.png)

キーワードが「大好」「厚切」だけだった。これが理由かも
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/70b54443-5bae-0b77-f0bd-acf1eff9db2a.png)

キーワードは手動で足せるっぽいので試しに「パクチー」入れてみてもう一度検索テストしてみよう
編集ボタンがあるのでそれをクリックしたらキーワード追加できる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/e24ede52-0bbc-f880-c94f-3824b1d782f8.png)

結果割愛するけど検索テストで引っかからなかった。。。
チャンク分けたら引っかかるのかな？４つに分けて再挑戦
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/8b0bcee4-2d0c-1201-4864-f0e08818e691.png)

結果変わらず、「厚切」への反応がいいのは不思議。「パクチー」は意外と反応されなかったのは気になるけど
とりあえず先へ進めよう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/fba6353c-93e3-5b03-734c-db4c772ee90a.png)

スタジオ画面に戻って編集を再開。
保存してなかった。。。のでコンテキストの追加やり直し。さっき追加したドキュメントを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/d9a9f804-6c3b-3228-74a5-f00974bd3839.png)

なんか出た
とりあえずOKクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/7a15fb21-9f06-3ec3-d614-c13ea9d00eb3.png)

できたっぽいので確認してみよう。
結果は～…パクチーは反応してくれなかったけどやっぱり厚切りには反応してくれたｗ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/f22c2885-86f1-fd4f-da3e-1fe3985df264.png)

そんな感じでコンテキストに引っかかるキーワードを出して来たら回答してくれる、ってことですね。
なるほどなるほど勉強になりました。

# 機能の追加について
＋機能の追加　をクリックすると、そのほか機能も使えるようになるっぽい。
このあたりは～～・・・また今度でいいかなって思いました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/416263/11bdda03-80b0-2dc5-074e-3775b093344c.png)

# おわりに
無理して難しい機能を考えなくてもこのChatbotの基本機能だけでも
大体やりたいことはできそうってことがわかりました。

あとは、コンテキストがどんだけ引っかかってくれるんだろうか、ってところが課題な気がしてきた。
ここが腕の見せ所だったりするのかな…？って思いました。