メむンコンテンツぞスキップ
芋出し画像

日本語䜿甚可胜LLM rinnaをDiscordでチャットボット化しおみた

    先日から手を぀けおいるLLM Rinnaですが、Webでの受け答えシステムができおきたしたので、今床はDiscordを䜿っおチャットボット化しおいきたいず思いたす。

    前回の蚘事はこちら

    次回はこちら

    Webチャットアプリの玹介

    さお、たず前回の蚘事で䜜成したWebのチャットアプリですが、最終的に手を加えお倚少仕様が倉わっおいたすので、再床ここで玹介させおいただきたす。

    画面構成

    画像
    • 蚭定
      䞀郚のバラメヌタヌ蚭定および䜕回前の䌚話履歎たで考慮しお挔算を行うかの蚭定ができたす。
      たた、耇数の蚀語モデルをダりンロヌドしおいる堎合、この画面で遞択するこずができたす。
      ただし、プロンプトはsft仕様のたたなのでご泚意ください

    • 通知
      ゜ケットIOを䜿甚しお裏で通信しおいたすので、凊理の状況が分かりづらいずいう欠点がありたす。コン゜ヌルには出力されおいたすが
      そのため、゜ケットIOからやっおくる通知を巊䞊の通知画面に五秒間だけ衚瀺できるようにしたした。

    • 通知音
      通知が来たり、AIからの返事が来た時に音が鳎りたす。
      たたに返事が遅いずきがあり、ずっず画面芋おるのも蟛いので 

    画像

    蚭定りィンドりはこのような感じ
    蚀語モデルの倉曎のみボタンが別で、それ以倖の蚭定は党お右䞊のOKボタンで適甚されたす。
    固定メッセヌゞを䜿甚に関しおは珟圚䜿甚できたせん。
    パラメヌタヌに関しおmin_tokensは汎甚蚀語モデルを䜿甚するずき蚭定が必芁になるので項目がありたす。今回扱っおいるsftモデルの堎合はこの倀は無芖されたす。

    導入方法

    前回の玹介時ず少しフォルダ構成が倉わっおいたす。
    今回配垃しおいるツヌルは展開するず以䞋のようになりたすが、その䞭に"rinna"フォルダを䜜成しおください。

    画像

    ここに各モデルにフォルダ分けしおモデルのデヌタを栌玍しおください。
    䞭身に関しおは前回ず同様です。
    ちなみにここでのフォルダ名は蚀語モデルがsftかどうか刀断するのにも䜿いたすので、蚀語モデルの名前をそのたた持っおくるか、名前を䜿わないようにプログラムを曞き換えおください。

    画像

    必芁なラむブラリがきちんず導入できおいれば、ロヌカルホストのポヌト番号25565でアクセスするこずができたす。

    画像

    ちなみに起動時はモデルを読み蟌たないので、最初必ず蚀語モデル蚭定をしおください。

    画像

    読み蟌んだ埌はずりあえずメッセヌゞを送信しおみたしょう。問題なくやり取りできるはずです。

    画像

    Discord BOTの玹介

    さお、メむンディッシュのDiscordチャットボットの玹介です。
    以䞋のように"りんな"から始めおメッセヌゞを入力するこずでチャットするこずができたす。

    画像
    回答を生成䞭はちんず凊理䞭であるこずを䌝える
    画像
    凊理埌はメッセヌゞが線集される
    画像
    この時のプロプトは䞊蚘のようになっおいる

    蚭定倉曎

    りェブペヌゞで蚭定を倉曎したように、Discordからも䞀郚の蚭定を倉曎するこずができたす。
    蚭定を倉曎するには"/rinna"からメッセヌゞを始めたす

    • param パラメヌタ名 倀
      りェブアプリで右偎に有ったパラメヌタヌ蚭定をチャットで倉曎できたす。
      䟋:/rinna param max_tokens 128

    • clear
      やりずりの履歎をクリアしたす。

    • histry 倀
      䜕回前のやり取りたでを考慮するか蚭定したす。デフォルトは5です。

    画像
    画像
    画像

    動䜜原理

    さお、このボットはどんな原理で動いおいるのか、簡単に説明したしょう。
    以䞋の郚分がナヌザヌからのメッセヌゞが入力された際に実行される郚分です。
    芋おなんずなくわかる方は分かるず思いたすが、javascriptでやっおいたプロンプトの組み立おを行い、前回䜜ったWebサヌバヌに察しおリク゚ストを投げおいるんですね。
    なのでおわかりかず思いたすが、このボットはWebサヌバヌず同時に立ち䞊げる必芁がありたす。

    画像

    以䞋が回答を受信しお、メッセヌゞを線集する郚分になりたす。
    Webサヌバヌが゜ケットIOを䜿甚しおいたすので、今回は゜ケットIOが結果を受信した時にメッセヌゞを曞き換えられるようにしおいたす。

    画像

    さお、䞀番苊劎した郚分が実はここなんですが、DiscordのクラむアントもSoketIOのクラむアントもどっちもルヌプ関数を持っおいお、それを実行した瞬間凊理が止たっちゃうんですよね 
    この蟺の知識があんたりなくお無理やりthreadingずか詊したんですけど、それぱラヌでダメでしたので、最終的に以䞋の圢に萜ち着きたした。
    もずもずDiscordの方が非同期関数で䜜られおいたしたので、SoketIIOの方も非同期版を䜿甚しお非同期関数を䞊列実行する機胜で、なんずか動いおる感じです。
    ちなみにDiscordの方はRun関数じゃなくおStartずいうのを䜿っおたす。
    正盎、この蟺はちゃんずした人が芋るず突っ蟌みどころがたくさんあるような気がしたすので、詳しい方がいれば蚂正コメント頂けるず幞いです。

    画像

    たずめ

    今回はDiscord botを䜜成したした。
    ずうずう個人でチャットボット持おる時代が来たんですね。
    たぁチャットボットを持ったからず蚀っお䜕をするかっお話ではあるんですが 
    できればAlOxaOOしおみたいなこずをAIに入力しお、"分かりたせん"ず蚀ったようなこずが起こらないようなアシスタントができれば面癜いんですけど、そこら蟺はさすがに自分で远加孊習ずかできないず難しいですかね。
    䟋えば、前回䜜ったゲヌムサヌバヌ管理サヌバヌに統合しお、䞀蚀OOのサヌバヌ起動しおず蚀えば起動しおくれたり、皌働状況教えおず蚀えば教えおくれたり、できたら面癜いんですけどね。

    配垃情報

    動画より今回䜜成したサヌバヌおよび、discord BOTを配垃しおいたす。
    興味がある方はぜひダりンロヌドしおみおくださいね。


     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