上一篇 下一篇 分享链接 返回 返回顶部

企业内网搭建 ChatGPT 式助手:从部署到配置一次讲清楚

发布人:慈云数据-客服中心 发布时间:14小时前 阅读量:5

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 的基本流程

  1. 上传企业文档;
  2. 对文档进行切分;
  3. 使用 Embedding 模型生成向量;
  4. 存入向量数据库;
  5. 用户提问时先检索相关文档片段;
  6. 将检索内容与问题一起提交给大模型;
  7. 大模型基于资料生成回答。

常见向量数据库

数据库 特点
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 助手才能真正成为企业内部可用、可信、可持续发展的智能系统。

目录结构
全文