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の機能として整理されています。
| 目的 | 最初に選ぶ入口 | 確認すること |
|---|---|---|
| 自作関数・外部APIのtool use | POST /v1/chat/completions | tools、tool_calls、modelのchat template、tool結果の往復 |
| Responses形式とstateful chat | POST /v1/responses | response_id、store、previous_response_id、custom toolsの対応 |
| LM Studioのstateful chat・MCP | POST /api/v1/chat | input、integrations、response_id、MCP権限。custom toolsとの違い |
| JSONの形を固定する | Structured Output | response_format・JSON Schema、出力検証。tool実行とは別 |
Tool Useはモデルが直接コードを実行する機能ではありません。モデルの要求、アプリ側のdispatch、実行結果、最終回答を別の段階として設計し、未知の関数や危険な引数をそのまま実行しないことが重要です。
- ローカルAI API入門 - localhost、API server、providerの全体像を確認する
- LM Studioのlms CLI - server start、status、model IDを端末から確認する
- LM Studio公式REST API - nativeと互換endpointの機能比較を読む
Windowsでlocal serverとモデルを先に確認する
Tool Useのコードを書く前に、LM StudioのDeveloper tabでlocal serverが起動しているか、利用モデルがロードされているか、接続portと認証設定が何かを確認します。公式例ではlocalhost:1234が使われますが、実際のportはLM Studioの画面やlms server statusを基準にします。
- LM StudioをWindowsで起動し、Developer tabでlocal serverの状態とportを確認する。
- モデルをChatまたはDeveloper tabからロードし、短い通常chatでモデル単体が応答するか確認する。
- 既存の端末運用ならlms ls、lms ps、lms server statusで保存済み・ロード中・serverを別々に見る。
- GET http://localhost:1234/v1/modelsで、OpenAI互換clientへ渡すmodel identifierを確認する。portは実際の表示に合わせる。
- まずtool 1個、短い質問、localhost、非機密データ、stream=falseでtool_callsを確認する。
lms server start
lms server status
lms ls
lms ps
curl.exe http://localhost:1234/v1/modelsLM Studioの画面でchatできることは、OpenAI互換API、Tool Use、MCP、Responsesが同じ条件で動くことを意味しません。server、model identifier、endpoint、認証、tool対応を別々に記録します。
- LM Studioの基本情報 - Windowsアプリ、モデル、serverの入口を見る
- LM Studioで最初のモデル - モデル選びと単体chatを先に確認する
- LM Studioが起動しないとき - アプリ、runtime、Windows側の切り分けへ進む
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}"
| 項目 | 役割 | 間違えやすい点 |
|---|---|---|
| model | LM Studioが認識するidentifier | 表示名、ファイル名、OpenAIのモデル名と同じとは限らない |
| tools | モデルへ見せる関数一覧 | 関数を追加しただけで実行権限まで付与したと考える |
| tool_calls | モデルが提案した関数名・arguments | 必ず返る、必ず正しいJSONとは限らない |
| stream | 応答を分割して受け取るか | 最初はfalseで確認し、後からchunk処理を追加する |
LM Studioはモデルの出力を解析して、正しい形式のtool callをchat.completionのmessage.tool_callsへ入れようとします。モデルが未対応、chat templateが合わない、形式が崩れる場合は、普通のcontentとして返る場合があります。
- LM Studio Tool Use公式docs - tools schemaとsingle turnの公式例を見る
- LM Studio OpenAI互換API - base URL、endpoint、model IDの全体像へ戻る
- LM Studio公式OpenAI Compatibility - 互換endpointの前提を確認する
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)
| 境界 | 実装すること | 安全側の判断 |
|---|---|---|
| SDK client | base_url、api_key、model、timeoutを合わせる | local例の値を外部認証の保証とみなさない |
| tool_calls | function名、id、argumentsを取得する | 未知のfunction、壊れたJSON、型違いを拒否する |
| tool result | assistant messageとtool messageを同じ履歴へ戻す | 結果を新規会話にして文脈を失わない |
| 再呼び出し | tool結果を受けて最終回答を生成する | 最大回数、timeout、実行ログを決める |
tool_call_idや引数の扱いは使うSDKとendpointの仕様に合わせます。Python、JavaScript、curlの表記を混ぜず、まず公式Tool Useの例と手元のレスポンスを確認してから型を固定してください。
- LM Studio Tool UseのPython例 - single turn・multi-turn・agent例を見る
- VS CodeでLM Studioを使う - provider、Chat、agent、APIを分けて確認する
- WindowsローカルAIコーディング - ファイル作業のcheckpointと権限を確認する
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を検討します。
| API | stateful chat | custom 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を決めます。
- LM Studio REST APIの比較表 - stateful、MCP、custom tools、streamの対応を確認する
- LM Studio native chat API - input、integrations、response output、statefulを確認する
- MCPとは - MCP、tool calling、権限の役割を分ける
tool_callsが出ない・streamが崩れるときの切り分け
LM Studio公式Tool Use docsは、tool use用に学習されていないモデルや小さいモデルでは、tool callの形式を正しく出せず、tool_callsへ解析されずcontentとして返る可能性を説明しています。最初からモデルだけを疑わず、server、model identifier、endpoint、tools schema、chat template、streamを順に分けます。
| 症状 | 原因候補 | 最初の確認 |
|---|---|---|
| connection refused | server停止、port違い、Windows firewall、認証 | Developer tab、lms server status、localhost、auth設定 |
| model not found | identifier違い、未ロード、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処理を追加 |
- 通常の短文chatを確認する。
- Chat Completionsのstream=falseでtool 1個を確認する。
- tool_callsが返ったresponseと、戻すtool resultの形を保存する。
- multi-turn、Responses、stream、MCPの順に1つずつ追加する。
- 一度にモデル、port、API path、tools schema、parserを全部変えない。
- LM Studioのトラブルハブ - 起動、Prompt Processing、native API、streamの共通診断へ進む
- LM Studio Prompt Processing - tool定義やMCPで入力が重くなる条件を確認する
- LM Studio GPU offload - モデルとPC負荷をTool Useの成否と分ける
最初は読み取り用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 Structured Output公式docs - JSON Schemaと出力検証の役割を見る
- ローカルLLMの安全性 - 外部送信、履歴、provider、権限を確認する
- LM StudioやOllamaのログ - server、履歴、ログ、model fileの保存範囲を分ける
よくある質問
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まで段階的に進みます。
- ローカルAIをAPIで使う方法
- WindowsでローカルAIコーディングを始める
- VS CodeでローカルAIを使う
- LM Studioのlms CLIを使う
- LM StudioのStructured Outputを使う
- LM StudioのResponses APIを使う
- LM StudioのMCPをAPIで使う
- ローカルAIでJSON出力する方法
- LM StudioとOllamaの違い
- コンテキスト長とは
- RAG・埋め込み・ベクトルDBの仕組み
- OllamaのEmbedding APIを使う
- OllamaのResponses APIを使う
- OllamaのAPI認証を確認する
- OllamaをWindowsのLANから使う前の確認
- OllamaのモデルID・能力を確認する
- OllamaのModelfileを使う
- Ollama native API streamingを使う
- Ollama Web Search APIを使う
- OllamaのThinkingを使う
- LM StudioのEmbedding APIを使う
- RAG評価と引用確認の基礎
- faithfulness確認
- ローカルRAGのプライバシー
- MCPとは
- ローカルLLMの安全性とプライバシー
- Gemma 4 12Bの更新メモ
- Hermes Desktopとは
- Hermes DesktopとLM Studio接続
- Hermes DesktopとOllama接続
- Hermes Desktop接続トラブル
- Hermes DesktopでOpenRouterを使う
- Hermes DesktopでDeepSeek APIを使う
- Hermes DesktopでProviderを使い分ける
- Hermes DesktopとLM Studio接続の確認ポイント
- Hermes AgentとDesktopの違い
- Ollamaとは
- Windows ARMでローカルAIを使う前の確認
- WindowsでOllamaをインストールする
- Ollamaのローカルモデルとcloudモデルの違い
- Ollamaのモデル保存場所と移動
- Ollamaのモデル一覧・削除・容量整理
- OllamaのOpenAI互換APIを使う
- Ollamaのtool callingを使う
- OllamaのStructured Outputsを使う
- OllamaのEmbedding APIを使う
- OllamaのResponses APIを使う
- OllamaのAPI認証を確認する
- OllamaのモデルID・能力を確認する
- OllamaのModelfileを使う
- Ollama native API streamingを使う
- LM StudioのEmbedding APIを使う
- Ollamaの解説
- 診断基準
- 比較表
あなたはどのタイプ?
- 初めてローカルAIを触る人 - まず全体像をつかみ、LM StudioとOllamaの違い、モデルサイズの考え方を順番に確認します。
- LM Studio・Ollamaの症状別トラブルを解決したい人 - 起動、モデルロード、Prompt Processing、generation、API接続、GPU確認をツール別に分けて読みます。
- GPUなし・低スペックPCの人 - 軽量モデル、メモリ別の目安、重いときの確認ポイントを先に見ます。
- PDFや資料を読ませたい人 - 先に基本を押さえ、モデル単体の確認後にAnythingLLMへ進みます。
- ローカルAIエージェントを試したい人 - Bionic、Ollama、AnythingLLM、Hermesを役割別に分け、local/cloud、tool、保存、PC負荷を順番に確認します。
- 開発・API連携したい人 - LM StudioとOllamaの違いを確認し、API、長文処理、RAGまで段階的に進みます。
関連チェック先
- 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起動、モデル操作の現行入口を確認できます。