学校本地部署大模型使用教程
为满足校内师生对智能辅助编程的需求,学校高性能计算中心本地部署了 AI 编程大模型应用,面向校内师生免费开放(校内网络可稳定访问)。该服务基于 Open WebUI 搭建,对外提供与 OpenAI 兼容的 API 接口,支持网页、桌面客户端、IDE 插件、API 调用等多种使用方式。
本服务为校内服务,模型与参数可能随更新调整。本文写作时(2026-09)后台模型为 qwen3.8-27b,上线时(2025-11)曾为 qwen3-coder:30b。
服务信息
| 项目 | 内容 |
|---|---|
| 网页入口(Open WebUI) | http://202.204.64.234:8080 |
| API 基础地址(Base URL) | http://202.204.64.234:8080/api(末尾不带斜杠) |
| 对话补全接口 | http://202.204.64.234:8080/api/chat/completions(唯一有效路径) |
| 模型列表接口 | http://202.204.64.234:8080/api/models |
| 当前模型 | qwen3.8-27b(支持文本 + 图片输入) |
| API 协议 | OpenAI 兼容(Chat Completions) |
| 上下文窗口 | 256K(max_model_len=262144,输入 + 输出合计) |
| 推理引擎 | vLLM 0.29.1.dev1,4 卡张量并行(TP=4)(2026-09 实测) |
| 使用条件 | 面向校内师生,校内网络访问;网页注册账号;API 调用需另建密钥 |
使用方式一览:
| 方式 | 适用场景 | 是否需要 API 密钥 |
|---|---|---|
| 网页(Open WebUI) | 随手问答、调试想法 | 否(注册登录即可) |
| 桌面客户端(Cherry Studio / ChatWise 等) | 日常对话 | 是 |
| VS Code Cline / Roo Code 插件 | 编辑器内 AI 辅助编程 | 是 |
| 直接 API 调用 / Agent Harness(含 DSH) | 脚本、工具、AI 编程智能体 | 是 |
| 本地反代(ncepu_proxy.py) | 强制拼 /v1 路径的客户端 | 密钥在反代侧配置 |
第一步:注册账号
在浏览器访问 http://202.204.64.234:8080,点击注册,填写用户名、邮箱与密码完成注册,然后登录。
登录后即可在网页界面直接向大模型提问:
注:截图中显示的是上线时的模型 qwen3-coder:30b,当前模型名以网页界面的模型列表为准。
第二步:创建 API 密钥
除直接访问网页外,其余使用方式都需要 API 密钥:
- 登录 Open WebUI 网站;
- 点击右上角圆形头像图标;
- 选择设置 → 账号;
- 在 API 密钥 一栏点击创建新安全密钥;
- 点击保存,并妥善复制保管密钥。
密钥可随时在同一位置(设置 → 账号 → API 密钥)点击密钥查看完整值,请妥善保管、不要泄露;若泄露,可删除旧密钥并重新创建。
使用方式
1. 网页版
直接访问 http://202.204.64.234:8080 登录使用即可,适合随手提问和调试想法。
2. 桌面客户端
任选支持 OpenAI 兼容接口的客户端,如 Cherry Studio、ChatWise、ChatBox、LobeChat。以 Cherry Studio 为例:
- 进入设置 → 模型服务,选择 OpenRouter(OpenAI 兼容);
- 输入 API 密钥(从 Open WebUI 网页复制粘贴);
- API 地址填
http://202.204.64.234:8080/api(末尾不带斜杠); - 点击管理,添加模型
qwen3.8-27b(手动添加,别指望自动拉列表)。
注:截图中配置的模型为公告时的 qwen3-coder:30b,请按当前模型名
qwen3.8-27b添加。
配置完成后,在使用界面选择 qwen3.8-27b 即可开始对话。若发消息报 405,说明该客户端属 B 类(强制拼 /v1),改走第 6 节本地反代。
3. VS Code Cline / Roo Code 插件
- 在 VS Code 左侧栏点击 Cline 图标;
- 点击右上角齿轮设置;
- API Provider 选择 OpenAI Compatible;
- Base URL 填
http://202.204.64.234:8080/api(末尾不带斜杠;走本地反代最稳,见下文第 6 节); - API Key 填你的密钥,Model 填
qwen3.8-27b; - Context Window 手动填
131072(别用默认值,会浪费上下文或超限); - Supports Images 勾选(实测视觉可用)。
注:Roo Code 插件配置项与 Cline 完全一致。
4. 直接 API 调用
接口为标准的 OpenAI Chat Completions 格式,任意语言、任意 HTTP 客户端均可调用。
cURL:
curl http://202.204.64.234:8080/api/chat/completions \
-H "Authorization: Bearer 你的API密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.8-27b",
"messages": [
{ "role": "user", "content": "写一段读取csv文件的python代码" }
]
}'Python:
import requests
url = "http://202.204.64.234:8080/api/chat/completions"
payload = {
"model": "qwen3.8-27b",
"messages": [
{"role": "user", "content": "写一段读取csv文件的python代码"},
],
}
headers = {
"Authorization": "Bearer 你的API密钥",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print("Status Code:", response.status_code)
try:
print("Response Body:", response.json()["choices"][0]["message"]["content"])
except ValueError:
print("Response is not in JSON format")在 Spyder 等编程工具中运行效果如下:
注:若使用官方
openaiSDK,base_url填http://202.204.64.234:8080/api(不带尾斜杠),思考内容在resp.choices[0].message.reasoning字段(不是reasoning_content)。
5. 在 DeepSeek Harness 中调用
如果你使用 DeepSeek Harness(DSH)作为 AI 编程智能体,只需添加一个自定义提供方即可把本机默认模型切换到校内服务。
方式一:图形界面(推荐)
- 打开 设置 → 模型;
- 选择添加自定义提供方,填写:
- Provider ID:小写标识,可任意取,如
ncepu-llm(勿与openai、anthropic等内置提供方名冲突); - 显示名称:仅用于展示,可任意取,如
NCEPU 校内大模型,创建后也可随时修改; - API 地址:
http://202.204.64.234:8080/api/(DSH 会规范化请求路径,此处带尾斜杠实测可用;其他客户端不要带尾斜杠); - API 协议:
openai-completions; - API 密钥:粘贴你的密钥(只写,保存后页面不再回显明文);
- Provider ID:小写标识,可任意取,如
- 在模型目录中点击获取可用模型,端点会返回当前提供的模型列表(
GET /api/models),勾选qwen3.8-27b并添加所选;探测失败时手动输入模型 IDqwen3.8-27b,效果相同; - 保存提供方,在会话的模型选择器中选择
ncepu-llm / qwen3.8-27b即可。
注意:Provider ID 创建后不可更改——会话历史、默认模型设置和凭据引用都以它为准。想换 ID 只能新建一个提供方再删除旧的;显示名称没有这个限制,随时可改。
方式二:直接编辑 $DSH_HOME/settings.yaml
以下配置在本机实测可用(2026-09 探测),密钥通过环境变量 OPENWEBUI_API_KEY 提供,不写入文件:
# 把默认模型设为校内服务
agent-default-model:
provider: ncepu-llm
model: qwen3.8-27b
reasoningEffort: high # 菜单档位名;实际发送值按下方 reasoningEfforts 映射(端点拒绝 high,映射到 xhigh)
llm-pi-ai:
providers:
ncepu-llm:
apiKeyEnv: OPENWEBUI_API_KEY
api: openai-completions
baseURL: http://202.204.64.234:8080/api/
models:
- id: qwen3.8-27b
input: [text, image] # 该端点支持图片输入
compat:
thinkingFormat: openai # 思考参数走 OpenAI 格式
supportsReasoningEffort: true # 端点支持推理等级
reasoningEfforts: # 等级映射:菜单项 -> 实际发送值
off: none
low: low
medium: medium
high: xhigh说明:
- 上面示例的
baseURL带尾斜杠且实测可用(DSH 会规范化请求路径);其他客户端对尾斜杠的行为不一,以各自配置节的说明为准; - 配置在下一次请求时自动生效,无需重启;
reasoningEfforts是「菜单项 → 协议上实际发送的值」的映射,映射依据端点实测接受的强度档位(见「模型能力与限制」);- 若某次更新后端点行为变化(如拒绝系统提示词或输出上限字段),可在路由上加
compat.supportsDeveloperRole: false、compat.maxTokensField: max_tokens修正请求形状。
6. 本地反代(解决 B 类客户端的 405)
B 类客户端(强制拼 /v1 路径)直连必 405。本地反向代理脚本 ncepu_proxy.py(随接入工具包发布,见参考资料)把请求改写成服务端唯一接受的格式:
客户端 ──→ http://127.0.0.1:8788/v1/chat/completions
↓ ncepu_proxy.py 转换
http://202.204.64.234:8080/api/chat/completions它顺带修掉的三个坑:
| 问题 | 反代的处理 |
|---|---|
客户端传 reasoning_effort: high → 服务端 400 | 自动映射 high/max/ultra → xhigh,minimal → low |
客户端传 max_tokens 过大 → 400 | 自动截断到 200000 |
| 客户端传自己的模型显示名 | 强制改写成 qwen3.8-27b |
启动方式(需本地 Python 环境):
# 方式一:从工具包下载 start-proxy.bat 双击(自动装依赖)
# 方式二:命令行
python ncepu_proxy.py密钥从同目录 api_key.txt 第 1 行读取(也可用 --key sk-xxx 或环境变量 NCEPU_API_KEY)。启动后客户端侧这样填:
| 字段 | 值 |
|---|---|
| Base URL | http://127.0.0.1:8788(若工具不拼 /v1,也可填 http://127.0.0.1:8788/v1——代理两条路径都收) |
| API Key | 任意值(反代用本地配置的密钥访问学校) |
| Model ID | qwen3.8-27b |
自检:
curl http://127.0.0.1:8788/health # {"status": "ok", ...}
curl http://127.0.0.1:8788/v1/models # 模型列表,供客户端自动拉取注意事项:
- 默认只监听
127.0.0.1,外部访问不到(安全默认值,不要改成0.0.0.0,那等于把学校配额开放给同网段所有人); - 流式与非流式均已实测通过;反代只转发,不缓存、不落盘;
- 脚本里的模型名是写死的常量(
MODEL_ID),服务端模型更新后需同步修改脚本; - 关掉终端窗口 = 停止服务,客户端会连不上。
常见坑位:端点路径与模型名(实测勘误)
前面各节都默认你按「三条铁律」填写,这里是它们的完整出处。 学校端点很特殊——只有一条路径能用(2026-09-24 逐项实测):
✅ http://202.204.64.234:8080/api/chat/completions
❌ http://202.204.64.234:8080/api/v1/chat/completions → 405
❌ http://202.204.64.234:8080/api//chat/completions → 405(尾斜杠导致)
❌ http://202.204.64.234:8080/v1/chat/completions → 405而不同工具拿到你填的 Base URL 后,自己拼接的路径不一样:
| 类型 | 拼接行为 | 填 .../api 的结果 | 代表工具 |
|---|---|---|---|
| A 类 | 只拼 /chat/completions | ✅ .../api/chat/completions 正确 | OpenAI Python/Node SDK、Continue、Dify、curl、DeepSeek Harness |
| B 类 | 强制拼 /v1/chat/completions | ❌ 405 | 多数桌面客户端、部分版本的 Cline / Roo Code、Aider |
判断方法:Base URL 填 http://202.204.64.234:8080/api 发一条消息——正常回复即 A 类;报 405 / 404 即 B 类,走上文「使用方式」第 6 节「本地反代」。
三条铁律:
- Base URL 末尾不加斜杠 → 加了会拼成
//chat/completions,405; - 不加
/v1(除非走本地反代)→/v1/...一律 405; - 模型名是
qwen3.8-27b,不是学校文档写的qwen3-coder:30b→ 照抄会报模型不存在。
官方公告勘误
官方公告发布于 2025-11-21,部分内容已过时,照抄会踩坑:
| # | 公告写的 | 实际情况 |
|---|---|---|
| 1 | 模型名 qwen3-coder:30b(客户端那节又写成 qwen3-code:30b) | 已换成 qwen3.8-27b,服务器上只有这一个模型 |
| 2 | Cline 那节 Base URL 写 http://202.204.64.234:8080/api/(带尾斜杠) | 会拼成 /api//chat/completions → 405,应去掉尾斜杠 |
| 3 | Cline 那节超链接损坏,显示成 http://202.204.64.234:11434%EF%BC%8CModel/ | 链接本身失效,忽略即可 |
公告第 4 节的 API 调用示例里 URL 是对的,只有 model 字段需要改成 qwen3.8-27b。
模型能力与限制(决定客户端里怎么勾)
| 能力 | 实测 | 配置建议 |
|---|---|---|
| 文本对话 | ✅ | — |
| 工具调用(Function Calling) | ✅ | 勾选 Function Calling / Tools,不勾则 Agent 能力全废 |
| 流式 SSE | ✅ | 正常开启 |
| 视觉 | ✅ | 勾选 Vision / Images |
| 思考模式 | ✅ | 思考内容在 reasoning 字段(不是 reasoning_content),流式在 delta.reasoning |
| 关闭思考 | ✅ | 请求体加 chat_template_kwargs: {"enable_thinking": false};提示词 /no_think 无效 |
两个参数坑:
- 思考强度只有四档可用:
reasoning_effort实测只接受none(等于关思考)/low/medium/xhigh,high、max、minimal等一律 400。界面上「低/中/高/超高/极致」五档,只勾低、中、超高; - 输入 + 输出 ≤ 262144(合计):
max_tokens填 262144 或更大都报 400,建议客户端里填输入 128K + 输出 32K(合计 160K 留余量)。
常见问题
Q:现在到底有哪些模型?模型名怎么查? A:上线公告时是 qwen3-coder:30b,本文写作时为 qwen3.8-27b,之后仍可能更新。查询当前模型的两个办法:一是网页界面里的模型选择列表;二是用密钥调模型列表接口:
curl -H "Authorization: Bearer 你的API密钥" http://202.204.64.234:8080/api/models模型更新后,只需在客户端/脚本里把 model 字段改成新名称即可,地址与密钥都不用动。
Q:打不开网页 / 连不上服务器? A:服务面向校内师生,部署在学校校园网内;202.204.64.234 属教育网(CERNET)公网段,校内网络一般可稳定访问。校外能否连通取决于所在网络(其他高校教育网有可能通),不在学校官方保障范围内。
Q:调用返回 401(Not authenticated)? A:密钥未填、填错、已删除或带了空格。回到 Open WebUI 的设置 → 账号 → API 密钥检查,必要时重新创建。
Q:返回 404 或提示模型不存在? A:多半是模型已更新,旧名字失效;也可能是 Base URL 拼出了错误路径(如 /openai/v1/...)。按第一条查询当前模型名后,再核对 Base URL。
Q:返回 405 Method Not Allowed? A:成因见「常见坑位」节(Base URL 带尾斜杠,或客户端强制拼了 /v1)。解法:去掉尾斜杠;B 类客户端走「使用方式」第 6 节的本地反代。
Q:返回 400 Unexpected reasoning effort high? A:思考强度选了「高」,端点不接受。可用档位见「模型能力与限制」节;走本地反代会自动映射。
Q:返回 400 maximum context length is 262144? A:输入 + 输出合计超过了 262144。限额与建议值见「模型能力与限制」节。
Q:工具调用没生效 / 思考内容混进正文? A:前者是在模型配置里没勾 Function Calling / Tools;后者是客户端不识别 reasoning 字段,属正常现象(多数工具会忽略或另存),不影响使用。
Q:密钥安全注意什么? A:密钥以明文保存在你的客户端或环境变量中,不要分享给他人,也不要提交到 GitHub。校内服务不代表可以上传敏感资料——所有对话内容都会发往学校服务器,涉密内容不要用;提交代码前注意内容脱敏。校园服务是共享资源,不要跑大规模批量推理。
参考资料
- 学校官方公告:AI编程大模型上线(2025-11-21,实验室管理处)
- 配套接入工具包(
ncepu_proxy.py本地反代脚本、自检脚本、Qoder / WorkBuddy 等更多工具配置):github.com/wangaijun001/ncepu-ai-kit - 后台模型简介(上线时):qwen3-coder:30b
- 正文图 1–6 为实验室管理处官网公告(lab.ncepu.edu.cn,2025-11-21)截图转载





