ローカルAIをAPIで使うには?LM Studio・Ollama・JanのOpenAI互換APIを初心者向けに解説

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

ローカルAIは、チャット画面で使うだけでなく、APIサーバーとして動かして自分のアプリやスクリプトから呼び出せます。LM Studio、Ollama、JanにはOpenAI互換APIとして使える機能があり、既存のOpenAI向けコードを一部変更して使える場合があります。ただし、ポート番号、対応API、モデル、セキュリティ設定はツールごとに違うため、まずはlocalhostで小さく試すのが安全です。

導入前に確認すること

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

localhost:11434とLM Studio APIのトラブルを分ける

API一般の記事から、Ollamaのlocalhost:11434問題とLM Studioのnative v1/API互換問題へ分岐できるようにします。API接続が失敗した時は、アプリやserverが起動しているか、endpoint、model identifier、stream、HTTP error、モデル単体の速度を別に記録します。

localhost:11434とLM Studio APIのトラブルを分けるの表
症状最初に読む記録
Ollama APIがlocalhost:11434へつながらないOllama起動・接続記事を確認tray、server、port、app/server.log
Ollama APIの返答が遅いOllama速度記事を確認load/prompt eval/eval fields、PROCESSOR
Ollama APIが途中で終わるOllama途中停止記事を確認done、done_reason、最終chunk
LM Studioの最初の返答が遅いLM Studio Prompt Processing記事を確認native v1 API、Prompt Processing、入力長
LM Studio APIで途中停止LM Studio途中停止記事を確認message/error/chat.end、runtime、設定

LM Studioの現行API pathを分ける

LM Studioのnative APIとOpenAI互換APIのpath比較
種類path主な用途位置づけ
LM Studio native v1POST /api/v1/chatstateful chat、LM Studio独自のMCP・モデル操作現行native API
OpenAI Chat Completions互換POST /v1/chat/completions従来のChat Completions client、tool use互換API
OpenAI Responses互換POST /v1/responsesResponses client、stateful chat、custom tools互換API

LM Studio 0.4.0の発表記事には歴史的な`/v1/chat`表記がありますが、現行Developer Docsのnative chat endpointは`POST /api/v1/chat`です。`/v1/chat/completions`と`/v1/responses`はOpenAI互換APIで、native pathとは別に扱います。

モデル一覧GETの成功から生成POSTを確かめる

LM Studioのmodel一覧を取得できても、chat生成が成功したとは限りません。OpenAI互換の`GET /v1/models`は`data[].id`を返し、JIT loadingが有効なら未ロードのダウンロード済みmodelも含むことがあります。nativeの`GET /api/v1/models`は別のschemaで、`models[].key`、`type`、`loaded_instances`からLLM・embedding・decisionの種類とロード中のinstanceを確認できます。nativeのresponseをOpenAI互換requestのmodel listとして扱わず、chatには`/v1/models`で返った実際の`id`を使います。

LM Studioで一覧・ロード状態・chat応答を確かめるendpoint
endpoint見るfield分かること
GET /v1/models`data[].id`OpenAI互換serverから見えるmodel ID。JIT時は未ロードのdownload済みmodelが含まれる場合がある
GET /api/v1/models`models[].key` / `type` / `loaded_instances`native APIのmodel識別子と種類、現在ロードされたinstance
POST /v1/chat/completions`choices[0].message.content`Chat Completions形式の短い応答が返ったか

以下はLM Studio 0.4.0以降とWindows PowerShell 5.1またはPowerShell 7を対象にしています。まずLM StudioアプリのDeveloper / Local Server画面または`lms server status`で、起動状態と実際のloopback host・portを確認します。以下の`1234`は公式例のdefault値です。表示が別のportなら置き換え、`$server`にはhostとportだけを入れてください。LAN公開やfirewall変更は不要です。

Server認証を有効にしている場合は、LM Studio 0.4.0以降のManage Tokensで作成した有効なAPI tokenと必要なpermissionを`Authorization: Bearer`として`$headers`に設定してから実行します。3つのrequestは同じ`$headers`を使うので、両方のGETと次のPOSTへtokenが渡ります。認証を無効にして回避せず、tokenを共有ログやissueへ貼らないでください。

