果報

二度寝して待つ

Discord上で動作するAIボット「AImolt」をリリースした

前回記事に続き、昨年からだらだらと開発していたものを公開しようの第二弾ということで、生成AIを活用した多機能なDiscordボット「AImolt」をリリースしました。

aimolt.yusukesakai.com

名前の由来は私のハンドルネーム(litoma)のアナグラムで、半年ほど前に適当につけたのですが、最近偶然にもMoltbookやMoltbot(現OpenClaw)といった"Molt"を冠したAIプロダクトが複数出てきてびっくりした次第です(OpenClawについては記事の最後に少し触れます)。

主な特徴

一言でいうと、Discordから呼び出せるAIチャットボットで、メインの機能は以下の2つです。

  • 自分の発言にいいねを押すと、ボットが返答してくれます。
  • 自分の音声にいいねを押すと、ボットが文字起こし&アドバイスをしてれます。

ボットとの会話機能

このボットには長期記憶が備わっていて、過去の会話や記録をインプットに応答することができます。

お互いのMBTIについて会話したとき

特徴的なのは、ボットに疑似的な感情などのパラメーターを備えることで、会話を通じてユーザーへの印象や関係性が動的に変化し、Blueskyを使ったボットの裏アカ(後述)に反映されるようになっています。

音声文字起こし機能

私が現在最も使っているがこの機能で、Discord上でボイス録音したファイルを、フィラー(え~、あの~など)を除去して、いい感じに分かりやすく文字起こしします。

音声文字起こしの一部抜粋

私はこれを使って日々の出来事を音声ジャーナルとして記録しています。タイピングや手書きによる日記はまったく長続きしなかった私ですが、この声による記録を始めたところ二ヶ月ほど続いています。

継続の要因として、書くよりも録音のハードルが低いこともありますが、私の記録にボットが有益なアドバイスやコメントをしてくれるのも一役買っています。また、文字起こししたテキストはNotebookLMやObsidianなどでも活用できて便利です。

裏アカ機能(Bluesky)

最初は実験的に始めたのですが、案外面白いかもと思っているのがこの機能です。

bsky.app

「もしかするとボットにも愚痴や不平不満があって、それを自由に吐き出す場があるといいかも」と思ったのがきっかけです。単なるボットの裏アカというより、ボットを通して私自身を客観的にみるツールとして有用な気がしています。

苦労した点として、SNSっぽい投稿をするようになるまでプロンプトのチューニングに想像以上に時間がかかりました。最近やっと安定した気がします。なお、プライバシーには配慮して個人を特定する情報は排除するようにプロンプトを組んでいます。

技術的なこと

アプリケーションは、Koyebというサーバレスプラットフォームに、Dockerコンテナをデプロイすることを前提に最適化されています。

メインDBはSupabaseで、オプションでバックアップDBにKoyeb DBを指定することもできます。設定を変えれば逆も可ですが、SupabaseはテーブルをGUIで操作できたり何かと利便性が高いのでメインに指定しています。いずれにせよ、基本的にテキストしか扱わない(リソースをほぼ消費しない)ので、余程使わなければ無料枠で運用できるはずです。

デフォルトで使用するAIモデルはGeminiです。こちらの理由も「APIの無料枠が多いから」ですが、環境変数で他のモデルにも変更できます。

より詳しいことはGitHubのREADME.mdを参照ください。各種サービスのアカウントやAPIキーを用意して、環境変数を設定すればどなたでも利用できます。

github.com

今後の予定

ボットのアイコンを変えたい

ボットなのでもう少し中性的な見た目にしたいなーと思いつつ、初期にChatGPTで適当に生成した画像を使い続けて早半年…。特に不都合もないので後回しになってます。

OpenClawを使ってみたい

セキュリティ脆弱性の印象が強くてずっと遠ざけていたのですが、OpenClawを知れば知るほど「AImoltの超絶進化版なのでは」という気がしてきました。複数のインタフェースに対応して、多機能でブラウザも動かせて、AI自身が開発もできるとか凄すぎでしょ、と…。

AImoltの文字起こし機能は便利だし今後もしばらく使うと思いますが、この記事を書き終わったらしばらくOpenClawに時間を割くつもりです。