OpenModel

LM Studio 模型 API:从启动服务到完成第一次调用

更新于 2026-10-23 · openmodel.cyou

简答:LM Studio 模型 API 本质上是本地推理接口。新项目优先考虑原生 /api/v1,想复用 OpenAI SDK 或现有应用时使用 /v1 兼容接口;先启动服务器,再通过 /v1/models 获取真实模型 ID,最后发送请求。

定义:LM Studio 模型 API 是由本地 LM Studio 服务器提供的 HTTP 接口,可用于调用本地模型、查询模型、生成文本、生成 Embeddings,以及连接支持 OpenAI 兼容协议的应用。

先跑通第一条请求:启动服务、获取模型名、发送对话

本文根据 LM Studio 公开开发者文档整理,本站不是 LM Studio 官方站。开始前,请确认已经在 LM Studio 中准备好至少一个可用模型。

  1. 启动 API 服务器:打开 Developer 面板,启用 Start server;也可以在终端运行 lms server start。官方文档说明,服务器可在本机 localhost 或网络中提供接口。
  2. 查询模型 ID:先访问 GET /v1/models,不要凭记忆填写模型名称。返回结果中的 id 才是请求体里应使用的模型标识符。
  3. 发送第一条请求:把下面代码中的 <MODEL_ID> 替换为上一步返回的实际 ID。
curl http://localhost:1234/v1/models
curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<MODEL_ID>",
    "messages": [
      {"role": "user", "content": "请用一句话介绍你自己。"}
    ],
    "temperature": 0.7
  }'

官方兼容接口文档列出了 /v1/models、/v1/responses、/v1/chat/completions、/v1/embeddings 等路径;默认示例使用 localhost:1234,但实际端口应以你的服务器设置为准。参考:服务器启动说明、OpenAI 兼容端点、模型列表接口。

三套 API 路径怎么选:/api/v1、/v1 与 /api/v0

LM Studio 当前文档同时介绍原生 REST API、OpenAI 兼容 API 和旧版 v0 REST API。路径不同,适合的使用场景也不同。

接口路径适合场景主要能力选择建议
/api/v1新项目、需要本地管理能力原生聊天、模型列表、加载、卸载、下载,以及状态型对话等能力新项目优先了解这一套
/v1接入 OpenAI SDK 或已有兼容应用Responses、Chat Completions、Embeddings、模型列表等兼容端点迁移现有代码时通常更省改动
/api/v0兼容旧版 REST API 示例模型查询、聊天补全、文本补全和 Embeddings维护旧代码时再考虑,不作为新项目首选

官方 REST API 总览说明,LM Studio 0.4.0 引入了原生 v1 REST API,并建议新项目使用它;同一页面还列出了 /api/v1/chat、/api/v1/models、模型加载、卸载和下载等接口。OpenAI 兼容文档则面向需要复用 OpenAI 客户端的场景。参考:LM Studio REST API 总览、REST API v0、OpenAI 兼容端点。

如果你只是希望让 Python、Node.js、OpenAI SDK 或支持兼容协议的工具调用本地模型,优先从 /v1 开始;如果需要模型加载、状态型对话或 LM Studio 原生能力,再研究 /api/v1。

Python、Node.js 和原生 v1 调用示例

Python:使用 OpenAI 客户端调用 Chat Completions

LM Studio 官方示例使用 OpenAI Python 客户端,并将 base_url 指向本地的 http://localhost:1234/v1。示例中的 API Key 只是客户端初始化参数,不代表需要向本地服务申请远程密钥。

from openai import OpenAI

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

completion = client.chat.completions.create(
    model="<MODEL_ID>",
    messages=[
        {"role": "user", "content": "请用三句话解释什么是本地模型 API。"}
    ],
    temperature=0.7,
)

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

Node.js / TypeScript:修改 baseURL 后复用客户端

官方兼容接口文档展示了 TypeScript 客户端通过 baseUrl 指向本地服务。下面的调用结构适合已经安装 OpenAI Node.js 客户端的项目。

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://localhost:1234/v1",
  apiKey: "lm-studio",
});

const completion = await client.chat.completions.create({
  model: "<MODEL_ID>",
  messages: [
    { role: "user", content: "请用一句话说明本地 API 的用途。" }
  ],
});

console.log(completion.choices[0]?.message?.content ?? "");

原生 v1:调用 /api/v1/chat

原生 v1 API 的聊天路径是 POST /api/v1/chat。它与 OpenAI 兼容的 /v1/chat/completions 不是同一个端点,切换时应同时检查请求体字段和响应格式。

curl http://localhost:1234/api/v1/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<MODEL_ID>",
    "input": "请用一句话介绍本地推理。"
  }'

如果你的代码已经使用 OpenAI SDK,通常先改 base_url 或 baseURL,再把模型参数替换为 /v1/models 返回的真实 ID。不要把 <MODEL_ID> 作为字面量直接发送。