$server = 'http://localhost:1234' # 画面に表示されたloopback host・portに置き換える
$headers = @{} # 認証有効時は有効なAuthorization: Bearerを含むhashtableに置き換えて実行

$openAiRequest = @{
  Uri = "$server/v1/models"
  Method = 'Get'
  Headers = $headers
  ErrorAction = 'Stop'
  TimeoutSec = 20
  UseBasicParsing = $true
}
$openAiModels = Invoke-RestMethod @openAiRequest

$nativeRequest = @{
  Uri = "$server/api/v1/models"
  Method = 'Get'
  Headers = $headers
  ErrorAction = 'Stop'
  TimeoutSec = 20
  UseBasicParsing = $true
}
$nativeModels = Invoke-RestMethod @nativeRequest

$openAiModels.data | Select-Object -ExpandProperty id
$nativeModels.models | Select-Object type, key, @{Name = 'loaded'; Expression = { $_.loaded_instances.Count -gt 0 }}

一覧の先頭をそのまま選ばず、アプリ上のchat用LLMと照合します。native一覧で`type`が`embedding`または`decision`のmodelはchat用として選びません。`loaded_instances`が空なら未ロードです。JITでは未ロードmodelを最初のrequest時にロードする場合もありますが、GETが200でもロードや生成の成功を意味しません。

次に、`/v1/models`の`data[].id`からchat用として確認したIDを入力し、Chat Completionsのschemaで短いrequestを送ります。構造化したhashtableからJSONを作り、UTF-8 bytesを明示しているため、Windows PowerShell 5.1とPowerShell 7で同じbodyを送れます。

$modelId = Read-Host '/v1/models の data[].id にあるchat用model IDを入力'
if ($openAiModels.data.id -notcontains $modelId) {
  throw '入力したIDがGET /v1/modelsの一覧にありません。IDを再確認してください。'
}

$request = @{
  model = $modelId
  messages = @(@{ role = 'user'; content = '「OK」とだけ返してください。短い形式確認です。' })
  stream = $false
  max_tokens = 128
}
$json = $request | ConvertTo-Json -Depth 5 -Compress
$jsonBytes = [System.Text.Encoding]::UTF8.GetBytes($json)

$chatRequest = @{
  Uri = "$server/v1/chat/completions"
  Method = 'Post'
  Headers = $headers
  ErrorAction = 'Stop'
  ContentType = 'application/json; charset=utf-8'
  Body = $jsonBytes
  TimeoutSec = 120
  UseBasicParsing = $true
}
$response = Invoke-RestMethod @chatRequest

if (-not $response.choices -or -not $response.choices[0].message) {
  throw 'Chat Completions形式のchoices[0].messageがありません。response schema、選択したAPI family、serverのHTTP errorを確認してください。'
}
[pscustomobject]@{
  finish_reason = $response.choices[0].finish_reason
  content = $response.choices[0].message.content
}
LM Studio model list・Chat Completionsでよくある失敗と次の確認
結果次に確認すること
接続拒否・HTTP statusなし・timeoutLocal Serverの起動状態と、3つのrequestで同じloopback host・portを使ったかを確認する
GET /v1/models は200、POSTは失敗一覧は推論の証明ではありません。chat用の実ID、native一覧のtypeとloaded_instances、アプリのload状態を照合する
404pathが`/v1/chat/completions`か、base URLとpathの両方に`/v1`を重ねていないか確認する。responseのerrorも見て、pathかmodel IDかを区別する
401 / 403認証を有効にしているなら、両GETとPOSTすべてで有効なBearer tokenとtoken permissionを確認する。認証を無効化しない
400OpenAI互換Chat Completionsの`model`と`messages`を使っているか、native `/api/v1`用schemaを混ぜていないかを確認する
POSTが200でchoices[0].message.contentを返す短い確認requestのresponseを受信したことが分かる。別のprompt、速度、品質まで保証する結果ではない
POSTが200だがcontentが空choices/messageがあればschema errorと決めつけず、finish_reason、output上限、reasoning設定を確認する。必要ならchat用modelを見直し、必要な分だけ上限を増やして短いrequestを再試行する

