Skip to content
旅botミニを公開しました 8.LibreChatに対応しました|まぁ/Masahiro Fukushima
note記述記事
2025-03-03T13:06:42.000Z

見出し画像

旅botミニを公開しました 8.LibreChatに対応しました

2025年3月3日 22:06

旅botミニの続きです。今回は突発的にLibreChatサポートの話です。

link

前回に

ああ、そういえばComfyUI接続などAPIコスト節約は思ったより需要がありそうなので、会話AIや画像生成AIをローカルLLMにする需要もあるんだろうな。。そっちも少し考えてみます。。。

と書いたのですが、これが思ったより重要なのがわかってきました。
まぁメイドさんの地図空間では、オブジェクトをAIが自分で追加していくため「現在の様子の画像生成→現在の様子の画像認識→オブジェクトの生成/削除→必要に応じて認識と生成の場所を移動」を繰り返すのですが、数百~数千のオブジェクト操作を行うと考えた場合、ClaudeのAPI発行ではコストがかかって、コーヒー代では済まないのではないかと見えてきました。
旅botミニの場合、画像認識が常に起こるためオリジナル旅botよりAPIコストがかかります。そのためローカルLLM+ローカルマルチモーダルAIなどでもやってコスト削減は考えたほうがよさそうです。また前に書いたように今ならChatGPT系のAPIが割安に使えそうだし、ChatGPT系APIも使えるほうが助かるのです。

という訳で旅botミニの基盤をローカルLLMで動かす必要が出てきたのです。またClaude Desktopだとセキュリティの都合でたびたびアラートが出ることや画像がデフォルトで表示されないとかUI面も改良したほうがよい点が結構あります。

どのMCPクライアントで動かすか

現在、公式サイトに出ているMCPクライアントは以下のページに書かれています。

Example Clients - Model Context Protocol A list of applications that support MCP integrations modelcontextprotocol.iolink

リストを見る分には、フル仕様をサポートしているクライアントは現在存在せず、どれも部分対応です。stdioインタフェースとか結構癖があるんですよね。。
それに最近の流行でIDE組み込み型AIエージェントが多いです。IDE組み込みAIエージェントはまだ使ってないんですよね。

といってプログラミングにAIを使ってないわけではなく使い出しています。

  1. 「pythonでmapやfoldはどう書くんだっけ?」(苦手な言語の文法や基本ルールの確認)

  2. 「こういう数理処理がしたいんだけど、どういうライブラリや手法を使うのがよいんだっけ」(技法レベルの調査や常識の確認)

  3. 「あれこれこういう処理を書きたいんだけどソースを一式提案して」(面倒な処理を丸投げ)

これだけでもずいぶん楽してます。3の丸投げ例では以前ブログデータの変換を丸投げして結構感心しましたし。

link

IDE内蔵型も興味はあるのですがセキュリティの話もあるし、絵師さんではないけど「自分の直の作業環境をAIにいじられるのはちょっと」みたいな感情もないではないです。ただIDE AI便利の話は間違いないと思っているし、あとはどう自分で納得できる環境が作れるかという気もしています。
単体テストケースを直で作ってくれるとか、時間がとれない趣味のプログラマにもよいと思うのですよ。

話が脱線しましたが、IDE系AIエージェントは処理単位がテキスト主体で画像はそれほどではないだろうし、そうするとChatbot系ツールということになります。

でざっくり各ホームページを見てみて LibreChatを試してみることにしました。

LibreChat

LibreChat Free, open source AI chat platform - Every AI for Everyone www.librechat.ailink

規約でインタフェース共通化したものは同一規格の他のツールでも動くはずですが、経験的には「そうはいっても動かない」という体験ばかりです。
ですが意外にLibreChat上でさくっと旅botミニは動きました。
自分側のデータミスで練習モードのホテル画面が出ないとか細かい点はいくつかあったのですが、基本的には動作しました。
画面もOpenAIのコンソール画面似で確認アラートも出ないし画像も直で表示されるのでClaude Desktopで困っていた問題はほぼクリアできています。

