用 LM Studio 在电脑上运行 DeepSeek,可以先下载一个兼容的 GGUF 模型,在本机聊天验证,再启动本地服务器,让 Python 通过 HTTP 调用。下载完成、模型成功加载和 API 能返回答案是三项不同检查,不能只看到文件存在就认为部署成功。
本文面向能安装桌面软件并运行 Python 的读者,依据为 2026 年 10 月 1 日读取的官方文档。没有在读者电脑或具体 GGUF 文件上实测,也不承诺某个内存或显存配置一定能运行。示例只调用本机接口,不接远端 DeepSeek 平台。

选择模型时先核对名字与来源
可以以 DeepSeek-R1-Distill-Qwen-7B 为搜索对象。DeepSeek 官方模型卡说明它是基于 Qwen 蒸馏的模型,不能把它当成完整 DeepSeek-R1 的同一规模版本。LM Studio 中看到的 GGUF 通常来自转换或量化发布者,仍需核对模型来源、架构、许可证及量化说明。
按 LM Studio 下载模型说明,打开 Discover,搜索模型并选择可用文件后下载。Q4、Q8 等文件名表示不同量化方案,不是运行成功保证;实际内存还受上下文长度、运行时和 GPU 卸载配置影响。首次验证先用短输入和较小上下文,观察真实资源占用。
- 在下载结果中核对基础模型是否符合需求,不只看 DeepSeek 字样。
- 下载后在聊天界面选择并加载它,输入一个短算术问题。
- 记录模型文件、量化名称、LM Studio 版本和所用运行时。加载失败时先处理模型兼容性或资源错误,不继续调 API 参数。
启动本地服务,确认实际模型 ID
官方本地服务器说明提供 Developer 页面启动服务的入口,也可以用已配置的 lms CLI 执行 lms server start。本文只监听本机,默认示例地址为 http://127.0.0.1:1234;若界面显示不同端口,以实际配置为准。
模型列表接口为 GET /v1/models。先用浏览器或请求工具读取本机地址,找出目标模型的 id。开启 Just-In-Time loading 时列表还可能包含已下载但尚未加载的模型;列表存在不等于推理已经完成。
不要把网上复制的仓库名称直接当作当前实例的 API ID,也不要取列表第一项:第一项可能是另一个模型或嵌入模型。
用 Python 发送一次非流式请求
安装 requests:python -m pip install requests。将下列代码保存为 lm_check.py,再执行 python lm_check.py –model 后接实际 id。例如 id 中有空格时用引号包住整个值。
import argparse
import requests
parser = argparse.ArgumentParser()
parser.add_argument("--model", required=True)
args = parser.parse_args()
base = "http://127.0.0.1:1234/v1"
listed = requests.get(base + "/models", timeout=30)
listed.raise_for_status()
model_ids = [item["id"] for item in listed.json()["data"]]
print("available_ids:", model_ids)
if args.model not in model_ids:
raise ValueError("目标 ID 不在当前模型列表中")
response = requests.post(base + "/chat/completions", json={
"model": args.model,
"messages": [{"role": "user", "content": "7 乘以 8 是多少?最终答案只写数字。"}],
"stream": False,
"max_tokens": 1024,
}, timeout=180)
response.raise_for_status()
choice = response.json()["choices"][0]
answer = choice["message"].get("content") or ""
print("finish_reason:", choice.get("finish_reason"))
print("answer:", answer)
if choice.get("finish_reason") == "length":
raise ValueError("输出被截断,需要检查生成上限与实际内容")
if not answer.strip():
raise ValueError("没有最终回答,不能判定请求成功")
Chat Completions 官方说明列出 /v1/chat/completions 的 model、messages、max_tokens 和 stream 等字段。这里使用非流式,便于先确认响应结构;不需要为调用本机无认证示例填写远端平台密钥。若自己启用了本地服务器认证,应按当前认证设置补充请求,不能把 401 当成模型故障。
怎样确认部署链路跑通
- 模型文件能加载,桌面聊天能完成短问题。
- /v1/models 能返回并找到所选 ID。
- 接口响应有非空最终正文,且没有被 length 截断。
- 人工核对最终算术答案为 56;模型给错答案仍需记录,不能以 HTTP 200 抵消内容错误。
思考过程、生成结束状态和最终答案要分开看。长思考可能用尽输出预算,模型加载也可能占据首次请求的大部分时间;本文的 180 秒只是客户端超时设置,不是服务性能承诺。排查时保留请求配置、状态码和响应,使用敏感资料时妥善控制这些记录的访问范围。
按失败发生的位置排查
| 现象 | 下一步 |
|---|---|
| 连接被拒绝 | 检查服务器是否启动、端口是否一致,再看本机防火墙和服务日志 |
| 模型 ID 不存在 | 重新读取当前 /v1/models,并核对目标文件是否已下载 |
| 模型无法加载或进程退出 | 核对 GGUF 架构、运行时、资源与上下文设置;不是改请求 URL 就能解决 |
| 响应被截断 | 保留 finish_reason 与输出,缩短问题或评估输出预算,不能把残缺文本当成最终结果 |
先完成本机短请求验证,再考虑局域网访问、并发或更大模型。若增加网络可访问范围,应同时配置访问控制和认证,不把本机试用配置直接作为共享服务。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31969.html