ミニマルへの道:Windows版 LM StudioでローカルLLMサーバーを立てる
この記事は「AIの思考・会話生成 LLM(Large Language Model)」を、Stack-Chan Minimal(ミニマル)の魂(PC - ローカルAIサーバー)として導入するお話です。ミニマルに接続して使用する部分以外は、一般知識としても役に立ちますよ!
前回のWhisper.cppでは、音声を文字に変換する STTサーバー を用意しました。
今回はその次の部分、つまり「文字になった質問に対して、AIが返事を考える部分」を担当する LLMサーバー を作ります。

今回導入する LM Studio は、このうち「LLM:返事を考える部分」を担当します。
今回使うもの
この記事では、次の構成を例にします。
OS:Windows
アプリ:LM Studio(例:LM Studio 0.4.12)
使用モデル例:google/gemma-4-e2b
サーバーポート:1234
PCのIPアドレス例:192.168.11.5
画面やバージョンは、今後のLM Studio更新で変わる可能性がありますが考え方は同じです。
前回まで:
Whisper.cppを起動
↓
ミニマルから音声を送り、文字起こしを確認
今回:
LM Studioを起動
↓
モデルをダウンロード
↓
チャットで動作確認
↓
Developer画面でサーバー起動
↓
ローカルネットワークで提供をON
↓
ミニマルから http://PCのIPアドレス:1234 に接続という流れです。
1. LM Studioをインストールする
まず、LM Studioの公式サイトからWindows版をダウンロードします。
インストーラーを実行し、通常のWindowsアプリと同じようにインストールします。インストールが終わったら、LM Studioを起動します。
この記事では、すでにLM Studioをインストールした状態から説明します。
◆参考
2. モデルを探す
LM Studioを起動したら、まずAIモデルをダウンロードします。
左側のメニューの「My Models」を開きます。
この画面では、まだローカルモデルがない状態です。画面中央に「ローカルモデルはここに表示されます。」と表示されています。
左側のサイドバーにあるモデル検索ボタンを押して、使いたいLLMを探します。

3. 今回は google/gemma-4-e2b を使う
今回は例として、google/gemma-4-e2b を使います。

画面左側でモデルを選ぶと、右側に詳細が表示されます。
google/gemma-4-e2b は比較的軽量なLLMですが、文章で会話するだけでなく、画像の内容を説明できる機能も持っています。
今回は、スタックチャン ミニマルの「返事を考える部分」として使います。さらに、Web画面からテキストと画像を入力し、スタックチャン ミニマルの写真について google/gemma-4-e2b に質問する例も試します。
Gemma 4 E2Bは、比較的小さめのモデルなので、最初の動作確認に使いやすいです。ただし、モデルファイルは数GBあります。
ダウンロードには少し時間がかかります。
画面右側の Download ボタンを押して、モデルをダウンロードします。
4. チャット画面で動作を確認する
モデルのダウンロードが終わったら、まずLM Studioのチャット画面で動作確認します。画面上部で、使用するモデルとして google/gemma-4-e2b を選択します。
その後、チャット欄に「こんにちは。」のように入力します。

返事が表示されれば、LM Studio上でローカルLLMが動いています。この時点では、まだスタックチャン ミニマルとは接続していません。まずは「Windows PC単体でLLMが動くこと」を確認します。
5. Thinking表示が出る場合
Gemma 4系のようなReasoning対応モデルでは、返答の前に Thinking... のような表示が出る場合があります。これは、モデルが内部で考えながら返答している状態です。
ただし、スタックチャン ミニマルのような会話用途では、長い思考は必ずしも必要ありません。むしろ、以下のようなデメリットがあります。
返事が遅くなる
短い会話に向かない
次回扱うTTSで読み上げる場合も、文章が長いと不自然になりやすい
そのため、ミニマルのような会話用途向けには
短く返す
余計な説明をしない
必要ならThinkingを抑える
という調整をすると扱いやすくなります。
6. Thinkingを抑えたい場合の設定
モデルによっては、プロンプトテンプレートに設定を追加することでThinkingを抑えられる場合があります。
画面右側、またはモデル設定画面から プロンプトテンプレート を開きます。

