WindowsでLM StudioのPython SDKを使う|接続とモデル管理

公開日
2026-10-10
更新日
2026-10-10
情報確認日
2026-10-10
編集・運営
Local AI Compass

LM StudioのPython SDKは、すでにロードされたローカルLLMをPythonから選び、応答やstreamを扱うための入口です。この記事では、SDKとPython環境、LM Studioが利用でき、対象のLLMがロード済みの状態から、手元で確認したloopback接続先を設定して既存handleを使う流れを説明します。

導入前に確認すること

  • Windowsのバージョン、メモリ容量、GPU/VRAM、空き容量を確認する
  • 最初は軽量モデル、短い質問、少ない同時作業から始める
  • 公式サイトの対応OS、利用規約、モデルのライセンスを確認する

先に結論:既存のロード済みLLMをSDKから選ぶ

LM Studio Python SDKは、PythonからLM Studioのネイティブなモデルhandleを扱うパッケージです。ここではPython環境とSDK、LM Studioがすでに使え、ローカルLLMがロード済みの状態から、確認したloopback接続先を設定し、その一覧から明示的に選んで短い応答を返します。記事のコードはモデルをダウンロードしたり、新しくロードしたりしません。

LM StudioでPython SDK・CLI・HTTP clientを選ぶ目安
入口主な役割確認するもの
Python SDK `lmstudio`Python内でmodel handleや応答を扱うSDK版、API host、ロード済みhandle
CLI `lms`端末からLM Studioやモデルの状態を確認する`lms ps`などのコマンドと対象server
HTTP client `openai`などOpenAI互換endpointへHTTP requestを送る`/v1`のpath、request形式、認証

REST APIを使う手順やendpointごとの違いは、このSDK例とは別の入口です。まずPythonで既存のロード済みモデルを扱いたい場合に、以下の手順へ進みます。

接続前にPython・アプリ・host:portを確認する

対象は、利用するPython環境へ互換性のある`lmstudio` SDKが入り、LM Studioとdaemonが利用でき、対象のローカルLLMをアプリでロード済みの状態です。Python環境が複数ある場合、SDKを入れた環境と実行する`py` / `python`が同じか確認します。現在のupstream mainのpyprojectはPython 3.10以上を指定していますが、mainやpre-releaseの条件をインストール済みstable版へそのまま当てはめず、使う版の公式案内を見てください。

  1. Pythonの実行環境と、そこから見える`lmstudio` SDKの版を確認する。
  2. LM StudioでローカルLLMをロードし、アプリ上で対象モデルが使える状態を確認する。
  3. アプリのDeveloper表示などから、実際のloopback API hostとportを確認する。
  4. 接続文字列は`127.0.0.1:1234`のような`host:port`形式にする。`http://.../v1`のREST base URLとは混ぜない。

公式project setupでは、convenience clientの初回利用より前に`configure_default_client()`を呼ぶ例が示されています。この関数はSDK 1.3から利用でき、SDK 1.5.0では任意のHTTP REST API serverを有効にしなくてもSDKを使える変更があります。古いSDKは要件が異なるため、自分の版を境界に含めます。

ロード済みLLMを一覧から明示的に選ぶ

次の例は、Developer表示などで確認したloopback host:portへ最初に接続先を設定し、ロード済みLLMだけを一覧します。0件ならそこで停止します。複数件の場合も同じ一覧に出したhandleを表示し、そのsnapshotから自分で選んだ番号を範囲確認して使います。新しい実行では一覧を取り直してください。番号は永続するmodel IDではありません。

import lmstudio as lms

# LM Studioの表示で確認したloopback host:portへ置き換える
SERVER_API_HOST = "127.0.0.1:1234"
lms.configure_default_client(SERVER_API_HOST)

models = lms.list_loaded_models("llm")
if not models:
    raise RuntimeError("ロード済みLLMがありません。LM Studio側の状態を確認してください。")

for index, handle in enumerate(models):
    print(f"[{index}] {handle}")

selected_index = int(input("使うhandleの番号を入力してください: "))
if not 0 <= selected_index < len(models):
    raise IndexError("一覧にある番号を選んでください。")

