LM Studio OpenAI 互換インターフェイスの使用方法: ローカル API アクセスのチュートリアル

LM Studio を OpenAI 互換のローカル API として使用する方法を紹介します。サーバーの起動、モデル ID の取得、チャット完了の呼び出し、Python SDK 構成、ストリーミング出力、埋め込み、および一般的な 404/接続障害のトラブルシューティングです。

LM Studio は、ローカルにロードされたモデルを OpenAI 互換インターフェイスに変換できます。既存のプロジェクトの場合、通常、呼び出しロジックを書き直す必要はありません。OpenAI クライアントの base_url を LM Studio のローカル アドレスに変更し、次に model を LM Studio のモデル識別子に変更します。

最も一般的に使用されるアドレスは次のとおりです。

1
http://localhost:1234/v1

既存の Python、JavaScript、C#、またはその他の OpenAI クライアント コードにプラグインするのに適しています。以下の手順は、「最初に実行してからプロジェクトにアクセスする」という順序になっています。

まず結論から話しましょう

LM Studio の OpenAI 互換インターフェイスを使用するには、次の 4 つの手順を完了するだけで済みます。

  1. LM Studio の 開発者 ページでローカル サーバーを起動します。
  2. チャットモデルをロードします。
  3. http://localhost:1234/v1/models をリクエストし、モデル ID を確認します。
  4. クライアント base_urlhttp://localhost:1234/v1 に変更します。

最小限の Python 記述:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",
)

response = client.chat.completions.create(
    model="你的 LM Studio 模型 ID",
    messages=[
        {"role": "user", "content": "用一句话解释什么是 KV cache。"}
    ],
)

print(response.choices[0].message.content)

api_key="lm-studio" は、認証が有効になっていない場合の OpenAI SDK の単なるプレースホルダー値です。 LM Studio サービス設定で API トークンを有効にしている場合は、実際のトークンに変更する必要があります。

ステップ 1: LM Studio ローカルサーバーを起動する

LM Studio を開き、開発者 ページに入り、サーバーの開始 スイッチをオンにします。デフォルトのサービスは以下をリッスンします。

1
http://localhost:1234

LM Studio コマンド ライン ツールを使用して以下を開始することもできます。

1
lms server start

lms がコンピュータで利用できない場合は、LM Studio の公式ドキュメントに従って CLI をインストールできます。

1
npx lmstudio install-cli

サービスの開始は、API ポートがリッスンしていることを意味するだけで、推論できるモデルがあることを意味するわけではありません。引き続きチャット ページまたは開発者ページでモデルをロードするか、lms load を使用してモデルをロードします。

ステップ 2: まずモデル ID を取得します

ファイル名に基づいて model パラメーターを推測しないでください。最も安定した方法は、モデルのリストをリクエストすることです。

1
curl http://localhost:1234/v1/models

Windows PowerShell は次の場合に使用できます。

1
Invoke-RestMethod http://localhost:1234/v1/models

返された data リストにはモデル識別子が含まれます。次に、リクエストで実際に返された ID を model に入力します。

この手順により、モデルがダウンロードされているがロードされていない、またはコードに記述された名前が LM Studio によって現在公開されているモデル ID と一致していないという 2 つの一般的な問題を回避できます。

ステップ 3:curl を使用してチャットの完了をテストする

最も直感的な OpenAI 互換エンドポイントを使用して最初のテストを行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "你的 LM Studio 模型 ID",
    "messages": [
      {"role": "system", "content": "你是一个简洁的中文助手。"},
      {"role": "user", "content": "解释什么是向量数据库。"}
    ],
    "temperature": 0.7
  }'

成功した場合、通常、答えは次のようになります。

1
choices[0].message.content

チャット完了は、チャット モデルのプロンプト テンプレートを自動的に適用します。モデル自体がチャット/命令タイプである限り、通常、クライアント側で特別な制御トークンを手動で結合する必要はありません。

OpenAI を Python プロジェクトに置き換える方法

プロジェクトが元々 OpenAI Python SDK を使用している場合、通常は base_urlmodel の 2 つの焦点のみがあります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",
)

completion = client.chat.completions.create(
    model="你的 LM Studio 模型 ID",
    messages=[
        {"role": "system", "content": "你是一名 Python 助手。"},
        {"role": "user", "content": "写一个读取 JSON 文件的最小示例。"},
    ],
    temperature=0.2,
    max_tokens=500,
)

print(completion.choices[0].message.content)

この利点は、アプリケーション層が引き続き OpenAI SDK のオブジェクトと戻り形式を使用し、バックエンドがクラウド OpenAI API とローカル LM Studio の間で切り替えることができることです。

ただし、「互換性」とは、クラウド モデルのすべての機能をそのままコピーできることを意味するものではありません。ツール呼び出し、構造化出力、ビジュアル入力、推論コンテンツ、および応答 API が利用できるかどうかは、依然として LM Studio のバージョン、現在のモデルの機能、および対応するエンドポイントのサポートに依存します。

ストリーミング出力

