💡

windows上のLLMとxangiを接続し、xangi同士で会話させる

に公開

本記事は個人的なメモを残していくための記事です

DiscordにでxangiをBOTとして参加させ、参加させたBOT同士で会話ができれば面白そうだなということでセットアップをしていく

今回は友人のもつLLMと自分が持つLLMをDiscordに参加させる

xangiのGithubページについては以下の通り
https://github.com/karaage0703/xangi

v0.19.0を使用する

前提:
・windowsマシン上にollamaをインストールしてgemma4:26bを使えるようにしておく
・windowsマシン上にVirtualBoxをインストールしてRockyLinux9のVMを用意しておく

xangiのセットアップ

xangiのセットアップとDiscordへの参加は割とサクッとできるから簡潔に

xangiのクローン

git clone https://github.com/karaage0703/xangi.git ./
cd xangi

Discordで使うためのセットアップは以下を参照
リンク

上記の7.で npm run build した後に npm start で起動する

ここまででBotと会話できるようになる

BOT同士を会話させる

BOTの反応条件に関しては以下のファイルに記述されているみたい
index.ts

これを編集する

以下の内容を盛り込む

  1. BOTが返答時につけるユーザーメンションを有効化
  2. 返信でメッセージが送られてきた場合にメンションがついてなくても反応するようになっているのを無効化
  3. メンションがついていない限り反応しないように条件変更
  4. 現状は一時的に表示する「考え中…」のメッセージを編集して返答結果を表示するようになっているので返答結果は新規メッセージとして送信するように変更

あとはチャンネルトピックに各BOTの情報(名前、愛称、ユーザーID)や「話しかける」という旨の内容はメンションをつけるということを記載しておく

ここまででBOT達を起動すれば以下のように彼らで会話できるようになる(画像は話しかけるとこだけ)

xangiができることを拡張していく

xangiの作者である からあげ氏(リンク) が別プロジェクトでai-assistant-workspace(リンク)を公開している
これをxangiに組み込む

作業ディレクトリをxangiにしたまま

git clone https://github.com/karaage0703/ai-assistant-workspace ./workspace

でリポジトリをworkspace配下にクローンする

念のためxangiの.envファイルに

WORKSPACE_PATH=(ルートからのパス)/xangi/workspace

と書いておけばしっかりと認識されるはず(自分の環境では/xangiとなぜか認識されていた)

npm startでログが流れ始めるが、その中で以下のようにskillsを読み込んでいるログが流れるのでこれを見て読み込まれているか判断してもよいだろう(Discord上で/skillsを打つのでももちろん良い)

[xangi] Loaded 19 skills from /xangi/workspace

基本は xangi + ai-assistant-workspace で使っていけば使い勝手良くなるんじゃないかな

自分はここにagent-browserを足してブラウザ操作をできるようにしている

今後の展望

・業務ではSlackを使う場合が多い(というかSlackしか使ってない)のでそちらに組み込んで作業の自動化フローを組めれば仕事にもつかえるかも
・agency-agentsを導入してxangiが話すときに専門的な立場から話してもらうようにすると面白そう
・複数BOTをさらに追加してチームを組ませて作業させるのも面白そう(チーム開発シミュレーションゲームみたいな)

備考

ここまでVM上で直実行をしているためxangiが勝手にVM内の環境を触れるようになっているため、「万が一」が心配な人はdockerで起動して環境を隔離するべき(Docker用の説明もGithubに載っている)
ただ、ollamaコンテナが作成されるのでwindowsホストマシン上とつなぎたい場合はこのコンテナを起動しないようにしたり、接続用の環境変数の設定を忘れずにしましょう(docker-compose.standalone.ymlをいじればいい)

最後に

xangi と ai-assistant-workspace を開発していただいた作者の からあげ氏 には敬意を表し、感謝したいと思います。

Discussion