model = models[selected_index]
result = model.respond(
    "ローカルAIを使うときに確認することを一つ、短く教えてください。",
    config={"maxTokens": 50},
)
print(result)

表示されたhandleが使いたいモデルと一致するか、LM Studioの画面や`lms ps`と照らしてから番号を入力します。入力が整数でない場合や範囲外ならエラーが見えるので、先頭のモデルを自動選択する動きにはなりません。`list_loaded_models("llm")`はダウンロード済みファイルの一覧ではなく、現在ロード済みのLLM handleを返します。

ロードと再利用を区別し、共有中のモデルを勝手に外さない

ダウンロード済みモデルとメモリ上にロードされたhandleは別です。`list_downloaded_models()`と`list_loaded_models()`は対象が異なり、ファイル名や画面の表示名がそのままロード済みinstanceの識別子だとは限りません。この記事の最小例は既存handleを使うため、モデルの検索・取得・ロードを追加しません。

LM Studio Python SDKのロード済みmodel handleとload操作の違い
操作動きの要点この手順での扱い
`list_loaded_models("llm")`現在ロード済みのLLM handleを返す一覧から選んで再利用する
`model(key)`モデルがなければロードし、既存instanceがあれば再利用する対象やメモリを確認せず追加しない
`load_new_instance(...)`別のモデルinstanceを新しく作る同じモデルを重複ロードしない
`unload(...)`対象instanceをアンロードする共有利用者がいる可能性を考え自動実行しない

scoped clientを閉じる操作は接続の後片付けであり、共有中のモデルを必ずアンロードするという説明には置き換えられません。ロード・再利用・アンロードの対象と影響は、使うSDK版の公式説明で確認します。

streamで文字を順に受け取り、最後に結果を見る

`respond_stream()`は逐次届くfragmentを順に扱う入口です。次の部分は、直前の例の`result = model.respond(...)`から`print(result)`までを置き換えるためのものです。両方を続けて書くと別々の応答を2回送ることになるため、必要な方だけ使います。

stream = model.respond_stream(
    "ローカルAIの接続確認で見る項目を一つ教えてください。",
    config={"maxTokens": 50},
)
for fragment in stream:
    print(fragment.content, end="", flush=True)

# 全fragmentを読み終えてから最終結果・statsへアクセスする
result = stream.result()
print()
print("stop_reason:", result.stats.stop_reason)
print("predicted_tokens_count:", result.stats.predicted_tokens_count)

ストリームを最後まで反復する前に`result()`を呼ぶと、完了前の結果を求めて例外になる場合があります。`wait_for_result()`は内部で完了を待つ別の呼び方で、結果を読むだけの`result()`とは動きが異なります。途中で止めたい場合は`cancel()`を明示し、単にループを`break`することをキャンセルと同一視しません。

接続・モデル・認証でつまずいたら一つずつ分ける

複数の設定を同時に変えず、Python環境、アプリ状態、host:port、loaded handle、SDK版、応答段階を分けて記録します。同期処理の待機timeoutはSDK 1.5の説明では応答やeventに60秒間進展がない場合のものです。すべての処理が合計60秒で終わるという意味ではなく、標準の対処としてtimeoutを無効にする案内もしません。

LM Studio Python SDKの接続・loaded model・streamの確認項目
症状最初に分けて確認する点
`ModuleNotFoundError`実行したPython環境と、そこへ入れた`lmstudio` SDKの版
接続できないLM Studio/daemonの状態、画面で確認したhost:port、SDK版。`/v1`付きREST URLをSDKのhostへ貼っていないか
ロード済み一覧が0件ダウンロード済み表示ではなくloaded LLMか、対象アプリやinstanceが一致するか
重複ロードでメモリが増える`model(key)`と`load_new_instance()`を混同していないか。既存handleから始める
stream結果やstatsが取れない全fragmentを反復した後に`result()`を呼んだか。失敗を握りつぶしていないか
認証で拒否されるアプリとSDKの両方がtoken認証に対応する版か。秘密値を出力せず現行docs/releaseで確認する