ただいくつか根の深い問題はありました。

  1. LibreChatはサーバーで運用することを考えてあるので、インストールするPCは割と性能がいる。またDockerで複数コンテナで実行をデフォルトとしている。ユーザ管理の考え方があるのでdbにアカウントを追加しないといけないなど。

  2. (MCPの問題でもあるのですが)MCPの初期化で失敗しやすい

  3. 旅bot側の問題ですがDockerコンテナで動かす前提のためrembg cliのインストールは簡単にはいかないので別の方法を考えないといけない。

旅botミニにおけるrembgの問題は本当に面倒なのですが、今回Dockerを使ってよいという話になったので、コンテナでrembgサービスを別途立ち上げてしまうことにしました。これできれいには解決するのですが、4.52GBの結構大きいイメージをインストールする必要があります。。

細かい話は別として以下に設定手順をまとめました。ただLibreChatの基本的なインストールは公式サイトの情報を参照ください(なのでそこそこPCに詳しい必要はあります)。

LibreChatのインストールと旅botミニの設定

LibreChatをインストールする

公式サイトに書かれている方法で動作する状態にしてください。

🐋 Docker How to install LibreChat locally with Docker www.librechat.ailink

公式ではDocker,npm,Helm(Kubernetes)とありますが今回はrembgをDockerコンテナで追加するのでDockerプランのみです。
ただ手順的にはかなり整理されているのでDocker Desktopが動かせる環境であればコマンド数行で済みます。Docker Desktopも最近はインストーラーだけでほぼ動くので結構単純です。

Docker Desktop: 開発者向けの#1コンテナ化ツール | Docker Dockerデスクトップは、開発者向けの共同コンテナ化ソフトウェアです。 今すぐ Docker Desktop を Mac www.docker.comlink

まぁ一旦トラブると大変でしょうが。

仮の設定ファイル

libreChatを動かすまでには以下の設定ファイルが必要です

  • .env

  • librechat.yaml

  • docker-compose.override.yml (後ほど説明 今はまだ不要)

.envもlibrechat.yamlもサンプルのファイルが添付されてるので、とりあえずはそのままコピーして使ってよいです。

cp .env.example .env
cp librechat.example.yaml librechat.yaml

ここまで設定してdocker composeを立ち上げると

docker compose up -d

ブラウザで localhost:3080/ を開くととりあえずは初期画面が出ます。

LibreChat初期画面

ユーザアカウントの追加

ログイン画面があるようにLibreChatはメールアドレスでのユーザ登録が必要です。SNS連動とか出来そうですがとりあえずはユーティリティでダミーのユーザを追加します。

Authentication System This guide explains how to use the user authentication system www.librechat.ailink

docker-compose exec api npm run create-user
--------------------------
Create a new user account!
--------------------------
Usage: npm run create-user <email> <name> <username> [--email-verified=false]
Note: if you do not pass in the arguments, you will be prompted for them.
If you really need to pass in the password, you can do so as the 4th argument (not recommended for security).
Use --email-verified=false to set emailVerified to false. Default is true.
--------------------------
Email:
> [email protected]
Name: (default is: xxxx)
>
Username: (default is: xxxx)
>
Password: (leave blank, to generate one)
> zzzzxxxxyyyy
Email verified? (Y/n, default is Y):

If `y`, the user's email will be considered verified.

If `n`, and email service is configured, the user will be sent a verification email.

If `n`, and email service is not configured, you must have the `ALLOW_UNVERIFIED_EMAIL_LOGIN` .env variable set to true,
or the user will need to attempt logging in to have a verification link sent to them.
> y
.....
User created successfully!
Email verified: true

ユーティリティで追加する分にはメールアドレスの体裁になっていれば存在しないアドレスでもOKです。

追加設定で rembg コンテナを追加する

rembg をdockerで使うために、rembg docker コンテナの組み込みと実行を追加します。

docker-compose.override.yml

 services:
   api:
     volumes:
       - type: bind
         source: ./librechat.yaml
         target: /app/librechat.yaml

   rembg:
     image: danielgatis/rembg:latest
     restart: always
     command: "s --host 0.0.0.0 --port 7000 --log_level info"

