LM StudioのTool UseをWindowsで使う方法|/v1/chat/completions・function calling

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

LM StudioのTool Useは、モデルが外部関数やAPIの呼び出しを提案し、あなたのコードが引数を確認して実行し、その結果をモデルへ返す仕組みです。WindowsではDeveloper tabまたは公式CLIでlocal serverを起動し、custom toolsを使うなら /v1/chat/completions か /v1/responses を選びます。nativeの /api/v1/chat はstateful chatやMCP向けで、公式比較表ではcustom toolsとは別の扱いです。

導入前に確認すること

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

先に結論:custom toolsとnative /api/v1/chatを選び分ける

LM Studio公式のREST API比較では、nativeのPOST /api/v1/chatはstateful chat、LM StudioのMCP、モデル操作、context length指定などが強みです。一方、custom toolsはOpenAI互換のPOST /v1/chat/completions、POST /v1/responses、またはAnthropic互換endpointの機能として整理されています。

LM Studio Tool Useのendpoint選択
目的最初に選ぶ入口確認すること
自作関数・外部APIのtool usePOST /v1/chat/completionstools、tool_calls、modelのchat template、tool結果の往復
Responses形式とstateful chatPOST /v1/responsesresponse_id、store、previous_response_id、custom toolsの対応
LM Studioのstateful chat・MCPPOST /api/v1/chatinput、integrations、response_id、MCP権限。custom toolsとの違い
JSONの形を固定するStructured Outputresponse_format・JSON Schema、出力検証。tool実行とは別

Tool Useはモデルが直接コードを実行する機能ではありません。モデルの要求、アプリ側のdispatch、実行結果、最終回答を別の段階として設計し、未知の関数や危険な引数をそのまま実行しないことが重要です。

Windowsでlocal serverとモデルを先に確認する

Tool Useのコードを書く前に、LM StudioのDeveloper tabでlocal serverが起動しているか、利用モデルがロードされているか、接続portと認証設定が何かを確認します。公式例ではlocalhost:1234が使われますが、実際のportはLM Studioの画面やlms server statusを基準にします。

  1. LM StudioをWindowsで起動し、Developer tabでlocal serverの状態とportを確認する。
  2. モデルをChatまたはDeveloper tabからロードし、短い通常chatでモデル単体が応答するか確認する。
  3. 既存の端末運用ならlms ls、lms ps、lms server statusで保存済み・ロード中・serverを別々に見る。
  4. GET http://localhost:1234/v1/modelsで、OpenAI互換clientへ渡すmodel identifierを確認する。portは実際の表示に合わせる。
  5. まずtool 1個、短い質問、localhost、非機密データ、stream=falseでtool_callsを確認する。
lms server start
lms server status
lms ls
lms ps
curl.exe http://localhost:1234/v1/models

LM Studioの画面でchatできることは、OpenAI互換API、Tool Use、MCP、Responsesが同じ条件で動くことを意味しません。server、model identifier、endpoint、認証、tool対応を別々に記録します。

Chat Completionsへtoolsを渡す

LM Studio公式Tool Use docsでは、/v1/chat/completionsへOpenAI形式のtools配列を渡す例が案内されています。function名、description、引数のJSON Schemaをモデルへ提示し、tool callが返った場合だけアプリ側で関数を処理します。

curl.exe http://localhost:1234/v1/chat/completions -H "Content-Type: application/json" -d "{"model":"MODEL_IDENTIFIER","messages":[{"role":"user","content":"注文123の配送日を確認して"}],"tools":[{"type":"function","function":{"name":"get_delivery_date","description":"注文番号のテスト用配送日を返す","parameters":{"type":"object","required":["order_id"],"properties":{"order_id":{"type":"string"}}}}}],"stream":false}"
LM Studio Chat Completions Tool Useの確認項目
項目役割間違えやすい点
modelLM Studioが認識するidentifier表示名、ファイル名、OpenAIのモデル名と同じとは限らない
toolsモデルへ見せる関数一覧関数を追加しただけで実行権限まで付与したと考える
tool_callsモデルが提案した関数名・arguments必ず返る、必ず正しいJSONとは限らない
stream応答を分割して受け取るか最初はfalseで確認し、後からchunk処理を追加する

