とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

AnythingLLMのモデルルーティングを試す 画像解析やコード作業でLLMモデルを自動切り替え

AnythingLLMは、ローカルLLMやクラウドLLMとチャットできるオープンソースのAIアプリケーションです。RAG(ドキュメント検索)、AIエージェント、MCP、Web検索など多くの機能を備えています。今回は、その中でも用途に応じて使用するLLMを自動で切り替えられる「モデルルーティング」機能を試してみました。

ところで、ローカルLLMを試すだけであれば、OllamaやLM Studioだけでも十分です。しかし実際に活用し始めると、モデルの知識だけでは足りず、RAGでドキュメントを検索したくなったり、Web検索で最新情報を取得したくなったりと、求める機能が少しずつ増えてきます。

AnythingLLMには様々な機能が用意されており、先ほど紹介したようなことも実現できます。今回は、その中でも便利な「モデルルーティング」機能を試してみます。

モデルルーティングとはあらかじめ設定した条件に応じて、自動的に使用するLLMモデルを切り替える機能です。たとえば次のような振り分けが可能です。

  • 画像が添付されたらVisionモデル
  • 「コード」というキーワードが含まれていたらコード向けモデル

AnythingLLMのモデルルーティングのドキュメントはこちらです。

docs.anythingllm.com

普段はGemma 4 E2B QATを使っています。非常に軽量で、8GBメモリーのMacBook Airでも動作するためです。 これまで私が色々試行錯誤したところによると、コーディングにはより性能の高いモデルの方が適しています。また、QAT版のE2B/E4BはVisionに対応していないため、Visionを利用する画像分析やPDF解析には向きません。そのため、LLMを色々なソフトウェア上で使う時は、用途に応じて手動でモデルを切り替えていました。

この作業毎に適切なモデルを自分で切り替えるの、正直言って面倒くさいですよね。 AnythingLLMを使うことで、その手動での切り替えが不要になり自動化できるので、想定通り動くならこれは便利ですね。

そこで、AnythingLLMのモデルルーティング機能を試してみました。

私はこの機能を使って、画像が添付されている場合はQAT量子化ではない「Gemma 4 E2B」モデルを使うような設定を加えました。

また、「コードの専門家の呼び出し」と言うキーワードをプロンプトに入力すると、「Ministral 3 8B」を呼び出すような設定をこの機能を使って設定しています。

このルーティングを、OpenCodeやClineのようなコード生成AIエージェントでも使えたら便利なんだけどなあと感じています。現在、同じような仕組みを実現する方法がないか調べています。

使ってみる

実際に設定したルールは次の2つです。

たとえば画像を分析してもらうと、次のように動くようです。 「〜を経由して〜へルーティング」と表示されます。数秒待つと、新しいモデルで分析したあとにその結果がたとえば次のように表示されるはずです。

たとえばもっと画像の分析に特化したモデルを呼び出すように設定すれば、これだけでも有用なソフトウェアとしてAnythingLLMを使えそうですね。

また、「コードの専門家の呼び出し」と言うキーワードで「Ministral 3 8B」に切り替わる設定を書いておくと、コード生成をお願いすると自動的に「Ministral 3 8B」に切り替わってコード生成がされます。

処理中の状況はAnyThingLLM側にはあまり出てきませんが、今回LLMサーバーとしてLM Studioを使っているので、LM StudioのDeveloperパネルを開くと、作業に使っているモデル、LLMのログ、作業状況などを確認できます。

失敗したこと

「元のモデルを使ってコードを評価して」と言ったところ、「Gemma 4 E2B QAT」モデルに切り替わったあと、「コード」と言う命令に反応したらしく「Ministral 3 8B」に切り替わって、自ら生成したコードを自画自賛してしまうことになってしまいました。

モデルルーティングはもう少し研究が必要そうです。「最終チェックをお願い」みたいなルールで「Gemma 4 12B QAT」を呼ぶようにすればいいのでしょうか。

ルーティングが上手くいったようです。

ちなみにエラーメッセージや警告メッセージを貼ると、コード専門家である「Ministral 3 8B」が呼ばれました。この機能を上手く使うと作業毎に適切な専門家の割り振りができそうですね。

モデルを手動で切り替える手間がなくなるだけでも十分便利ですが、ルールの作り方次第では「画像解析の専門家」「コード生成の専門家」「最終レビュー担当」といった役割分担もできそうです。まだ試行錯誤は必要ですが、かなり可能性を感じる機能でした。