これでdockerを再upすればrembgのコンテナを取得してサービスとしてrembgが動きます。

MCPサービスに map-traveler-mcp を追加する

旅botミニをLibreChatに追加するためにlibrechat.yamlと.envに追記します。

librechat.yaml 追記

mcpServers:
  traveler:
    type: stdio
    command: npx
    args:
      - -y
      - "@mfukushim/map-traveler-mcp"

.env 追記(claude_desktop_config.jsonのenvと同様の内容ですがrembgはURLでコンテナ内を指します)

# map-traveler-mcp
GoogleMapApi_key=(Google Map APIキー)
sqlite_path=/home/run_test.sqlite (例 librechat コンテナ内の邪魔にならない場所か、マウントしt外部ディレクトリ内など)
remBgUrl=http://rembg:7000 (rembg サービスAPIのURL,コンテナ間URL)
(その他、画像生成AIの設定、PixAIキー、stablity.ai APIキー、ComfyUIの設定など)

設定後、コンテナを再起動してください。

LibreChatのコンテナログに

[MCP][traveler] ✓ Initialized

が出ているのを確認してください。
MCP travelerがfailしている場合はLibreChatコンテナを再起動してください。
2,3回再起動してもうまくいかない場合は設定を誤っているか、アドインを実行するにはPCのパフォーマンスが足りないかもです。。
MCP初期化部分のリトライを長めにすると通るのですが、LibreChatのgithubのforkにリトライを強化した版を上げるかどうかは検討中です。。

libreChat内の設定

外の設定は終わったので、あとはログインして設定します。
MCP serverの機能を使う場合はLibreChatではAgents機能を選んで、エージェントビルダーでMCPを設定するようです。

a. 会話画面でAgentsを選びます。

b. 画面右のパネルからエージェントビルダーを選び、エージェントの設定を行います。

c. map-travelerを使うためにツールを追加を選びます。

d. エージェントツールの画面が出ますのでmap-traveler-mcpのツールをすべて選んで追加します(もしmap-traveler-mcpのツールが出ていなければMCPの初期化を失敗していますので、コンテナの再起動またはログ等で設定を見直してください)

e. 指示文のエリアに追加スクリプトを入力します。
libreChatにはMCPのリソース機能がないため、代わりに https://github.com/mfukushim/map-traveler-mcp/blob/main/assets/scenario/role.txt の中身のテキストを指示文のエリアに入力します。
(追記: LLMの性能によっては、指示文の中のSettings:で誤動作するようなので、"moveMode":"realtime" みたいなエラーが出る場合はSettings: ~ ``` (Play:の直前)までを削除して入れてください)

f. 作成ボタンを押してエージェントを保存します。

g. 新規チャットを開始してください。

操作感は旅botミニには丁度よいが不明点もいくつかある

ここまでやってようやくLibreChatで旅botミニを動かせます。
まだローカルLLMが使えるかなど細かくは確認できていませんがChatGPT系でも動かせるようです。

GPT-4oで旅botミニを動かす

でもGPT-o1は未サポートとかいう話が出てきたな。。何かまだいろいろ見えてない制限があるかもです。。(追記GPT-4.5-previewは動きました)

操作感は旅botミニにとってはtools呼び出しアラートも出なくなるし、画像もちゃんと広げて出てくれるのでよい点が多いです。
Claude DesktopもUI的にはOpenAIのものより好みの部分も多いのですが、公式なのでアラートなども厳格になっているので、旅botミニに使う分にはLibreChat上の方が使いやすいです。

ただ環境が未調整のためか妙な挙動も残っていたりします。一定時間操作しないとログアウトしてたりとか。まぁこのあたりの調整は追々するしかない。

とりあえずローカルLLMで動くかとか、タダトークンが使えそうなGPT系が使えそうか確認して、地図空間のほうのテストに入る予定です。

まぁメイドさんの地図空間サーバーは今週末に一通りは動くようにしてから来週多量生成してどんな感じになるか評価かな。。でも確定申告ももう整理せねば。。

Noteの自分の記事より転記 https://note.com/marble_walkers/n/n339bf7905324