POSTがtimeoutした場合も成功扱いにせず、アプリ側でload・JIT loadingの状態とmodel資源を確認してから、同じ短いrequestをもう一度試します。response本文にはpromptや環境情報が含まれることがあるので、共有時はtokenや個人データを除いて必要なstatusだけを伝えます。

Hermes Desktopでつながらない時の読み順

Hermes Desktopの設定を何度も変える前に、症状別ハブで provider 側、base URL、model ID、API key、PC負荷を分けて確認してください。

ローカルAIをAPIで使うとは

APIは、別のアプリやコードからAIに指示を送る窓口です。チャット画面に文章を入力する代わりに、Python、JavaScript、自作ツール、ノートアプリ、RAGツールなどからローカルAIへリクエストを送ります。

ローカルAI APIを使うと、文章の下書き、要約、分類、翻訳、メモ整理、個人開発アプリへのAI機能追加などに進めます。ただし、APIで呼び出してもモデルが重ければ遅く、モデルサイズ、量子化、コンテキスト長、メモリ、VRAMの影響は残ります。

APIサーバーとは何か

APIサーバーとは、別のアプリからのリクエストを待ち受ける小さな窓口です。LM StudioやJanのデスクトップアプリ、Ollamaのような常駐プロセスを起動し、そこへコードや別ツールから接続します。

初心者は外部公開やLAN公開を急がず、自分のPC内だけで動くlocalhostから始めてください。localhostは「自分のPC自身」を指す住所のようなもので、最初の検証では外部へ開けないほうが安全です。

OpenAI互換APIとは何か

OpenAI互換APIは、OpenAI向けに作られたコードやツールを、ローカルAIのサーバーへ向け替えられる可能性がある仕組みです。たとえばbase URLをOpenAIではなくlocalhostのアドレスに変えることで、同じような形でチャット補完を呼び出せる場合があります。

ただし、完全互換ではありません。対応エンドポイント、パラメータ、ストリーミング、ツール呼び出し、埋め込み、レスポンス形式はツールやバージョンごとに異なります。「OpenAI互換だから何でも同じ」と考えず、使う機能ごとに公式ドキュメントを確認してください。

LM Studio / Ollama / Jan のAPI比較表

LM Studio / Ollama / Jan のAPI比較表の表
ツールAPIの使いやすさOpenAI互換APIGUIの有無初心者向け度向いている用途注意点
LM StudioGUIから始めやすい対応範囲ありあり高めローカルモデルを起動し、localhostのAPIとして試すポートやサーバー起動状態、モデル読み込みを確認する
Ollamaコマンドに慣れると扱いやすい対応範囲あり基本はコマンド/API中くらい開発、常駐API、他ツール連携モデル名、コンテキスト設定、対応APIの違いを確認する
Janアプリ内設定を確認して使う対応範囲ありあり中くらい自分用AIアプリ、ローカルAPI、外部API比較ローカル利用とクラウド/API接続でプライバシー前提が変わる

LM StudioのAPIでできること

LM StudioはローカルLLM APIサーバーとして使える機能があり、現行の公式REST APIではnative v1 APIの`/api/v1/*`と、OpenAI互換の`/v1/*`を分けて案内しています。`/api/v1/chat`、`/v1/responses`、`/v1/chat/completions`では対応機能が同じとは限らないため、使うendpointを先に決めます。

LM StudioはGUIでモデルを選び、読み込んでからAPIとして試しやすい点が入口になります。まず短い質問でモデル単体の速度を確認し、そのあとAPI呼び出しへ進むと原因を切り分けやすくなります。

OllamaのAPIでできること

OllamaはAPIやOpenAI互換APIを使った連携に向きます。現行の公式docsではlocal APIのbase URLを`http://localhost:11434/api`、OpenAI互換を`http://localhost:11434/v1/`として分け、cloud APIは別のbase URLで案内しています。