チャット完了に stream=True を設定します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
stream = client.chat.completions.create(
    model="你的 LM Studio 模型 ID",
    messages=[{"role": "user", "content": "写一首四行小诗。"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

ストリーミング出力は、チャット インターフェイス、ターミナル ツール、および長い回答に適しています。これにより、ユーザーの待機エクスペリエンスが向上しますが、ローカル モデル自体の生成が高速化されるわけではありません。

埋め込み、レスポンス、ネイティブ REST API のいずれかを選択する方法

LM Studio の OpenAI 互換性レイヤーには、次の共通エンドポイントが含まれています。

終点 何に適しているか
/v1/models 現在利用可能なモデルを問い合わせる
/v1/chat/completions ほとんどの従来のチャット コードと互換性があります
/v1/responses 新しい OpenAI Response スタイルが必要な場合に使用します。
/v1/embeddings ベクトル化されたテキスト、RAG 取得
/v1/completions 従来のテキスト補完との互換性

LM Studio には独自のネイティブ インターフェイスもあります。現在推奨されるパスは、/api/v1/chat/api/v1/models などの /api/v1/* です。ネイティブ API は、モデルのロード/アンロード、ステートフル チャット、MCP または LM Studio 固有の機能を必要とするプロジェクトに適しています。

簡単な判断: すでに OpenAI SDK プロジェクトがある場合は、最初に /v1 を使用します。新しいプロジェクトでローカル モデルの詳細な管理が必要な場合、または LM Studio の専用機能を使用する場合は、/api/v1 を検討してください。

構造化された出力とツール呼び出し

LM Studio の OpenAI 互換性レイヤーは、対応するエンドポイントでのツール呼び出しと構造化出力をサポートしていますが、最初に次の 2 つのことを確認してください。

  1. ロードするモデルには、信頼性の高いツール呼び出し機能または JSON 出力機能が必要です。
  2. LM Studio とクライアント SDK のバージョンは十分に新しいものである必要があります。

リクエストにエラーがないからといって、モデルがスキーマに準拠した結果を安定して生成できるとは考えないでください。テストは、オンラインにする前に、実際のパラメータ、異常な分岐、および複数ラウンドのリクエストを使用して実行する必要があります。

一般的なエラーのトラブルシューティング

1. 接続が拒否された、または Connection refused

まず、開発者ページでサーバーが起動していることを確認してから、以下をテストします。

1
curl http://localhost:1234/v1/models

ここに接続できない場合は、まずポート、LM Studio がまだ実行中かどうか、またはローカル セキュリティ ソフトウェアがローカル ポートをブロックしていないかどうかを確認してください。

2. 404 Not Found

最も一般的な理由は、パスが正しく書かれていないことです。 OpenAI 互換のチャット エンドポイントは次のとおりです。

1
/v1/chat/completions

/api/v1/chat/completions ではありません。後者は、別のネイティブ API パスのセットに属します。

3. モデルが存在しないか、空のリストが返される

まず LM Studio にモデルをロードし、/v1/models が返されることを確認します。コード内の model は、実際に返された識別子を使用する必要があり、他の人のモデル名をコピーしないでください。

4. 答えられるが形式がおかしい

指示/チャット モデルの代わりに基本モデルがロードされていることを確認します。チャット テンプレートが LM Studio によって自動的に適用されていることも確認してください。ツール呼び出しと JSON 出力については、モデルが実際にその機能をサポートしていることも確認してください。

5. LANデバイスにアクセスできない

LM Studio は、開発者ページでローカル ネットワークへのサービスを構成できます。ネットワーク アクセスを有効にした後、ファイアウォール、リスニング アドレス、API トークンの設定を確認する必要もあります。認証されていないローカル モデル サービスをパブリック ネットワークに直接公開しないでください。

最小限のアクセスのチェックリスト

1
2
3
4
5
6
7
1. LM Studio Developer -> Start server
2. 加载一个 instruct/chat 模型
3. curl http://localhost:1234/v1/models
4. 客户端 base_url 改为 http://localhost:1234/v1
5. model 填实际返回的 ID
6. 用 chat/completions 跑通单轮请求
7. 再测试流式、工具调用、Embeddings 或结构化输出

最初に最小限のリクエストを実行してから、RAG、エージェント、またはエディター プラグインに接続すると、トラブルシューティングがはるかに簡単になります。

要約する

LM Studio の OpenAI 互換インターフェイスは、ローカル モデルを既存の OpenAI SDK プロジェクトに接続するのに適しています。最も重要なことは、コードの一部をコピーすることではなく、サービスが開始されていること、モデルがロードされていること、base_url/v1 を指していること、model が実際のモデル ID を使用していることを確認することです。

より詳細なローカル モデル管理、ステートフル チャット、または MCP が必要な場合は、LM Studio の /api/v1/* ネイティブ インターフェイスの方が適しています。古いプロジェクトとの迅速な互換性が目的の場合、通常は /v1/chat/completions を使用し続けるのが最も簡単です。

参照:

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。