侧边栏壁纸
博主头像
Setyg的博客

当秋风染红落叶的时候,就是新生~

  • 累计撰写 86 篇文章
  • 累计创建 66 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录
AI

LM Studio 实践:开启 OpenAI 兼容 API 的地址与 Key 配置

Setyg
2026-09-29 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

LM Studio 实践:开启 OpenAI 兼容 API 的地址与 Key 配置

LM Studio 自带的本地服务器实现了 OpenAI 兼容接口,把任何 OpenAI 客户端、SDK 或框架的 base_url 指过来,就能用本机模型跑原来的代码。这篇记录三件事:接口地址(base URL 与支持的端点)、API Key(0.4.0 起的 API Token 机制,以及本机实际存放位置)、以及客户端接入与排错。

环境:LM Studio 0.4.14(Windows),默认端口 1234。接口地址与端点部分对照 LM Studio 官方文档,其余为本机实测结果。

一、先启动本地服务器

OpenAI 兼容接口由 LM Studio 应用内的 Local Server 提供,必须先启动服务器:

  • 图形界面:Developers(开发者)页面 → Local Server / Server Settings → Start Server。
  • 命令行:lms server start 启动,lms server status 查看状态,lms server stop 停止。

注意:lms 依赖 LM Studio 桌面端在运行。桌面端没启动时,CLI 会尝试唤醒守护进程并超时,报 Timed out waiting for LM Studio daemon to start。命令行工具位于 C:\Users\<用户名>\.lmstudio\bin\lms.exe。

端口和绑定地址来自配置文件 %USERPROFILE%\.lmstudio\.internal\http-server-config.json,本机默认内容(实测):

{
  "autoStartOnLaunch": false,
  "port": 1234,
  "cors": true,
  "logSensitiveData": true,
  "logIncomingTokens": false,
  "verbose": true,
  "logLinesLimit": 500,
  "networkInterface": "0.0.0.0",
  "justInTimeModelLoading": true,
  "fileLoggingMode": "succinct"
}

其中 "port": 1234 决定接口端口,"networkInterface": "0.0.0.0" 表示监听所有网卡。只想被内网访问时,把 networkInterface 改成实际网卡地址,做法见文末相关文章。

二、接口地址(base URL)

OpenAI 兼容接口的 base URL 规则很简单:

http://<主机>:<端口>/v1

本机常见几种写法:

调用场景base URL
本机调用http://127.0.0.1:1234/v1
本机调用(别名)http://localhost:1234/v1
局域网内其它机器调用(本机内网 IP 为 10.172.100.133)http://10.172.100.133:1234/v1

支持的端点(LM Studio 官方文档列出的完整列表):

端点方法用途
/v1/modelsGET列出已安装模型,拿到 model 字段要用的模型标识
/v1/chat/completionsPOST对话补全(支持文本与图片)
/v1/completionsPOST旧版补全接口
/v1/embeddingsPOST文本向量化
/v1/responsesPOSTResponses API,Codex 等工具依赖它

两点容易踩坑:model 字段必须填 LM Studio 里的模型标识,不能填 OpenAI 模型名;同一个服务上同时提供 /v1/completions 与 /v1/chat/completions,两者请求体字段不同,按客户端要求选。

三、验证地址是否可用

最简单的验证是列出模型(未开启鉴权时不需要任何请求头):

curl http://127.0.0.1:1234/v1/models

Windows 上也可以用 PowerShell:

Invoke-RestMethod http://127.0.0.1:1234/v1/models

# 看服务到底监听在哪个地址、哪个端口
Get-NetTCPConnection -LocalPort 1234 -State Listen | Select-Object LocalAddress,LocalPort

能返回 models 列表,说明地址和端口都对。返回连接被拒绝,先确认服务器已启动、端口没改过。

四、API Key:默认不校验,0.4.0 起支持 API Token

官方说明:LM Studio 默认不要求鉴权;从 0.4.0 版本开始支持 API Token,可以为每个请求开启鉴权。

4.1 开启或关闭鉴权

  • Developers 页面 → Server Settings → 打开 Require Authentication(要求鉴权)开关。
  • 开启后,REST API、Python SDK、TypeScript SDK 的所有请求都必须携带有效 API Token。

4.2 创建 Token

  • Server Settings → Manage Tokens 打开 API Tokens 面板 → Create Token,填写名称并勾选权限。
  • 令牌只在创建时显示一次,务必立即复制保存;面板里可以编辑权限或删除令牌。

4.3 使用方式

把所有请求加上 Authorization 请求头即可:

curl http://127.0.0.1:1234/v1/chat/completions \
  -H "Authorization: Bearer $LM_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"model":"<模型标识>","messages":[{"role":"user","content":"你好"}]}'

4.4 本机实际存放位置(实测)