流式输出、Embeddings、Responses 与工具调用

流式输出:适合聊天界面需要边生成边显示的场景。OpenAI 兼容的 Responses 文档提供了 stream: true 示例,并说明响应会以 SSE 事件形式返回。Chat Completions 也支持 stream 参数,但你的客户端需要按对应 SDK 的流式接口读取事件。

curl http://localhost:1234/v1/responses \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<MODEL_ID>",
    "input": "请用三点说明流式输出的用途。",
    "stream": true
  }'

Embeddings:如果你要做向量检索、相似度搜索或知识库索引,应使用 /v1/embeddings,并传入适合生成向量的模型 ID,而不是普通聊天模型。官方示例使用 OpenAI Python 客户端的 client.embeddings.create 方法。

from openai import OpenAI

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

result = client.embeddings.create(
    model="<EMBEDDING_MODEL_ID>",
    input=["这是一段需要向量化的文本。"],
)

print(len(result.data[0].embedding))

Responses:适合需要流式、推理字段、前一轮响应状态或远程 MCP 工具的场景。工具调用:适合让模型提出函数调用请求,再由你的程序执行函数并把结果回传;模型不会替你的程序直接执行代码。官方工具调用文档说明,兼容接口可通过 /v1/chat/completions 和 /v1/responses 使用工具。

如果只是普通问答,先用 Chat Completions;如果需要状态、流式事件或工具编排,再根据官方能力对照表选择 Responses 或原生 /api/v1/chat。参考:Responses API、Embeddings、工具调用。

模型 ID、连接和局域网访问排错

  1. model 参数错误:重新运行 curl http://localhost:1234/v1/models,复制返回对象中的 id。不要使用模型展示名称、下载页面标题或自行拼接的名称。
  2. Connection refused:先检查 Developer 面板中的 Start server 是否已启用,再确认请求使用的端口与服务器设置一致。如果通过命令行启动,可尝试 lms server start。
  3. 模型没有响应:先确认模型已经下载,并在 LM Studio 中完成加载或允许服务器按配置发现模型。旧版 v0 模型列表会返回模型状态等信息,可用于辅助判断。
  4. 局域网设备无法访问:本机地址 localhost 只适用于运行服务器的设备。要让同一局域网内的其他设备访问,需要启用 Serve on Local Network,或使用 lms server start --bind 0.0.0.0。然后把客户端地址改为服务器所在设备的局域网地址和端口。
  5. 安全检查:绑定到非 127.0.0.1 的地址后,服务会暴露到 localhost 之外。官方建议在这种情况下启用认证,并只在明确需要时开放局域网访问。

排错顺序建议固定为:服务器是否启动 → 地址和端口是否正确 → /v1/models 是否能返回 → model 是否来自返回结果 → 再测试聊天请求。这样可以把网络问题、模型问题和请求体问题分开处理。局域网访问的安全提醒可参考 Serve on Local Network。

常见问题

LM Studio 模型 API 默认地址是什么?

官方 OpenAI 兼容示例使用 http://localhost:1234,并在后面拼接 /v1;例如聊天接口是 /v1/chat/completions。实际端口应以本地服务器设置为准。

LM Studio 的 model 参数应该怎么填写?

先请求 /v1/models,使用返回数据中对应模型对象的 id。不要直接填写模型显示名称,也不要把 <MODEL_ID> 占位符原样发送。

应该使用 /api/v1 还是 /v1?

需要 LM Studio 原生模型管理、状态型聊天等能力时了解 /api/v1;需要复用 OpenAI Python、Node.js 或兼容应用时优先使用 /v1。新项目可先从官方推荐的原生 v1 了解,再按集成需求选择。

为什么请求 localhost:1234 会出现连接失败?

先确认 Developer 面板已开启 Start server,或者执行 lms server start;然后检查端口、路径和请求设备是否正确。若从另一台设备访问,localhost 指向的是另一台设备本身,不能代替服务器所在设备的局域网地址。

Embeddings 应该使用聊天模型吗?

不建议直接混用。Embeddings 接口需要传入适合生成向量的模型 ID,聊天模型和 Embeddings 模型的用途不同,应以 /v1/models 返回的模型信息和模型能力为准。

相关阅读

参考资料

  1. LM Studio as a Local LLM API Server(lmstudio.ai)
  2. OpenAI Compatibility Endpoints | LM Studio(lmstudio.ai)
  3. List Models | LM Studio(lmstudio.ai)
  4. Chat Completions | LM Studio(lmstudio.ai)
  5. Responses | LM Studio(lmstudio.ai)
  6. Embeddings | LM Studio(lmstudio.ai)
  7. Tool Use | LM Studio(lmstudio.ai)
  8. Serve on Local Network | LM Studio(lmstudio.ai)