コマンド操作に抵抗がない人なら、Ollamaは個人開発や自動化の土台にしやすいです。一方で、完全初心者はモデル名、実行状態、コンテキスト設定、停止方法を混同しやすいので、まず単体のチャット動作を確認してください。

JanのローカルAPIサーバーでできること

Janの現行API Referenceでは、ローカルAPIを`http://127.0.0.1:1337`で提供し、`/v1/models`、`/v1/chat/completions`、`/v1/messages`を案内しています。API keyを設定してAuthorization headerを付ける前提があるため、LM StudioやOllamaのlocal例と認証条件を同じにしません。

JanはLM Studioの次に比較したい人、自分用AI環境を作りたい人、API連携も見たい人に向きます。APIだけで判断せず、ローカル実行なのか外部接続なのかを分けて確認してください。

Foundry LocalをAPI候補にするとき

Foundry LocalはLM Studio、Ollama、Janとは別のWindows向けruntimeです。CLIのlocal serverとOpenAI互換の`/v1/chat/completions`を使う入口がありますが、CLIとRESTはpreview・active developmentとして案内されているため、利用時点の公式referenceを確認します。

Foundry LocalのAPIは「ポート」よりendpoint・model ID・状態で確認する

Foundry Localの現行REST referenceには`/v1/chat/completions`だけでなく`/v1/audio/transcriptions`もあります。OpenAI互換と書かれていても、接続先のendpointだけで判断せず、ロード済みmodel ID、Execution Provider、サービス状態を一緒に記録します。

Foundry LocalのAPIは「ポート」よりendpoint・model ID・状態で確認するの表
確認対象分かることまだ分からないこと
`GET /openai/status`実行中のendpoint、model directory、pipeなどのサービス状態モデルがロード済みか、推論が成功するか
`GET /openai/models`cached / registeredなモデルの一覧catalog上のモデルや、今すぐロードできるvariant
`GET /openai/loadedmodels`現在メモリへロードされたモデル別model IDのvariant、Execution Provider、TTLの実状態
`POST /v1/chat/completions`model ID、messages、stream、任意の`ep`・`ttl`を使うチャット接続OpenAI SDKの全機能やtool callingが同じように使えるか
`POST /v1/audio/transcriptions`multipartの音声ファイル、model ID、language、response formatから文字起こしを得る接続話者区間や本人同定、元音声との照合ができるか

Foundry Localはdynamic portでサービスを起動するため、`5272`や`1337`のような数字を記事やコードへ固定しません。CLIなら`foundry server status`、SDKなら`manager.endpoint`など、実行時に得たendpointを使います。model aliasはcatalogやcacheを選ぶ入口であり、RESTのリクエストでは実際にロードされたmodel IDを確認して指定するのが安全です。

最初の切り分けは次の順番です。

  1. CLIまたはSDKでserviceを起動し、CLIなら`foundry server status`、SDKならmanagerのendpointを記録する。
  2. model alias、ダウンロード済み、ロード済みを分け、`/openai/loadedmodels`でRESTに渡すmodel IDを確定する。
  3. 短い`/v1/chat/completions`を送り、日時、endpoint、model ID、Execution Provider、HTTP結果を残す。
  4. 音声を試す場合は`/v1/audio/transcriptions`をASRとして確認し、話者区間や話者名は別のdiarization工程として扱う。
  5. REST referenceはactive developmentでbreaking changesの可能性があるため、利用時点のバージョン、endpoint、model ID、Execution Provider、fallback条件を記録する。

クラウドAPIとローカルAI APIの比較表

クラウドAPIとローカルAI APIの比較表の表
比較軸クラウドAPIローカルAI API
料金従量課金やプラン料金が必要になりやすいAPI呼び出し自体はローカルだが、PC購入や電気代、モデル保存容量が必要
速度ネットワークと提供側の性能に依存PC性能、モデルサイズ、量子化、VRAMに依存
セットアップAPIキーとSDKで始めやすい場合が多いモデル、ツール、サーバー起動、ポート確認が必要
プライバシー入力データが外部サービスへ送信されるlocalhostだけならPC内中心だが、外部API連携やLAN公開では前提が変わる
モデル選択提供モデルから選ぶGGUFやOllamaモデルなどを自分で選ぶ
PC負荷手元PCの負荷は少なめCPU、メモリ、GPU、VRAMを使う
安定性提供側の仕様変更や制限を受ける手元環境の設定、発熱、メモリ不足の影響を受ける