LM Studioはモデルの出力を解析して、正しい形式のtool callをchat.completionのmessage.tool_callsへ入れようとします。モデルが未対応、chat templateが合わない、形式が崩れる場合は、普通のcontentとして返る場合があります。

Python・JavaScriptではtool_callsを検証してdispatchする

OpenAI clientなどの互換SDKを使う場合も、LM Studioが返したtool_callsをそのまま実行せず、許可した関数だけへdispatchします。SDKを追加するかどうかは読者のアプリ側の選択であり、このサイトの依存関係は変更していません。

from openai import OpenAI

client = OpenAI(base_url="http://localhost:1234/v1", api_key="lm-studio")
functions = {"get_delivery_date": get_delivery_date}
messages = [{"role": "user", "content": "注文123の配送日を確認して"}]

response = client.chat.completions.create(
    model="MODEL_IDENTIFIER",
    messages=messages,
    tools=[{
        "type": "function",
        "function": {
            "name": "get_delivery_date",
            "description": "注文番号のテスト用配送日を返す",
            "parameters": {
                "type": "object",
                "required": ["order_id"],
                "properties": {"order_id": {"type": "string"}},
            },
        },
    }],
)
message = response.choices[0].message
messages.append(message)
for call in message.tool_calls or []:
    fn = functions.get(call.function.name)
    order_id = call.function.arguments.get("order_id")
    if fn is None or not isinstance(order_id, str) or not order_id.isdecimal():
        continue
    messages.append({"role": "tool", "tool_call_id": call.id, "content": fn(order_id)})
if message.tool_calls:
    final = client.chat.completions.create(model="MODEL_IDENTIFIER", messages=messages)
    print(final.choices[0].message.content)
LM Studio Tool Use SDKの境界
境界実装すること安全側の判断
SDK clientbase_url、api_key、model、timeoutを合わせるlocal例の値を外部認証の保証とみなさない
tool_callsfunction名、id、argumentsを取得する未知のfunction、壊れたJSON、型違いを拒否する
tool resultassistant messageとtool messageを同じ履歴へ戻す結果を新規会話にして文脈を失わない
再呼び出しtool結果を受けて最終回答を生成する最大回数、timeout、実行ログを決める

tool_call_idや引数の扱いは使うSDKとendpointの仕様に合わせます。Python、JavaScript、curlの表記を混ぜず、まず公式Tool Useの例と手元のレスポンスを確認してから型を固定してください。

Responsesとnative /api/v1/chatの違いを確認する

LM Studioのnative REST APIは、入力と応答を保持するstateful chat、MCP integrations、モデルloadやprompt processingのイベント、context length指定に向いています。custom toolを自分のfunctionとして渡す目的なら、公式比較表にあるOpenAI互換のChat CompletionsまたはResponsesを検討します。

LM Studio native v1とOpenAI互換APIの比較
APIstateful chatcustom tools主な用途
/api/v1/chat対応公式比較表では非対応LM Studioのstateful chat、MCP integrations、nativeイベント
/v1/chat/completions非対応対応既存OpenAI client、function calling、tool_calls
/v1/responses対応対応Responses形式、response_id、custom tools

native /api/v1/chatへOpenAIのmessagesやtool_callsをそのまま送る、またはOpenAI互換のresponseをnative outputと同じparserで読む、といった混在は避けます。MCPを使う場合はnative chatのintegrations、custom functionを使う場合は互換endpointというように、目的からpathを決めます。

tool_callsが出ない・streamが崩れるときの切り分け

LM Studio公式Tool Use docsは、tool use用に学習されていないモデルや小さいモデルでは、tool callの形式を正しく出せず、tool_callsへ解析されずcontentとして返る可能性を説明しています。最初からモデルだけを疑わず、server、model identifier、endpoint、tools schema、chat template、streamを順に分けます。

