Files
karuo-ai/01_卡资(金)/金仓_存储备份/群晖NAS管理/参考资料/NAS千问小模型API配置.md
2026-07-19 00:21:46 +08:00

200 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 公司 NAS 千问小模型 API 配置说明
> 部署位置:公司 NAS Dockerollama-nas 容器)
> 内网/外网均可调用,无需 API Key
---
## 公司 NAS 配置与推荐模型
| 项目 | 说明 |
|------|------|
| **型号** | Synology DS1825+ |
| **CPU** | AMD Ryzen Embedded V1500B4 核 8 线程) |
| **内存** | 8GBOllama 容器限制 5GB |
| **推荐模型(主)** | **qwen2.5-coder:3b**(编码专模,约 1.9GB |
| **推荐模型(通用)** | **qwen2.5:3b**(对话/摘要,约 2GB |
| **推理拆解(蒸馏)** | **deepseek-r1:1.5b**R1 蒸馏,约 1.1GB,任务拆解) |
| **备选模型** | qwen2.5:1.5b(更省内存,约 1GB |
已在 NAS 安装上述 4 个模型2026-05-26 验活)。**默认主模型建议改为 `qwen2.5-coder:3b`**;任务拆解链路用 `deepseek-r1:1.5b`;低负载/降级用 `qwen2.5:1.5b`
---
## 零、配置到其他地方的速查(复制即用)
| 配置项 | 外网(推荐) | 内网(与 NAS 同网时) |
|--------|--------------|------------------------|
| **BASE URL** | `http://open.quwanzhi.com:11401` | `http://192.168.1.201:11434` |
| **OpenAI 兼容 Base URL** | `http://open.quwanzhi.com:11401/v1` | `http://192.168.1.201:11434/v1` |
| **卡若AI 官网 Pro 槽网关** | Mongo `gateways.id`=`gw_stnth87g`公司NAS调度槽二 `kr-pro``qwen2.5:3b` | 外网入口 `http://open.quwanzhi.com:3100/api/v1``model=kr-pro` |
| **API Key** | 无需,可填 `ollama` 占位 | 同上 |
| **推荐模型(主)** | `qwen2.5-coder:3b` | 同上 |
| **推荐模型(通用)** | `qwen2.5:3b` | 同上 |
| **推理拆解** | `deepseek-r1:1.5b` | 同上 |
| **备选模型** | `qwen2.5:1.5b` | 同上 |
- **进程**Docker 容器名 `ollama-nas`,镜像 `ollama/ollama:latest`,端口 11434。
- **编排路径**`/volume1/docker/ollama/docker-compose.yml`
- **启动/重启**NAS 上 `sudo docker compose -f /volume1/docker/ollama/docker-compose.yml up -d``sudo docker start ollama-nas`
### 在 OpenAI 兼容客户端中填写示例
- **Base URL**`http://open.quwanzhi.com:11401/v1`
- **API Key**`ollama`或不填Ollama 不校验)
- **Model**`qwen2.5-coder:3b`(编码主模型)或 `qwen2.5:3b` / `deepseek-r1:1.5b`(拆解)
### 环境变量(脚本/应用)
```bash
# 外网
export OLLAMA_BASE_URL="http://open.quwanzhi.com:11401"
# 内网
export OLLAMA_BASE_URL="http://192.168.1.201:11434"
```
---
## 一、接口地址
| 环境 | 基础 URL | 说明 |
|------|----------|------|
| **内网** | `http://192.168.1.201:11434` | 与 NAS 同网(如公司 WiFi |
| **外网** | `http://open.quwanzhi.com:11401` | 任意网络,经 frp 转发 |
外网需确保 **frp 服务端kr 宝塔 43.139.27.93)已开放 11401 端口**;若无法访问,请在 **kr 宝塔** 与 **腾讯云 kr 实例安全组**放行 `11401/TCP`。全站解析与迁机顺序见 `服务器管理/references/FRP与阿里云DNS统一至kr宝塔_迁移与验收.md`
**OpenClaw如阿猫 Mac使用 NAS 小模型**`ollama-wan` 提供商已配置 `qwen2.5-coder:3b`(主)、`qwen2.5:3b``deepseek-r1:1.5b`(蒸馏拆解)、`qwen2.5:1.5b`;网关 fallback 首选 `ollama-wan/qwen2.5-coder:3b`。若 **DNS 解析超时**,将 `baseUrl` 改为 `http://43.139.27.93:11401/v1` 后重启网关。
---
## 二、常用 API 端点
| 用途 | 方法 | 路径 |
|------|------|------|
| 模型列表 | GET | `/api/tags` |
| 生成(流式/非流式) | POST | `/api/generate` |
| 对话OpenAI 兼容) | POST | `/v1/chat/completions` |
---
## 三、简单调用示例
### 1. 查看已安装模型
```bash
# 外网
curl -s http://open.quwanzhi.com:11401/api/tags | jq .
# 内网
curl -s http://192.168.1.201:11434/api/tags | jq .
```
### 2. 文本生成curl
```bash
# 外网示例(推荐 qwen2.5:3b也可用 qwen2.5:1.5b
curl -s http://open.quwanzhi.com:11401/api/generate -d '{
"model": "qwen2.5:3b",
"prompt": "用一句话介绍厦门",
"stream": false
}' | jq .
```
### 3. 对话格式OpenAI 兼容,便于接入各类客户端)
```bash
curl -s http://open.quwanzhi.com:11401/v1/chat/completions -d '{
"model": "qwen2.5:3b",
"messages": [{"role": "user", "content": "你好,请简短回复"}],
"stream": false
}' | jq .
```
---
## 四、环境变量配置(代码里使用)
在应用或脚本中配置 base URL外网用 11401内网用 11434
```bash
# 外网(默认)
export OLLAMA_BASE_URL="http://open.quwanzhi.com:11401"
# 内网(与 NAS 同网时改用)
# export OLLAMA_BASE_URL="http://192.168.1.201:11434"
```
---
## 五、Python 简单配置
```python
import os
import requests
# 外网
OLLAMA_BASE = os.environ.get("OLLAMA_BASE_URL", "http://open.quwanzhi.com:11401")
def chat(text: str, model: str = "qwen2.5:3b") -> str:
r = requests.post(
f"{OLLAMA_BASE}/api/generate",
json={"model": model, "prompt": text, "stream": False},
timeout=60,
)
r.raise_for_status()
return r.json().get("response", "")
# 使用
print(chat("用一句话介绍厦门"))
```
若用 OpenAI 兼容接口(如 openai 库):
```python
from openai import OpenAI
client = OpenAI(
base_url="http://open.quwanzhi.com:11401/v1",
api_key="ollama", # Ollama 不校验,可随意
)
r = client.chat.completions.create(
model="qwen2.5:3b",
messages=[{"role": "user", "content": "你好"}],
)
print(r.choices[0].message.content)
```
---
## 六、Docker 部署与维护
- **一键部署(本机执行)**
`bash 群晖NAS管理/scripts/ollama/deploy_ollama_nas.sh`
会完成:创建目录、上传 compose、启动容器、拉取 qwen2.5:1.5b(及推荐 qwen2.5:3b、配置 frp 并重启 frpc。
- **NAS 上手动操作**
- 编排目录:`/volume1/docker/ollama/`
- 启动:`sudo docker compose -f /volume1/docker/ollama/docker-compose.yml up -d`
- 拉取其他模型:`sudo docker exec ollama-nas ollama pull qwen2.5:3b`
- 查看日志:`sudo docker logs -f ollama-nas`
- **外网端口**frp 将 **11401** → NAS **11434**,代理名 `nas-ollama`。若未生效,检查 frpc 的 `server_addr` 是否指向 **43.139.27.93**、重启 `nas-frpc`,以及 **kr 上 frps** 与安全组是否开放 11401。
- **保活脚本**2026-05-26`/volume1/docker/ollama/ensure_ollama_nas.sh` — 容器未运行则 `docker start`API 无响应则 `restart`。建议 DSM **任务计划** 每 5 分钟执行一次(`ollama-nas``unless-stopped`,手动停止后不会自启)。
---
## 七、接口速查
| 项目 | 值 |
|------|-----|
| 外网 Base URL | `http://open.quwanzhi.com:11401` |
| 内网 Base URL | `http://192.168.1.201:11434` |
| 推荐模型(主) | `qwen2.5-coder:3b` |
| 推荐模型(通用) | `qwen2.5:3b` |
| 推理拆解(蒸馏) | `deepseek-r1:1.5b` |
| 备选模型 | `qwen2.5:1.5b` |
| 认证 | 无(内网服务,外网经 frp 暴露,按需在 frp 或上层加鉴权) |