chatGPTとn8n使ってカウンセリングしてくれるdiscord botを作った件
https://scrapbox.io/files/658e9e8f0881ca0024192724.png
背景
tl;dr
ociのインスタンスが消えたついでに、n8nを新しいバージョンに更新したらLLM chainノードなるものが使えるようになってた 定期的にdiscordから体調を聞いてくれて、それをnotionに記録するシステム
n8nで実装したが、結構しんどかった これノーコードでやる意味ある…?
正直、アプリ連携周りが面倒でなければコードでやりたかった
https://scrapbox.io/files/658e9dd50afe470024a7c5f7.png
青は天気や気温、睡眠時間などの、外的要因を記録してくれる部分
赤はカウンセリング部分
茶色はデータ生成・文章生成の部分
水色・黄色はdiscordの会話部分 結構実装がしんどかった(やってることは一定時間ごとにチャンネル内のメッセージとってきて該当ユーザーの物かを確認してjsonに変換してるだけ)
chatGPTには、jsonでデータを書き出し&会話文を生成するように指示(モデルは3.5-turbo-1106 3.5-turbo-16kにした; 一回分のtoken見たら10k超えてたので)https://scrapbox.io/files/658e9e79adb74a0024a3d647.png
会話が続行してるか否かをchatGPT側で判断させ、終了していれば条件分岐→リアクション追加&データ記録
そのために、文章のみの生成だけではなく、n8n側で条件処理するためにjsonでラップしなければならなかった
結論
割とすんなり実装出来た
「会話が終了したか否か」を判断させるために、もう少し条件が必要っぽい?(たいてい1文で終わってしまっている;複数行会話するのも面倒ではあるけれど)
Discordでのユーザー対話部分については、別途ワークフロー化して置いたほうが再利用できそう
個人的に、n8nがデフォのdiscordノードを充実しだしてて有難かった。
スレッド作れるようになったり、対象チャンネル・ユーザーからのアクションイベントを待機できるノードが追加してくれると、すっごい嬉しい(やろうと思ったらwebhook使わないといけないかもだけど)。