LM Studio Tool Useトラブルの切り分け
症状原因候補最初の確認
connection refusedserver停止、port違い、Windows firewall、認証Developer tab、lms server status、localhost、auth設定
model not foundidentifier違い、未ロード、clientの固定名GET /v1/models、lms ps、実際のmodel値
tool_callsが空モデル未対応、template、schema、質問が曖昧tool 1個、短いprompt、stream=false、公式対応モデル情報
contentにtool JSONが出るLM Studioがtool callとして解析できないchat template、モデルサイズ、公式Tool Useの形式、手動parserを混同しない
最終回答が出ないassistant/tool messageの順序、tool_call_id、再送parser最初のresponseとtool resultを安全なログで比較
streamが途中で崩れるSSEの読み方、partial tool call、接続切断stream=falseで基準を作り、後からchunk処理を追加
  1. 通常の短文chatを確認する。
  2. Chat Completionsのstream=falseでtool 1個を確認する。
  3. tool_callsが返ったresponseと、戻すtool resultの形を保存する。
  4. multi-turn、Responses、stream、MCPの順に1つずつ追加する。
  5. 一度にモデル、port、API path、tools schema、parserを全部変えない。

最初は読み取り用toolだけにし、外部作用を人間の確認へ残す

Tool Useを動かすことと、安全に自動化することは別です。LM Studioがlocal serverで動いていても、toolがfilesystem、network、メール、データベース、ブラウザ、認証情報へ到達するなら、実行範囲と送信先は別途確認が必要です。

  • toolsは必要な関数だけをallowlistにし、ホームディレクトリ全体や任意コマンドを渡さない。
  • argumentsを型、値、対象ID、ファイル範囲、URL、送信先、認証情報の有無で検証する。
  • 最初は公開データの読み取り、テスト用注文番号、限定フォルダ、localhostに絞る。
  • 削除、上書き、コード実行、外部送信、購入、メール送信は自動loopにせず、人間の確認を必須にする。
  • local model、LM Studio server、MCP、tool関数、ログ、cloud providerを別々の通信・保存経路として記録する。

Structured OutputはJSONの形を検証しやすくする仕組みで、Tool Useは関数呼び出しの要求と実行結果を往復する仕組みです。診断結果のJSON化と、実際のファイル操作やAPI送信を同じ許可として扱いません。

よくある質問

LM StudioのTool UseはWindowsで使えますか?

LM Studio公式docsにはlocal serverとOpenAI互換APIを使うTool Useの例があります。WindowsではDeveloper tabまたは公式CLIでserverを起動し、利用モデル、port、endpoint、認証を確認してから小さく試してください。

LM StudioのTool Useで使うendpointは何ですか?

custom toolsを使う場合は、公式docsのOpenAI互換POST /v1/chat/completionsまたはPOST /v1/responsesを中心に確認します。native POST /api/v1/chatはstateful chatやMCP向けで、公式比較表ではcustom toolsとは別の扱いです。

LM Studioがtoolを自動で実行しますか?

モデルは関数名とargumentsを要求するだけで、実際の関数実行はあなたのコードが行います。allowlist、型、値、権限を検証し、実行結果をtool messageとして戻してから最終回答を生成します。

tool_callsが返らず、JSONがcontentに出るのはなぜですか?

モデルがTool Use向けに学習されていない、chat templateやtools schemaが合わない、clientのendpointが違う、streamの解析に失敗した可能性があります。まずtool 1個、短い質問、stream=false、実際のmodel identifierで確認します。

LM Studioのnative APIとOpenAI互換APIは何が違いますか?

native /api/v1/chatはstateful chat、MCP integrations、モデル操作やnative streaming eventを扱う入口です。OpenAI互換の/v1/chat/completionsや/v1/responsesは既存clientやcustom toolsに向きます。pathとresponse parserを混ぜないでください。

LM StudioのTool UseとMCPは同じですか?

同じではありません。Tool Useはモデルが関数やAPIを呼びたいと要求し、コードが実行する流れです。MCPはツールやデータソースをホストアプリへ接続するプロトコルで、native /api/v1/chatのintegrationsなど別の設定が関係します。

