ユーザー全員の記憶を忘れないAI Chat Bot「メモリアドラゴン」を作った話【Gemini 1.5 Flash】
遊べるDiscordコミュニティへの参加はこちらから!!
メモリアドラゴンについて
みんなの事を覚えるためにDiscordにやってきた赤ちゃんドラゴン
ユーザーが教えたことはすべて鵜呑みにしてしまう
本人は何でも覚えていると思っているが、実際にはよく忘れている
中身の話
Gemini1.5 Flashを用いて、チャット履歴をタグ付けした上で外部のjsonファイルに保存→読み込みし、擬似的な記憶を作り出すコミュニティ向けLLM botを作ってみました
セッションは常に全て新規に始まっています。
上記の会話でシステムプロンプトの部分は一人称が「ぼく」である事ぐらいです。
その他の、惣菜発表ドラゴン構文の部分や、ナルトが好きで、ユーザーが飛段が好きな事などは、チャットを続けたうえで新たに記憶した部分です。
ユーザーがそれぞれ教えたことを大きな記憶として蓄積しつづけ、一個の人格となることを目的としています(大言壮語)
記憶をさせるのに何故これをする必要があるか
「いや、スレッドで良くない?」と思った方もいると思います。
スレッドはこんな面倒くさいことをしなくても記憶を保てますが、弱点として「記憶がどうなってんのかブラックボックスである」事と、「会話を続けているとワンパターン地獄に必ず突入する」、「本格的に忘れさせる手段が全リセットしかない」事があります
まず初めのブラックボックスであることですが、これは長期的に記憶を管理する上ではかなり不安定になってきます
要は訳の分からない事を吹き込む輩がやってきたら、根本的な対処は無いので割と終わります
ニ番目の会話を続けているとワンパターン地獄に突入する事ですが、LLMはスレッドが長くなると確実に同じ口調の同じ話しかしなくなります。
三番目は上記二つへの本質的な対策が、オールリセットして記憶全消去することしかないことです。
そこでこれらスレッドの弱点を全て克服するため、全てを新セッションで始める、バックアップの記憶を外部にタグ付けで出力し読み込みする、タグ付けにより記憶の管理を簡単にする事を試みました
上記のようにDiscord上でタグ管理もできるようにしています
タグで管理しており、記憶管理が一部のみ消去で対応できるので変な記憶で壊れても一部修復で対処できます。
やり始めて思うのは、記憶を持たせるということより、「いらんことを覚えさせない」方が難しいですね。
今のところ数人で回していますが何とか記憶らしさは保てています
その他のお話
日時の概念も取り入れています
主語の無い曖昧な会話も自然につながるようにしています(試行錯誤中)