文件本机内容(部分)说明
%USERPROFILE%\.lmstudio\.internal\permissions-store.json {"tokenMode":"required","tokens":[{"clientIdentifier":"DS9MiuiE","clientPasskeySHA512Base64":"…","label":"my-lm-token","permissions":{…}}]} 本机已开启鉴权(tokenMode 为 required),存在一个名为 my-lm-token 的令牌;明文不落盘,只保存 SHA-512 哈希
%USERPROFILE%\.lmstudio\.internal\lms-key-2 24 字符的本地密钥,形如 UZlX+5v9…0acRRI LM Studio 在本机保存的密钥文件(本文已打码);不要把自己的密钥贴到公开页面

实测结论:API Token 的明文不会保存到磁盘。permissions-store.json 里只有令牌的 SHA-512 哈希和权限信息,所以令牌一旦忘记,只能回 Manage Tokens 面板重新创建一个。这也是不要在文章、截图、仓库里贴令牌的原因;万一泄露,删除旧令牌重建,再更新使用它的客户端即可。

五、客户端接入写法

5.1 Python(openai 官方 SDK)

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:1234/v1",
    api_key="lm-studio",   # 未开启鉴权时可填任意非空字符串;开启后必须填 API Token
)

resp = client.chat.completions.create(
    model="<从 /v1/models 拿到的 id>",
    messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(resp.choices[0].message.content)

5.2 TypeScript / Node

import OpenAI from 'openai';

const client = new OpenAI({
  baseURL: 'http://127.0.0.1:1234/v1',
  apiKey: 'lm-studio',  // 开启鉴权后换成 API Token
});

const resp = await client.chat.completions.create({
  model: '<从 /v1/models 拿到的 id>',
  messages: [{ role: 'user', content: '你好' }],
});
console.log(resp.choices[0].message.content);

5.3 环境变量(很多工具靠这两项接入)

# 当前会话临时生效
$env:OPENAI_BASE_URL = "http://10.172.100.133:1234/v1"
$env:OPENAI_API_KEY  = "<API Token;未开鉴权时可填任意非空值>"

# 需要长期生效用 setx,重开终端后可用
setx OPENAI_BASE_URL "http://10.172.100.133:1234/v1"

各类支持自定义 OpenAI 端点的客户端、工作流平台和 IDE 插件,通常都提供 base URL 与 API Key 两个输入框,填法同上:地址写到 /v1,Key 未开鉴权时随便填非空值、开了鉴权就填真实令牌。

六、常见问题

现象原因处理
connection refused / 无法连接远程服务器服务器没启动,或端口不是 1234Developers 页面点 Start Server,或用 lms server start;核对 http-server-config.json 里的 port
本机能通,局域网其它机器不通绑定地址是 127.0.0.1,或防火墙未放行networkInterface 改为内网 IP 或 0.0.0.0,并按下面命令放行 1234 端口
401 Unauthorized已开启鉴权但请求没带 Token,或令牌已被删除请求头加 Authorization: Bearer <Token>;或在 Server Settings 关闭鉴权
400 model not foundmodel 字段填了 OpenAI 的模型名先 GET /v1/models,用返回结果里的 id
第一次请求很慢justInTimeModelLoading 为 true,请求时才加载模型等首次加载完成,或先在界面里手动加载模型
lms 命令超时或报 server is not running桌面端没运行,守护进程起不来先启动 LM Studio 桌面端,再执行 lms 命令

放行端口(需要管理员权限的 PowerShell):

New-NetFirewallRule -DisplayName "LM Studio Server 1234" -Direction Inbound -Protocol TCP -LocalPort 1234 -Action Allow

七、安全提醒

  • 不要把 API Token 贴到公开页面、聊天截图或代码仓库里;本文出现的密钥已打码。
  • networkInterface 用 0.0.0.0 时,同网段任何能访问 1234 端口的人都能到达你的服务;不需要跨机访问时,绑定 127.0.0.1 更稳妥。
  • 开启鉴权后按最小权限授权。本机令牌 my-lm-token 的权限为 dynamicRemoteMcpServer=allowAll、pluginUse=deny,即允许动态远端 MCP、拒绝插件执行,需要更严的粒度可以删除后重建。
  • 令牌泄露的处理:Manage Tokens 里删除旧令牌并新建,然后更新所有引用它的客户端和环境变量。

八、小结

  • 地址:http://<主机>:1234/v1,端点为 /v1/models、/v1/chat/completions、/v1/completions、/v1/embeddings、/v1/responses。
  • Key:默认不校验;0.4.0 起可在 Server Settings 开启鉴权,用 Manage Tokens 创建,请求以 Authorization: Bearer 携带。令牌明文只显示一次、磁盘上只留哈希,忘了就重建。
  • 本机密钥文件:%USERPROFILE%\.lmstudio\.internal\lms-key-2,以及记录鉴权开关与令牌元数据的 permissions-store.json,公开内容里请打码。

相关文章:LM Studio 实践:Windows 下模型存放路径与绑定内网 IP 配置

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区