企业内网搭建 ChatGPT 式助手:从部署到配置一次讲清楚
ChatGPT 私有化部署方案|附配置文件
说明:严格意义上,ChatGPT 是 OpenAI 提供的商业产品与服务,其模型权重、训练数据、服务端实现并不开源,因此无法将“官方 ChatGPT”完整私有化部署到企业内网。
本文所说的“ChatGPT 私有化部署”,通常指在企业内部部署一套类 ChatGPT 的大模型对话系统,包括:大语言模型、Web 聊天界面、知识库问答、权限控制、日志审计、反向代理、安全配置等。
一、为什么企业需要私有化部署 ChatGPT?
随着大语言模型在办公、研发、客服、数据分析、知识管理等场景中的应用越来越广,很多企业开始考虑将 AI 助手部署在自己的服务器或私有云环境中。
相比直接使用公网 SaaS 服务,私有化部署主要有以下优势:
1. 数据安全可控
企业内部文档、代码、合同、客户资料、财务信息等通常不适合上传到公网模型服务。私有化部署可以将数据保留在企业内网,减少敏感信息外泄风险。
2. 满足合规要求
金融、政企、医疗、制造等行业通常存在严格的数据合规要求,例如数据不得出境、日志必须留存、访问必须审计等。私有部署更容易满足这些要求。
3. 可定制能力更强
私有化部署后,可以根据企业业务需求调整:
- 系统提示词
- 知识库内容
- 模型参数
- 用户权限
- 接口调用方式
- 日志与审计策略
- 与 OA、CRM、ERP、代码仓库等系统集成方式
4. 成本更可控
如果企业内部调用量较大,长期使用外部 API 可能成本较高。通过本地 GPU 或私有云资源部署开源大模型,在高频使用场景下可能更具成本优势。
二、私有化部署的几种典型方案
在设计 ChatGPT 私有化部署方案时,需要先明确目标:你是希望拥有一个“可聊天的网页助手”,还是要构建“支持知识库、联网搜索、插件调用、权限管理”的企业 AI 平台。
下面介绍几种常见架构。
三、方案一:Open WebUI + Ollama 本地部署
这是目前较为简单、轻量、上手快的方案,适合个人、团队或中小企业内部使用。
方案特点
- 部署简单
- 支持本地运行开源模型
- 提供类似 ChatGPT 的 Web 聊天界面
- 支持多模型切换
- 可接入知识库
- 适合内网环境部署
技术组件
| 组件 | 作用 |
|---|---|
| Ollama | 本地大模型运行服务 |
| Open WebUI | Web 聊天界面 |
| Docker Compose | 容器编排 |
| Nginx | 反向代理与 HTTPS |
| PostgreSQL / SQLite | 数据存储,可选 |
适合场景
- 部门级 AI 助手
- 企业内部知识问答
- 研发辅助
- 代码解释
- 文档总结
- 内网问答机器人
四、服务器配置建议
不同模型对硬件资源要求差异较大。下面给出常见配置建议。
1. 入门级配置
适合运行 7B 级别模型。
CPU:8 核以上
内存:32GB
GPU:NVIDIA RTX 3060 / 4060 / A10 等,显存 12GB 以上
磁盘:SSD 200GB 以上
系统:Ubuntu 22.04 LTS
2. 推荐配置
适合运行 14B、32B 或更高质量模型。
CPU:16 核以上
内存:64GB 或 128GB
GPU:NVIDIA A10 / A30 / A40 / L40S / 4090
显存:24GB 以上
磁盘:NVMe SSD 500GB 以上
系统:Ubuntu 22.04 LTS
3. 企业级配置
适合多人并发、高性能推理和知识库问答。
CPU:32 核以上
内存:256GB 以上
GPU:A100 / H100 / L40S 多卡
显存:80GB 或多卡并行
磁盘:NVMe SSD 2TB 以上
网络:万兆网络
系统:Ubuntu 22.04 LTS / 私有云平台
五、推荐模型选择
私有化部署不能使用官方 ChatGPT 模型权重,但可以选择开源大模型作为替代。
常见中文能力较好的模型
| 模型 | 特点 |
|---|---|
| Qwen / 通义千问开源模型 | 中文能力强,生态成熟 |
| DeepSeek 系列 | 推理、代码能力较强 |
| Yi 系列 | 中文表现不错 |
| Baichuan 系列 | 中文语义理解较好 |
| ChatGLM 系列 | 国内较早的大模型生态 |
| Llama 系列 | 国际生态成熟,英文能力强 |
如果主要用于中文场景,可以优先考虑 Qwen、DeepSeek、Yi 等模型。如果偏代码场景,可以考虑 DeepSeek Coder、Qwen Coder 等模型。
六、基础部署方案:Docker Compose 一键部署
下面给出一个较为完整的部署示例,包含 Ollama 与 Open WebUI。
1. 安装 Docker
以 Ubuntu 为例:
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://get.docker.com | sudo bash
sudo systemctl enable docker
sudo systemctl start docker
安装 Docker Compose:
sudo apt install -y docker-compose-plugin
docker compose version
如果服务器有 NVIDIA GPU,还需要安装 NVIDIA Container Toolkit。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
验证 GPU 是否可用:
nvidia-smi
七、目录结构设计
建议将部署文件放到统一目录中:
/chatgpt-private/
├── docker-compose.yml
├── .env
├── nginx/
│ └── ai.example.com.conf
├── data/
│ ├── ollama/
│ └── open-webui/
└── logs/
创建目录:
sudo mkdir -p /chatgpt-private/{nginx,data/ollama,data/open-webui,logs}
cd /chatgpt-private
八、配置文件一:.env
.env 文件用于管理环境变量,避免将敏感配置直接写死在 docker-compose.yml 中。
# 基础配置
TZ=Asia/Shanghai
# Open WebUI 配置
WEBUI_SECRET_KEY=please_change_this_to_a_random_secret_key
WEBUI_NAME=企业内部 AI 助手
# Ollama 地址
OLLAMA_BASE_URL=http://ollama:11434
# WebUI 端口
OPEN_WEBUI_PORT=3000
建议将 WEBUI_SECRET_KEY 替换为随机字符串:
openssl rand -hex 32
九、配置文件二:docker-compose.yml
下面是完整的 Docker Compose 配置文件:
version: "3.9"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
environment:
- TZ=${TZ}
volumes:
- ./data/ollama:/root/.ollama
ports:
- "11434:11434"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
depends_on:
- ollama
environment:
- TZ=${TZ}
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- WEBUI_NAME=${WEBUI_NAME}
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL}
volumes:
- ./data/open-webui:/app/backend/data
ports:
- "${OPEN_WEBUI_PORT}:8080"
启动服务:
docker compose up -d
查看容器状态:
docker compose ps
查看日志:
docker logs -f ollama
docker logs -f open-webui
十、下载并运行模型
进入 Ollama 容器:
docker exec -it ollama bash
下载模型:
ollama pull qwen2.5:7b
也可以选择其他模型:
ollama pull qwen2.5:14b
ollama pull deepseek-r1:7b
ollama pull llama3.1:8b
测试模型:
ollama run qwen2.5:7b
如果能够正常返回,就说明模型已经可以使用。
然后访问:
http://服务器IP:3000
首次进入 Open WebUI 后,需要创建管理员账号。
十一、配置文件三:Nginx 反向代理
如果希望通过域名访问,例如:
https://ai.example.com
可以使用 Nginx 作为反向代理。
Nginx 配置示例
文件路径:
/chatgpt-private/nginx/ai.example.com.conf
配置内容:
server {
listen 80;
server_name ai.example.com;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
启用配置:
sudo ln -s /chatgpt-private/nginx/ai.example.com.conf /etc/nginx/sites-enabled/ai.example.com.conf
sudo nginx -t
sudo systemctl reload nginx
十二、配置 HTTPS 证书
如果服务器可以访问公网,可以使用 Let’s Encrypt 申请免费证书。
安装 Certbot:
sudo apt install -y certbot python3-certbot-nginx
申请证书:
sudo certbot --nginx -d ai.example.com
如果是纯内网环境,可以使用企业内部 CA 证书,或者使用自签名证书。
HTTPS 配置完成后,访问:
https://ai.example.com
十三、知识库问答能力设计
仅有聊天模型还不够。企业真正需要的是让 AI 能够回答内部制度、产品文档、技术文档、接口说明、合同模板等内容。
这类能力通常称为 RAG,即 Retrieval-Augmented Generation,检索增强生成。
RAG 的基本流程
- 上传企业文档;
- 对文档进行切分;
- 使用 Embedding 模型生成向量;
- 存入向量数据库;
- 用户提问时先检索相关文档片段;
- 将检索内容与问题一起提交给大模型;
- 大模型基于资料生成回答。
常见向量数据库
| 数据库 | 特点 |
|---|---|
| Milvus | 企业级能力强,适合大规模数据 |
| Qdrant | 部署简单,性能不错 |
| Weaviate | 功能丰富 |
| Chroma | 轻量,适合测试 |
| Elasticsearch | 可结合全文检索 |
Open WebUI 自带一定的知识库能力。如果企业对知识库能力要求较高,也可以使用 Dify、FastGPT、LangChain-Chatchat、MaxKB 等平台。
十四、方案二:Dify + Ollama / vLLM
如果企业希望构建更完整的 AI 应用平台,可以选择 Dify。
Dify 的优势
- 支持工作流编排
- 支持知识库
- 支持 Agent
- 支持多模型接入
- 支持 API 发布
- 支持团队协作
- 支持应用权限管理
Dify 适合场景
- 智能客服
- 企业知识库问答
- 合同审查
- 数据分析助手
- 业务流程自动化
- 多步骤 AI 应用
Dify 可以接入 OpenAI API,也可以接入本地模型服务,例如 Ollama、vLLM、Xinference 等。
如果企业只是需要一个简单聊天界面,Open WebUI 更轻量;如果企业需要搭建多个 AI 应用,Dify 会更合适。
十五、方案三:vLLM 高性能推理服务
当企业并发访问量较高时,Ollama 可能无法满足高吞吐推理需求。此时可以使用 vLLM。
vLLM 是一个高性能大模型推理框架,支持 OpenAI API 兼容接口,适合部署在 GPU 服务器上,对接各种前端系统。
vLLM 启动示例
假设使用 Qwen 模型,可以执行:
docker run -d \
--name vllm-qwen \
--runtime nvidia \
--gpus all \
-p 8000:8000 \
-v /models:/models \
vllm/vllm-openai:latest \
--model /models/Qwen2.5-7B-Instruct \
--served-model-name qwen2.5-7b \
--host 0.0.0.0 \
--port 8000
启动后,可以通过 OpenAI 兼容接口访问:
curl http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer EMPTY" \
-d '{
"model": "qwen2.5-7b",
"messages": [
{
"role": "user",
"content": "请介绍一下企业私有化部署大模型的优势"
}
],
"temperature": 0.7
}'
这种方式非常适合企业已有系统调用,比如将 AI 能力集成到内部门户、工单系统、代码平台或客服系统中。
十六、权限与安全配置建议
私有化部署不是把服务跑起来就结束了,安全配置同样重要。
1. 禁止直接暴露模型端口
例如 Ollama 的 11434 端口、vLLM 的 8000 端口不建议直接暴露到公网。应该通过 Nginx、API 网关或内网访问控制进行限制。
如果只允许本机访问,可以将端口映射改成:
ports:
- "127.0.0.1:11434:11434"
2. 配置访问白名单
可以在 Nginx 中限制访问来源:
location / {
allow 192.168.0.0/16;
allow 10.0.0.0/8;
deny all;
proxy_pass http://127.0.0.1:3000;
}
3. 启用 HTTPS
即使是在内网环境,也建议启用 HTTPS,避免账号密码、聊天内容在网络中明文传输。
4. 管理员账号保护
管理员账号应使用强密码,并尽量启用企业统一身份认证,例如 LDAP、OIDC、OAuth2、SSO 等。
5. 日志审计
企业环境中建议记录:
- 用户登录日志
- 提问时间
- 使用模型
- 知识库命中情况
- 接口调用日志
- 异常请求记录
但需要注意,日志中可能包含敏感信息,应设置访问权限和保留周期。
十七、数据备份方案
部署完成后,需要定期备份数据目录。
需要备份的目录
/chatgpt-private/data/ollama
/chatgpt-private/data/open-webui
/chatgpt-private/nginx
/chatgpt-private/docker-compose.yml
/chatgpt-private/.env
简单备份脚本
创建文件:
vim /chatgpt-private/backup.sh
写入:
#!/bin/bash
BACKUP_DIR="/backup/chatgpt-private"
SOURCE_DIR="/chatgpt-private"
DATE=$(date +"%Y%m%d_%H%M%S")
mkdir -p ${BACKUP_DIR}
tar -czf ${BACKUP_DIR}/chatgpt-private-${DATE}.tar.gz \
${SOURCE_DIR}/docker-compose.yml \
${SOURCE_DIR}/.env \
${SOURCE_DIR}/nginx \
${SOURCE_DIR}/data/open-webui
find ${BACKUP_DIR} -name "chatgpt-private-*.tar.gz" -mtime +30 -delete
添加执行权限:
chmod +x /chatgpt-private/backup.sh
配置定时任务:
crontab -e
加入:
0 2 * * * /chatgpt-private/backup.sh
表示每天凌晨 2 点自动备份一次,并删除 30 天前的旧备份。
十八、常见问题排查
1. WebUI 打不开
检查容器是否启动:
docker compose ps
检查端口是否监听:
ss -lntp | grep 3000
查看日志:
docker logs -f open-webui
2. 模型回复很慢
可能原因包括:
- GPU 显存不足
- 模型参数量过大
- 使用了 CPU 推理
- 并发请求过多
- 上下文长度设置过高
可以尝试换用更小的模型,例如从 14B 换成 7B,或者使用量化模型。
3. Ollama 没有使用 GPU
检查 NVIDIA 驱动:
nvidia-smi
检查容器是否识别 GPU:
docker exec -it ollama nvidia-smi
如果容器内无法执行 nvidia-smi,需要检查 NVIDIA Container Toolkit 是否安装正确。
4. 中文回答质量不好
建议选择中文能力更强的模型,例如 Qwen、DeepSeek、Yi 等。同时可以通过系统提示词约束模型使用中文回答。
示例系统提示词:
你是企业内部 AI 助手,请使用简体中文回答问题。
回答时要求准确、清晰、结构化。
如果无法确定答案,请说明不确定原因,不要编造。
涉及企业内部制度时,应优先依据知识库内容。
十九、生产环境最佳实践
如果要正式在企业内部上线,建议按照生产环境标准设计。
1. 服务分层
建议拆分为:
- Web 访问层
- API 网关层
- 模型推理层
- 知识库服务层
- 向量数据库层
- 日志审计层
- 监控告警层
不要把所有能力都暴露在同一个公网入口上。
2. 模型服务独立部署
模型推理对 GPU 资源要求较高,建议独立部署在 GPU 服务器上。WebUI、知识库、数据库可以部署在普通服务器上。
3. 统一认证
企业内部系统建议接入统一身份认证,例如:
- LDAP
- Active Directory
- OAuth2
- OIDC
- SAML
- 企业微信 / 飞书 / 钉钉登录
这样可以统一管理员工权限,避免离职账号未及时清理。
4. 监控与告警
建议监控以下指标:
- GPU 使用率
- GPU 显存占用
- CPU 使用率
- 内存占用
- 磁盘空间
- 接口响应时间
- 请求量
- 错误率
- 容器状态
可以使用 Prometheus、Grafana、Loki、ELK 等方案。
5. 敏感词与内容安全
企业 AI 助手可能会生成不准确或不合规内容,建议增加内容安全策略,例如:
- 敏感信息识别
- 输出内容过滤
- 用户提问审计
- 高风险问题拦截
- 重要场景人工复核
二十、完整部署命令汇总
为了便于快速部署,下面汇总核心命令。
sudo mkdir -p /chatgpt-private/{nginx,data/ollama,data/open-webui,logs}
cd /chatgpt-private
创建 .env:
cat > .env <
创建 docker-compose.yml:
cat > docker-compose.yml <<'EOF'
version: "3.9"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
environment:
- TZ=${TZ}
volumes:
- ./data/ollama:/root/.ollama
ports:
- "11434:11434"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
depends_on:
- ollama
environment:
- TZ=${TZ}
- WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
- WEBUI_NAME=${WEBUI_NAME}
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL}
volumes:
- ./data/open-webui:/app/backend/data
ports:
- "${OPEN_WEBUI_PORT}:8080"
EOF
启动:
docker compose up -d
下载模型:
docker exec -it ollama ollama pull qwen2.5:7b
访问:
http://服务器IP:3000
二十一、总结
ChatGPT 本身无法完整私有化部署,因为官方模型和服务端并不开源。但企业可以通过开源大模型、Ollama、Open WebUI、Dify、vLLM、向量数据库等组件,构建一套功能接近 ChatGPT 的私有化 AI 助手系统。
如果是快速验证,推荐使用:
Open WebUI + Ollama
如果需要构建企业级 AI 应用平台,推荐使用:
Dify + vLLM / Ollama + 向量数据库
如果需要高并发、高性能推理,推荐使用:
vLLM + OpenAI Compatible API
在真正落地时,企业不仅要关注模型效果,也要关注数据安全、权限控制、知识库质量、日志审计、监控告警与持续运维。只有将模型能力、业务知识和安全治理结合起来,私有化部署的 AI 助手才能真正成为企业内部可用、可信、可持续发展的智能系统。