公式認証案内のアプリ条件だけで、インストール済みSDKのtoken対応まで決まるわけではありません。アプリ0.4.0以上に加え互換SDKが必要です。SDK 1.6.0b1のrelease noteにはAPI token supportが記載されていますが、pre-releaseです。SDK 1.5.0を含むすべてのstable版が`LM_API_TOKEN`や`api_token`に対応すると仮定せず、betaの導入、認証の無効化、tokenの表示は手順にしません。

次に読む場所を目的で選ぶ

Pythonから既存LLMのrespondやstreamを扱う基本が分かったら、用途に合わせてHTTP API、端末操作、embeddingへ進みます。SDK例のloopback接続だけで、モデルや周辺providerへの全通信が常にローカルであると証明できるわけではありません。個人情報や秘密を含まない短い入力から始め、選んだモデルとアプリ側の設定を確認してください。

よくある質問

Python SDKを使うたびにHTTP REST serverを有効にしますか?

SDK 1.5.0の公式project setupでは、任意のHTTP REST API serverを有効にしなくてもPython SDKを利用できる変更が説明されています。旧版では前提が違うため、インストール済みSDKとアプリの組み合わせで確認してください。

モデルをダウンロード済みなのにloaded model一覧が空なのはなぜですか?

ダウンロード済みファイルと、現在メモリへロードされて使えるLLM handleは別です。アプリ画面や`lms ps`で対象がロード済みか確認してください。掲載コードは自動でモデルをロードしません。

API tokenはSDK 1.5から必ず使えますか?

アプリの認証条件だけではSDK側の対応は分かりません。アプリとSDKの互換性を現行docs/releaseで確認してください。1.6.0b1にはtoken対応の記載がありますがpre-releaseであり、すべての1.5 stable版が同じ機能を持つとは断定できません。

stream.result()を先に呼ぶとどうなりますか?

streamの反復完了前に最終結果を求めると、完了していないため例外になることがあります。まず各fragmentを読み、最後まで消費してからresultとstatsを確認します。

次に読むおすすめルート

初めてローカルAIを触る人

まず全体像をつかみ、LM StudioとOllamaの違い、モデルサイズの考え方を順番に確認します。

  1. クラウドAIとローカルAIの使い分け
  2. ローカルLLMとは
  3. ローカルAIを入れる前に確認すること
  4. WindowsでローカルAIを始める完全ガイド
  5. Windows ARMでローカルAIを使う前の確認
  6. WindowsでOllamaをインストールする
  7. Windowsでローカル音声認識を始める
  8. WindowsでローカルTTSを始める
  9. WindowsでローカルOCRを始める
  10. Windowsで話者分離を始める
  11. WindowsでローカルAI翻訳を始める
  12. LM Studioとは
  13. GGUFとは
  14. GGUF版とは
  15. GGUFファイル名の読み方
  16. LM StudioでGGUFを入れる方法
  17. LM Studioで画像を読み込む方法
  18. LM Studioのモデル保存場所と移動
  19. 小型LLM・量子化の現実
  20. GGUF量子化安全とRAG/NPU研究
  21. Quant.npuとNPU向け静的量子化
  22. LENSで見るNPUレイテンシ予測
  23. Copilot+ PCのNPU期待値
  24. Hugging Face安全チェック
  25. PDF/RAG/引用確認の現実
  26. LM Studioで最初に選ぶモデル
  27. GGUFモデル選び診断
  28. Hugging FaceでGGUFモデルを探す方法
  29. Q4/Q5/Q8の違いと選び方
  30. 日本語GGUFモデルの選び方
  31. Q4/Q5/Q8研究ガイド
  32. Hermes Desktopとは
  33. Hermes DesktopとLM Studio接続
  34. Hermes DesktopとOllama接続
  35. Hermes Desktop接続トラブル
  36. Hermes AgentとDesktopの違い
  37. ローカルLLMツール比較
  38. ローカルAI更新メモ
  39. 診断ページ

あなたはどのタイプ?

関連チェック先

関連ツール

比較表を見る / 最初に検討しやすいツールを確認する