.mulmollaa

English

概要

.mulmollaaは複数のノード(エージェント)間でメッセージのオーケストレーションを行うためのローカルLLMアプリです。
OllamaのAPI接続、Llama-server、llama.cppベースのビルトイン推論エンジンを通して複数のノードを参加者として双方向にやり取りをさせることができます。
GGUF形式のAIモデルをVRAMやRAMの許す限り複数同時に実行する事ができます。
OllamaやLlamaをAPIエンドポイントとして利用すればGPU搭載のパソコンでの実行で高速に利用する事ができます。
ローカル環境のリモートサーバーに配置したOllamaやLlamaをAPIエンドポイントにする事もできますのでパソコンのメモリ容量を超えての利用も可能です。

- 会話までの流れ -
一つのユニット(場所)に複数のノードを集める事ができます。
必要となるメンバとしてまず、ノードの設定を複数行います。
OllamaかLlamaかbuiltin推論エンジンを選択し、利用するLLMモデルを指定します。
それぞれのノードにシステムプロンプトとして、どのような役割か、どのように応答するのかという指示を記載したファイルを指定します。
システムプロンプトはエディタがありますのでそこで編集を行ってください。
ユニットの設定で参加するノードを選択し、ユニット内でのノードの役割を自然言語で記載します。
チャット画面で特定のノードまたは全体に対してメッセージを送ってください。
特定のノードに話しかける場合は @main のようにメンション名を記載した後に半角スペースを置いてください。
誰も指定していない場合は全ての参加メンバにブロードキャストされます。
会話が始まるとノードが他メンバにメンションし続ける限り停止しません。
STOPは完全な完全ストップではなく、性質上ストップ要請になります。
基本的に直前のメンションにSTOPがあればSTOPしますが、GPU実行下ではそれよりも高速に次の回答がなされるため、停止しない事があります。
画面右上にDelayボタンがあり、最大5秒まで遅延を入れる事ができます。

アーキティクチャ

[起動]
- ユーザールートフォルダのAppData-Tempに実行ファイル群を展開
- ユーザールートフォルダに.mulmollaaフォルダを設置して設定ファイルを配置。
- ダウンロード・解凍後フォルダのUIを起動
[プロセス]
- EXE起動・終了プロセス
- スタータープロセス
- APIサーバープロセス
- メモリコントローラープロセス
- UIプロセス
[メッセージング]
- メンション解析
- メモリ管理処理
- 推論エンジンへの送信処理
- ノード間でのメッセージング
- UIへのメッセージ配信
- ※メッセージ構築プロセスは後日追加
[推論エンジン]
- Ollama : GPU/CPU/リモート
- Llama-server : GPU/CPU/リモート
- Builtin(Llama.cppベース): CPU
[メモリコントローラ]
- ※後日記載
-

推論エンジン

3つの推論エンジンを利用可能です。 [Ollama]
ローカル推論アプリで標準でAPIサーバーを搭載します。
標準でGPUを利用するため、基本的な設定ができていればGPUでLLMを動作させることができます。
インターフェースもシンプルで、チャット画面のプルダウンでモデルを選択すると自動でダウンロードされます。
コマンドラインでollama listを実行するとダウンロード・インストール済みのモデル一覧を取得する事ができます。
.mulmollaaでもこの一覧からモデル選択を行います。Ollamaが提供するAPIにアクセスするためOllamaにモデルがダウンロードされ、
Ollamaが起動されている状態である必要があります。

[llama(llama-server)]
推論エンジンの定番となっているOSSで、これにAPIサーバー機能を搭載したllama-serverを指します。
原則1プロセス1モデルですので利用する場合にはモデルを指定してあらかじめ起動しておく必要があります。
このため、mulmollaaのメモリ管理の対象外となっています。
GPUで利用するには、あらかじめGPUモードでモデルを読み込んで起動しておく必要があります。

[builtin]
.mulmollaaの組込み推論エンジンですが上記llama(llama.cpp)を利用して開発しています。
CPUのみの実行であり、Ollamaの準備がわからない方向けですが、GPUモードを搭載していないため、
速度はかなり遅くなります。ただし推奨モデルのダウンロード機能やメモリコントローラーによる管理を行います。
RAMの空き容量に応じて自動でモデルのロードとアンロードを行います。

ノード

.mulmollaaの最小構成単位です。
いわゆるエージェントになり、ユニットに所属して初めて稼働します。
接続先の推論エンジン、利用するモデル、システムプロンプトを設定する事ができます。
ビルトインのみ、システムプロンプトの書き方が異なりますが、最も自然にシステムプロンプトを利用可能です。

ユニット(ノードユニット)

複数のノードを格納する箱になり、いわゆる会議室のイメージです。
ノード名は一意ですが、ブロードキャストしたり所属外のノードを呼び出してもユニットを超えて伝搬しません。
ユニットは参加メンバであるノードに、自然言語で役割を与える事ができます。
AI同士の会話、利用者とAIの会話は全てこのユニット上で行われます。
複数のノードと会話する必要がない場合は、一つのユニットに一つのノードのみを指定します。

ロードマップ

[開発計画]
以下の開発は決定しており、年内に実装します。
- スキル:会話だけでなく複数種類の作業を実行できるようにします。
- チェーン:ユニット間で任意のワークフローを実行できるようにします。