PythonやJavaScriptから呼び出すと何ができるか

短いスクリプトから文章の要約、分類、下書き、ファイル名の整理、ログの読み取り補助などを試せます。コード例を使う場合は、まずlocalhostの短いテストに限定し、APIキーや秘密情報を外部へ送らない形にしてください。

既存のOpenAI向けコードを流用する場合でも、base URL、モデル名、対応パラメータをローカルツールに合わせる必要があります。動かないときは、コードより先にAPIサーバーが起動しているか、モデルが読み込まれているかを確認します。

APIで使うときに必要なPCスペック

APIで呼び出すから軽くなるわけではありません。実際には同じモデルを動かしているため、モデルサイズ、Q4/Q5/Q8、コンテキスト長、CPU、GPU、VRAM、同時起動アプリが関係します。

セキュリティで注意すること

外部公開やLAN公開を安易に勧めません。最初はlocalhostだけで動かし、必要が出た場合だけ、認証、ファイアウォール、CORS、接続元、ログ、入力データの扱いを確認してください。

クラウドAPIや外部APIへ接続する場合は、入力した文章やファイルの一部が外部へ送信される可能性があります。社内文書、顧客情報、個人情報、秘密情報を扱う前に、公式情報、利用規約、会社や案件のルールを確認してください。

初心者はどこから始めるべきか

最初はLM StudioまたはOllamaで軽いモデルを1つ動かし、短い日本語質問に答えられるか確認します。次にlocalhostのAPIへ短いリクエストを送り、最後に自分のスクリプトやツールへつなげる順番が安全です。

次に読む記事

よくある質問

ローカルAI APIは無料で使えますか?

localhostで動かすローカルAI APIの呼び出し自体は、クラウドAPIのような従量課金ではない場合が多いです。ただし、PC本体、GPU、電気代、保存容量、使うモデルや連携サービスの条件は別に確認が必要です。

OpenAI互換APIならOpenAIと完全に同じですか?

完全に同じとは限りません。対応エンドポイント、パラメータ、ストリーミング、ツール呼び出し、埋め込みなどはLM Studio、Ollama、Janごとに違います。

外部にデータは送信されますか?

localhostだけでローカルモデルを使う場合と、クラウドAIや外部APIに接続する場合で前提が変わります。LAN公開や外部API接続を使う前に設定と公式情報を確認してください。

Pythonが分からなくても使う意味はありますか?

あります。APIの考え方を知っておくと、AnythingLLM、Jan、Ollama、個人開発ツールがどのようにAIへ接続しているか理解しやすくなります。

APIで呼び出せば速くなりますか?

APIにしても同じモデルを動かすため、必ず速くなるわけではありません。モデルサイズ、量子化、コンテキスト長、メモリ、VRAM、CPU/GPUが関係します。

ポート番号は1234や1337で固定ですか?

固定とは限りません。公式例やデフォルトとして示されることはありますが、ツールや設定、バージョンで変わる可能性があります。実際の画面や公式ドキュメントで確認してください。

Foundry LocalのREST APIはポート番号を固定して使えますか?

固定値を前提にしないでください。CLIの`foundry server status`やSDKのmanager.endpointで実行時のendpointを確認し、`/openai/status`と`/openai/loadedmodels`でサービス状態と実際のmodel IDを分けて確認します。

Foundry Localのaudio transcriptionsは話者分離もしますか?

audio transcriptionsは音声認識のendpointです。話者区間や話者名の同定まで同じリクエストで保証するものではないため、話者分離が必要なら文字起こしとは別の工程としてWhisperXやpyannoteなどの仕様を確認します。

次に読むおすすめルート

開発・API連携したい人

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

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

あなたはどのタイプ?

関連チェック先

関連ツール

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