Structured OutputでTool Useの代わりになりますか?

目的が違います。Structured Outputは返答をJSON Schemaに沿わせる仕組み、Tool Useは関数呼び出しの要求と実行結果を往復する仕組みです。JSONを検証できても、ファイルやAPIの操作権限が安全になるわけではありません。

次に読むおすすめルート

開発・API連携したい人

LM StudioとOllamaの違いを確認し、API、長文処理、RAGまで段階的に進みます。

  1. ローカルAIをAPIで使う方法
  2. WindowsでローカルAIコーディングを始める
  3. VS CodeでローカルAIを使う
  4. LM Studioのlms CLIを使う
  5. LM StudioのStructured Outputを使う
  6. LM StudioのResponses APIを使う
  7. LM StudioのMCPをAPIで使う
  8. ローカルAIでJSON出力する方法
  9. LM StudioとOllamaの違い
  10. コンテキスト長とは
  11. RAG・埋め込み・ベクトルDBの仕組み
  12. OllamaのEmbedding APIを使う
  13. OllamaのResponses APIを使う
  14. OllamaのAPI認証を確認する
  15. OllamaをWindowsのLANから使う前の確認
  16. OllamaのモデルID・能力を確認する
  17. OllamaのModelfileを使う
  18. Ollama native API streamingを使う
  19. Ollama Web Search APIを使う
  20. OllamaのThinkingを使う
  21. LM StudioのEmbedding APIを使う
  22. RAG評価と引用確認の基礎
  23. faithfulness確認
  24. ローカルRAGのプライバシー
  25. MCPとは
  26. ローカルLLMの安全性とプライバシー
  27. Gemma 4 12Bの更新メモ
  28. Hermes Desktopとは
  29. Hermes DesktopとLM Studio接続
  30. Hermes DesktopとOllama接続
  31. Hermes Desktop接続トラブル
  32. Hermes DesktopでOpenRouterを使う
  33. Hermes DesktopでDeepSeek APIを使う
  34. Hermes DesktopでProviderを使い分ける
  35. Hermes DesktopとLM Studio接続の確認ポイント
  36. Hermes AgentとDesktopの違い
  37. Ollamaとは
  38. Windows ARMでローカルAIを使う前の確認
  39. WindowsでOllamaをインストールする
  40. Ollamaのローカルモデルとcloudモデルの違い
  41. Ollamaのモデル保存場所と移動
  42. Ollamaのモデル一覧・削除・容量整理
  43. OllamaのOpenAI互換APIを使う
  44. Ollamaのtool callingを使う
  45. OllamaのStructured Outputsを使う
  46. OllamaのEmbedding APIを使う
  47. OllamaのResponses APIを使う
  48. OllamaのAPI認証を確認する
  49. OllamaのモデルID・能力を確認する
  50. OllamaのModelfileを使う
  51. Ollama native API streamingを使う
  52. LM StudioのEmbedding APIを使う
  53. Ollamaの解説
  54. 診断基準
  55. 比較表

あなたはどのタイプ?

関連チェック先

  • LM Studio REST API - native /api/v1とOpenAI互換endpointの対応機能、stateful chat、custom toolsの違いを確認できます。
  • LM Studio Tool Use - OpenAI互換Chat Completions/Responsesでのtools、tool_calls、モデル互換性、実行ループを確認できます。
  • LM Studio native chat API - POST /api/v1/chatのinput、integrations、stateful response、MCP、streamの仕様を確認できます。
  • LM Studio OpenAI Compatibility - OpenAI互換endpointのbase URL、client、Chat Completions、Responsesの入口を確認できます。
  • LM Studio Structured Output - JSON Schemaによるstructured outputとtool useの役割の違いを確認できます。
  • LM Studio local server - Developer tabでのlocal serverとAPI利用の前提を確認できます。
  • LM Studio lms CLI - lms CLIの用意、server起動、モデル操作の現行入口を確認できます。

関連ツール

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