今回のLLMは google/gemma-4-e2b のため、テンプレートの先頭付近に、次の1行を追加します。
{%- set enable_thinking = false %}追加後のイメージは、次のようになります。
{%- set enable_thinking = false %}
{%- set image_count = namespace(value=0) %}
{%- set video_count = namespace(value=0) %}
{%- macro render_content(content, do_vision_count, is_system_content=false) %}ただし、この方法はモデルやテンプレートによって効き方が変わります。
7. Developer画面でLLMサーバーを起動する
次に、スタックチャン ミニマルからLM Studioへ接続できるようにします。
LM Studio左側のメニューから Developer を開き、Developer画面にある Status をオンにします。

サーバーが起動すると、「Status: Running」のように表示されます。これでLLMサーバーが起動しました。
ただし、この時点ではまだ注意点があります。画面に表示される接続先が、次のようになっている場合があります。

この 127.0.0.1 は、Windows PC自身を指すアドレスです。つまり、この状態では「Windows PC自身からは接続できるが、スタックチャン ミニマルなど別の機器からは接続できない」状態です。
そこで、ミニマルから接続できるように、次のServer Settingsで設定していきます。
8. Server Settingsを開く
Developer画面の Server Settings を開きます。

ここで重要なのは以下の項目で、最初の動作確認では、この設定が分かりやすいです。
Server Port:1234
Require Authentication:OFF
ローカルネットワークで提供:ON
CORSを有効にする:OFF
特に重要なのは、ローカルネットワークで提供:ON です。これをONにすると、同じWi-Fiや同じテザリング内にいる別の機器から、LM StudioのLLMサーバーへ接続できるようになります。つまり、スタックチャン ミニマルからWindows PC上のLM Studioへアクセスできるようになります。
Server Port
Server Port:1234LM StudioのAPIサーバーが待ち受けるポート番号です。
特別な理由がなければ、まずは 1234 のままでよいです。
Require Authentication
Require Authentication:OFF認証を有効にすると、APIキーが必要になります。
最初の接続確認では、OFFのままにしておくと簡単です。
後で外部から使う可能性がある場合や、同じネットワーク内の他の端末から勝手に使われたくない場合は、認証をONにしてAPIキーを設定します。
ローカルネットワークで提供
ローカルネットワークで提供:ONここが、スタックチャン ミニマル連携で一番重要です。

これをONにすると、同じWi-Fiや同じテザリング内にいる別の機器から、LM StudioのAPIサーバーへ接続できるようになります。
つまり、ミニマルからWindows PCのLM Studioへアクセスできるようになります。
CORSを有効にする
CORSを有効にする:OFFCORSは、主にブラウザ上のWebアプリからAPIを呼び出すときに関係する設定です。
スタックチャン ミニマル本体からHTTPで呼び出すだけなら、通常はOFFのままで問題ありません。
9. ローカルネットワークで提供をONにした状態
ローカルネットワークで提供 をONにすると、Developer画面の表示が変わります。

