はじめに
最近Difyというサービスが大盛り上がりです。
ノーコードで、複雑なLLMのフローを簡単に作成することができ、
例えば、こんな複雑なフローもものの10分程度でパパッと作ることができました。
「質問入力」=>「Google検索」=>「検索結果をgptにまとめさせる」
さらにすごいのは、「公開する」ボタンを押すと、URLが発行され、それを人に共有することが出来ます。
GPTsは無課金ユーザーには勧めにくい、という大きな欠点があったが、それが補完されている形ですね。
さらに、なんと、このワークフローはAPI経由でも使うことが出来るので、LINEBotなどの日常の使いやすいツールに組み込むことが出来ます!!!
実装
事前準備
こちらの記事を参考に、自分のアプリケーションが作ってある状態から記事が始まります!
また、MakeとLINEBotを繋げる方法についても割愛します。
以下の記事なんかを参考に、おうむ返しLINEBotを作っておいてください。
Difyの操作
DifyのAPIキーを取得する
作成したワークフローの左側のサイドバーの「APIアクセス」を選択し、右上の「APIキーボタン」を押し、
APIシークレットキーを入手する
withMakeの操作
事前準備
MakeとLINEBotを繋げる方法についても割愛します。
以下の記事なんかを参考に、おうむ返しLINEBotを作っておいてください。
最終的な全体像
まずは最終的な形です。LINEモジュールが二つ並んでいるところに、HTTPモジュールとJSONモジュールを追加していきます。
HTTPモジュールの設定
HTTPモジュールの「make a request」を追加する
最終的には以下のように設定します。
URL:https://api.dify.ai/v1/workflows/run
Method:POST
Headers
Content-Type:application/json
Authorization:Bearer あなたのDifyのAPIキー
Body type:Raw
Content type:JSON(application/json)
Request content:{
"inputs":{"Difyの開始モジュールで設定した変数名":"{{1.events[].message.text}}"},
"response_mode": "blocking",
"user": "abc-123"
}
Request contentのinpustの中はDifyの「開始」で設定した変数名です。
Difyを記事の通りに設定した場合は「Input」になります。
userはなんでもいいみたい
が、JSONのパース用にデータを取りたいので、Request contentのInputの中身を固定文字列にして単体で動かしてデータを取得します。
{
"inputs":{"Difyの開始モジュールで設定した変数名":"Difyってなに?"},
"response_mode": "blocking",
"user": "abc-123"
}
HTTPモジュールを右クリックし、「Run this module only」を選択
データを入手できたら、Request contentのInputの中身を忘れずに修正しましょう。
{
"inputs":{"Difyの開始モジュールで設定した変数名":"{{1.events[].message.text}}"},
"response_mode": "blocking",
"user": "abc-123"
}
JSONモジュールの設定
JSONモジュールのparseを選択し、Data structureの「Add」ボタンを押し、「generate」に先ほどのDataをコピペ。
するとDifyからのデータを分解して扱うことができます。
LINEBotの返答として使いたい部分は、outputsのtextの中に入っています。
LINEモジュールの設定
あとは、LINEBotの返信内容をJSONモジュールのoutputs: textを指定して完了です!
完成
LINEBotに質問するだけで、検索していい具合に返してくれるというとても実用的なのがあっという間にできちゃいました!
無料だと、検索APIが月に100件だけ(2024/5/8現在)という制限がちょっときついですが、
Difyは他にもいろんな機能があって、会社のマニュアルなんかをベースに応答するチャットボットなんかもパパッと作れちゃうので、いろいろ試してみると面白いでしょう!!
いろいろ試してみてください!