📚

LibreChatを外から、LMstudioで動かしてみた

に公開

LibreChatを外から、LMstudioで動かしてみた

はじめに

この記事では、LibreChatからローカルPCとリモートPC(TailScale経由)の両方にあるLM Studioを使うための設定方法と、設定時によくある ZodError というエラーの解決策を短くまとめます。

対象: 複数LM Studioを使いたい方、librechat.yaml の設定で困っている方。

やりたいこと

  1. 複数LM Studio接続: ローカルとリモート(TailScale経由)のLM StudioにLibreChatから接続。
  2. モデル自動取得: 各LM Studioの利用可能モデルをLibreChatに自動認識させる (Workspace: true)。

設定手順とエラー解決

1. 前提

  • Docker / Docker Compose 環境
  • LibreChat (Dockerで動作)
  • LM Studio (ローカル・リモートPCにインストール、サーバー起動、リモート側は外部アクセス許可)
  • TailScale などリモート接続手段

2. librechat.yaml の編集

LibreChatの設定ファイル librechat.yamlendpoints.custom: リストに、LM Studioの設定を追加します。

# librechat.yaml の endpoints.custom: リスト内に追加

# ---- リモートLMStudio 設定例 (自宅Desktopなど) ----
- name: 'LMStudio_Desktop'             # (1) ユニークな内部名
  apiKey: 'dummy_key_desktop'          # (2) ダミーAPIキー (必須)
  baseURL: 'http://<TailScale IP>:<Port>/v1' # (3) 例: 'http://100.x.x.x:1234/v1' ← /v1 必須!
  models:
    fetch: true                       # (4) モデルリスト自動取得
    default: ['<remote_model_name>'] # (5) fetch:true でも必須!実際に使うモデル名
  titleConvo: true                    # (6) タイトル自動生成 (任意)
  titleModel: '<remote_model_name>'   # (7) default 内のモデル名指定 (インデント注意!)
  modelDisplayLabel: 'LM Studio (Remote)' # (8) UI表示名

# ---- ローカルLMStudio 設定例 ----
- name: 'LMStudio_Local'
  apiKey: 'dummy_key_local'
  baseURL: 'http://host.docker.internal:1234/v1' # Dockerからホストへ
  models:
    fetch: true
    default: ['<local_model_name>']   # ローカルで使うモデル名
  titleConvo: true
  titleModel: '<local_model_name>'
  modelDisplayLabel: 'LM Studio (Local)'

設定ポイント:

  • (3) baseURL: 必ず末尾に /v1 を付けてください。
  • (5) models.default: Workspace: true でも、実際に使うモデル名を配列 []最低1つ指定必須です。
  • (7) titleModel: models.default 内のモデル名を指定します。インデントが他のキーとズレるとエラーの原因になります!

3. 設定反映とエラー対応

  1. librechat.yaml を保存。
  2. LibreChatを再起動: docker-compose down && docker-compose up -d --build
  3. ログ確認: docker-compose logs api

もしログに ZodError (特に pathmodels.default を指していて received: undefined) が表示されたら、ほぼ YAMLのインデントミス です。

エラー原因 (よくある例: インデントのズレ):

# NG例: titleModel のインデントが深い
  titleConvo: true
    titleModel: '<remote_model_name>' # ← これが原因でエラーに!

修正:

# OK例: 他のキーと同じインデントレベルに修正
  titleConvo: true
  titleModel: '<remote_model_name>' # ← インデントを揃える

インデント(行頭のスペース)を他のキー(name, apiKey, models, titleConvo, modelDisplayLabel など)と同じレベルに修正してください。

4. 最終確認

インデント修正後、再度LibreChatを再起動し、エラーが出ないことを確認します。
LibreChatのUIで、追加したエンドポイント(例: LM Studio (Remote))が表示され、モデルリストが読み込まれ、チャットが正常に動作すれば完了です。

重要ポイントまとめ

  • baseURL の末尾には /v1 が必須。
  • models.fetch: true でも models.default に最低1モデル指定が必須。
  • YAMLのインデントは超重要! ZodError の大半はこれが原因。
  • リモート接続時は、LM Studio側の外部アクセス許可とファイアウォール設定も確認。

おわりに

これで複数のLM StudioをLibreChatから簡単に切り替えて使えるようになります。設定で困った際の参考になれば幸いです。


Discussion