この例では、上記のように「127.0.0.1 から192.168.11.5に変化」しました。これは、Windows PCのローカルIPアドレスです。
※ご自身のPCで設定した場合は、基本的に別のIPアドレスになります。
この状態なら、同じネットワークにいるスタックチャン ミニマルから、次のように接続できます。
http://192.168.11.5:1234実際にLLMへ質問を送るエンドポイントは、次のURLになります。
http://192.168.11.5:1234/v1/chat/completions10. IPアドレスの考え方
ここはつまずきやすいので、整理します。
http://127.0.0.1:1234「127.0.0.1」は、その機器自身を指します。
Windows PC上で開けば、Windows PC自身です。
しかし、スタックチャン ミニマルに 127.0.0.1 を設定すると、ミニマル自身を見に行ってしまいます。つまり、Windows PCには届きません。
ミニマルからLM Studioへ接続する場合は、必ずWindows PCのIPアドレスを使います。
OK:
http://192.168.11.5:1234/v1/chat/completions
NG:
http://127.0.0.1:1234/v1/chat/completions11. PowerShellでAPIサーバーを確認する
まず、Windows PC自身からLM StudioのAPIサーバーが動いているか確認します。
PowerShellを開いて、次のコマンドを実行します。
Invoke-RestMethod `
-Uri "http://127.0.0.1:1234/v1/models" `
-Method Getモデル情報のようなJSONが返ってくれば、LM StudioのAPIサーバーは動いています。
次に、ローカルネットワーク側のIPでも確認します。
Invoke-RestMethod `
-Uri "http://192.168.11.5:1234/v1/models" `
-Method Getここでも結果が返れば、少なくともWindows PC自身からは、LAN側のIPアドレスでもアクセスできています。

12. チャットAPIをPowerShellで試す
次に、実際にチャットAPIへ質問を送ってみます。
$body = @{
model = "google/gemma-4-e2b"
messages = @(
@{
role = "system"
content = "あなたはスタックチャン ミニマルの説明役です。短く日本語で答えてください。"
},
@{
role = "user"
content = "こんにちは。短く自己紹介してください。"
}
)
temperature = 0.7
max_tokens = 120
} | ConvertTo-Json -Depth 10
Invoke-RestMethod `
-Uri "http://127.0.0.1:1234/v1/chat/completions" `
-Method Post `
-ContentType "application/json" `
-Body $body返事がJSONで返ってくれば成功です。

13. + Load Modelについて
ここまでの手順どおりに進めていれば、すでにチャット画面で google/gemma-4-e2b を使っているため、モデルは読み込まれているはずです。
ただし、LM Studioを再起動した直後や、別のモデルに切り替えたい場合は、Developer画面で読み込むモデルを確認しておくと安心です。
Loaded Models に何も表示されていない場合は、+ Load Model を押して、使いたいモデルを読み込みます。



モデルが読み込まれていない状態では、APIへ質問を送っても、回答を作るモデルがないため応答できません。
そのため、ミニマルとの接続確認では、先にモデルを読み込んでおく方が分かりやすいです。
14. Windowsセキュリティの確認
LM Studioをローカルネットワークに公開すると、Windowsセキュリティやファイアウォールの確認画面が出る場合があります。
その場合は、LM Studioの通信を許可します。
ここで許可しないと、
Windows PC自身からは動く
でも、ミニマルからは接続できないという状態になることがあります。
ミニマルから接続できない場合は、まず次を確認します。
LM StudioのStatusがRunningになっているか
ローカルネットワークで提供がONになっているか
Reachable at が 192.168.x.x になっているか
Windowsセキュリティの確認画面が出た場合は「許可」を押したか
詳細はWhisper.cppの説明ページを参照
ミニマルとWindows PCが同じWi-Fiにいるか
15. スタックチャン ミニマル側の設定
ここまでできたら、スタックチャン ミニマルのWebメニューのAIモデルの設定を開きます。

LLMサーバーの設定欄に、LM StudioのURL、Portを入れて「モデル一覧を取得」ボタンを押すと、モデル名が取得できるので、画面下部にある保存ボタンで保存します。
※モデル名が取得できない場合は、LM Studioの設定が不完全 or 指定しているサーバーIP、ポートが間違っている場合があります

16. ミニマルから会話テストする
設定を保存したら、ミニマルから会話テストをします。
※テストをする前にWhisper.cppを立ち上げるのを忘れないでください
全体の流れは次のようになります。返事を音声として再生する部分は、次回の音声合成(TTS)設定後に行います。
ミニマルの画面ボタンを押して、質問を録音
Whisper.cppで文字起こし
LM Studioへ質問を送信
LM StudioのローカルLLMが返事を生成
ミニマルの画面に回答文字列が表示される
注意:現時点ではTTSサーバーをまだ用意していないため、ミニマル側が音声合成サーバーへの接続を試し、応答表示まで少し時間がかかる場合があります。
ここまで動けば、ミニマルの「考える魂」として、Windows PC上のLM Studioが使えるようになります。
17. うまくいかない場合
LM Studioのチャット画面では動くが、ミニマルから動かない
次を確認します。
・Developer画面でStatusがRunningか
・ローカルネットワークで提供がONか
・Reachable at が 127.0.0.1 ではなく 192.168.x.x になっているか
・ミニマル側に 127.0.0.1 を入れていないか
・Windows PCとミニマルが同じネットワークにいるか127.0.0.1を設定していた
ミニマル側に次のように入れている場合は間違いです。
http://127.0.0.1:1234/v1/chat/completionsこれは、ミニマル自身を見に行ってしまいます。
Windows PCのIPアドレスを使います。
http://192.168.11.5:1234/v1/chat/completions返事が遅い
大きすぎるモデルを使っている可能性があります。
最初は、小さめのモデルで動作確認するのがおすすめです。
・2B〜4B程度のモデル
・量子化されたGGUFモデル
・Instructモデルミニマル用途では、超高性能な大規模モデルよりも、
短く
速く
安定して返すモデルの方が扱いやすいです。
Thinkingが長い
Reasoning対応モデルでは、Thinkingが長くなる場合があります。
その場合は、次を試します。
・max_tokensを短くする
・system promptで短く答えるように指定する
・プロンプトテンプレートに enable_thinking = false を追加して試す
・Thinkingが出にくいモデルに変える次回TTSをつなぐと、ミニマルは音声で返事をするため、長文より短文の方が自然です。
モデルが読み込まれていない
Developer画面で Loaded Models が空の場合は、+ Load Model からモデルを読み込みます。
+ Load Model
↓
google/gemma-4-e2b を選択サーバーがRunningでも、モデルが読み込まれていないと、回答を作るモデルがないため応答できません。
まとめ
今回は、Windows PC上で Whisper.cpp と LM Studio を使い、スタックチャン ミニマル向けのローカルAIサーバー構成を作りました。
今回扱った役割は、次の2つです。
Whisper.cpp:音声をテキストに変換する
LM Studio:テキストを受け取り、返事を考える
手順をまとめると、次のようになります。
Whisper.cppを導入する
whisper-server.exe を起動する
ミニマル側からWhisper.cppへ音声を送り、文字起こしできることを確認する
LM Studioをインストールする
モデルを検索する
google/gemma-4-e2b などの軽めのモデルをダウンロードする
チャット画面で動作確認する
Developer画面でサーバーを起動する
Server Settingsで「ローカルネットワークで提供」をONにする
Reachable at が 192.168.x.x になっていることを確認する
ミニマル側に http://PCのIPアドレス:1234/v1/chat/completions を設定する
ミニマルから会話テストする
これで、クラウドAPIを使わずに、Windows PC上のローカル環境で次の流れを作ることができます。
ミニマルが音声を録音する
↓
Whisper.cpp が音声を文字にする
↓
LM Studio が返事を考えるスタックチャン ミニマルの考え方では、ミニマル本体は 「身体」、PCやスマホ上のAIサーバーは 「魂」 です。
今回の構成では、Whisper.cppとLM Studioがそれぞれ次の役割を担当します。
Whisper.cpp:聞く魂
LM Studio:考える魂つまり今回は、
聞く
↓
考えるまでをローカル環境でつなげたことになります。
ただし、今回のページでは 音声合成(TTS)までは扱いません。
ミニマルに返事を音声でしゃべらせるには、次に TTSサーバー を用意する必要があります。
次回は、TTSサーバーを追加して、
聞く
↓
考える
↓
話すのうち、最後の 「話す」 部分をつなげていきます。
