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

把 AI 浏览器装进企业内网:从插件到私有模型的落地方案(含源码)

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

AI浏览器 私有化部署方案|附源码

一、为什么需要“AI浏览器”私有化部署?

随着大模型能力快速成熟,越来越多企业开始将 AI 能力嵌入到日常办公、知识检索、数据分析、客户服务、研发协作等业务流程中。其中,“AI浏览器”是一种非常实用的入口形态:用户可以像使用普通浏览器一样访问网页、检索资料、阅读文档,同时通过内置 AI 助手完成网页总结、内容问答、表格提取、知识库检索、自动化操作等任务。

但是,直接使用公网 AI 浏览器或第三方插件,往往会面临以下问题:

  1. 数据安全风险
    企业内部网页、业务系统、客户信息、合同文档、研发资料等可能被上传到外部服务,存在泄露风险。

  2. 权限不可控
    外部 AI 工具通常无法与企业现有的统一身份认证、权限体系、审计系统深度集成。

  3. 模型不可控
    公有云 AI 服务可能存在模型版本变化、接口限制、调用成本波动、数据合规不透明等问题。

  4. 网络环境限制
    政企、金融、能源、制造等行业往往部署在内网、专网或隔离环境中,无法直接访问外部大模型服务。

  5. 业务定制能力不足
    通用型 AI 浏览器难以针对企业业务系统、内部知识库、专属流程进行深度定制。

因此,面向企业场景的最佳实践是:构建可私有化部署的 AI 浏览器方案。它既保留浏览器作为信息入口的便利性,又将模型、数据、插件、权限和审计能力全部部署在企业可控环境中。


二、AI浏览器的核心能力设计

一个完整的 AI 浏览器并不只是“浏览器 + 聊天框”,而应该是一个集成了网页理解、知识增强、任务执行和安全管控的智能工作台。通常可以包含以下能力。

1. 网页内容理解

用户打开任意网页后,AI 能够读取当前页面正文、标题、表格、链接等内容,并支持:

  • 一键总结网页内容;
  • 提取关键观点;
  • 生成思维导图大纲;
  • 对当前网页进行问答;
  • 将网页内容翻译成指定语言;
  • 提取联系人、公司名、产品名、时间、金额等结构化信息。

2. 文档阅读与问答

企业内部常见文档包括 PDF、Word、Excel、PPT、HTML 页面、Markdown、接口文档等。AI 浏览器可以提供统一阅读入口:

  • 上传文档后自动解析;
  • 支持长文档分段向量化;
  • 基于文档内容进行精准问答;
  • 给出答案引用来源;
  • 支持多文档联合检索。

3. 企业知识库检索

AI 浏览器可以连接企业已有知识库,例如:

  • 产品手册;
  • 运维文档;
  • 客服话术;
  • 研发规范;
  • 项目资料;
  • 法务合同模板;
  • 内部制度文件。

通过 RAG,即检索增强生成技术,用户在浏览器侧提出问题时,系统先从知识库检索相关内容,再交给大模型生成答案,从而减少幻觉,提高专业性。

4. 私有大模型接入

私有化部署方案应支持多种模型后端:

  • 本地部署开源大模型,例如 Qwen、DeepSeek、Llama、GLM 等;
  • 企业内网大模型推理服务;
  • vLLM、Ollama、TGI、LMDeploy 等推理框架;
  • 兼容 OpenAI API 格式的模型服务;
  • 多模型路由,根据任务选择不同模型。

5. 浏览器插件化能力

为了降低用户使用门槛,可以将 AI 能力封装成浏览器插件,支持 Chrome、Edge 或基于 Chromium 的国产浏览器。插件侧主要负责:

  • 获取当前网页内容;
  • 展示 AI 对话窗口;
  • 向后端服务发送请求;
  • 展示流式回答;
  • 支持右键菜单、划词解释、一键总结等功能。

6. 安全审计与权限控制

企业级 AI 浏览器必须具备安全体系:

  • 用户登录认证;
  • 角色权限管理;
  • API 调用鉴权;
  • 文档访问权限控制;
  • 对话日志审计;
  • 敏感词过滤;
  • 数据脱敏;
  • 操作留痕;
  • 模型调用限流。

三、总体架构设计

私有化 AI 浏览器可以采用典型的前后端分离架构,整体分为五层:

┌──────────────────────────────────────┐
│          浏览器插件 / Web 前端         │
│  网页读取、划词问答、AI侧边栏、配置管理 │
└──────────────────────────────────────┘
                 │ HTTPS / WebSocket
                 ▼
┌──────────────────────────────────────┐
│             AI 网关服务层             │
│  鉴权、会话管理、提示词编排、模型路由   │
└──────────────────────────────────────┘
                 │
      ┌──────────┼──────────┐
      ▼          ▼          ▼
┌─────────┐ ┌──────────┐ ┌──────────┐
│ 大模型服务 │ │ 知识库服务 │ │ 文档解析服务 │
│ LLM API │ │ Vector DB │ │ Parser/OCR│
└─────────┘ └──────────┘ └──────────┘
      │          │          │
      ▼          ▼          ▼
┌──────────────────────────────────────┐
│         私有化基础设施与数据层          │
│ PostgreSQL / Redis / MinIO / Milvus   │
└──────────────────────────────────────┘

1. 浏览器插件层

插件层通常由以下部分组成:

  • manifest.json:插件配置文件;
  • content.js:注入网页,用于获取页面内容;
  • popup.html:插件弹窗页面;
  • sidebar.html:AI 侧边栏页面;
  • background.js:后台脚本,用于消息通信和 API 请求。

插件不应保存敏感数据,尽量只做轻量交互和页面内容采集,核心逻辑放在服务端。

2. AI 网关服务层

AI 网关是整个系统的核心。它负责:

  • 用户鉴权;
  • 接收浏览器插件请求;
  • 管理会话上下文;
  • 拼接系统提示词;
  • 调用向量数据库;
  • 调用大模型推理服务;
  • 以流式方式返回结果;
  • 记录审计日志。

3. 大模型服务层

私有模型服务可以使用不同方案:

方案 适用场景 优点
Ollama 中小团队、本地测试 部署简单,模型管理方便
vLLM 企业生产环境 高并发、高吞吐、OpenAI API 兼容
LMDeploy 国产模型部署 对部分中文模型优化较好
TGI HuggingFace 生态 标准化程度高
云内私有 API 混合云环境 运维成本低

4. 知识库服务层

知识库服务通常包括:

  • 文档上传;
  • 文档切分;
  • 文本向量化;
  • 向量存储;
  • 相似度检索;
  • 引用来源返回。

常见向量数据库包括 Milvus、Qdrant、Weaviate、pgvector、Elasticsearch 向量检索等。

5. 数据存储层

推荐基础组件:

  • PostgreSQL:存储用户、会话、文档元数据;
  • Redis:缓存、限流、任务队列;
  • MinIO:保存上传文件;
  • Milvus/Qdrant:保存文档向量;
  • Nginx:反向代理和 HTTPS 接入。

四、部署模式选择

1. 单机部署

适合测试环境、小团队、轻量应用。

一台服务器部署:
- AI 网关
- PostgreSQL
- Redis
- MinIO
- Ollama/vLLM
- 向量数据库

优点是简单、成本低;缺点是高可用能力弱,扩展能力有限。

2. Docker Compose 部署

适合中小企业私有化交付。通过 Docker Compose 将所有组件编排起来,安装和迁移方便。

优点:

  • 部署简单;
  • 环境一致;
  • 易于备份;
  • 适合项目交付。

3. Kubernetes 部署

适合大型企业生产环境。可以将 AI 网关、模型服务、数据库、中间件等拆分部署,支持弹性伸缩和滚动升级。

优点:

  • 高可用;
  • 可扩展;
  • 支持灰度发布;
  • 适合多租户和大规模并发。

五、源码示例:浏览器插件端

下面给出一个简化版 Chrome 插件源码,用于实现“读取当前网页正文,并发送到私有 AI 后端进行总结”。

1. manifest.json

{
  "manifest_version": 3,
  "name": "Private AI Browser Assistant",
  "version": "1.0.0",
  "description": "企业私有化 AI 浏览器助手",
  "permissions": [
    "activeTab",
    "scripting",
    "storage"
  ],
  "host_permissions": [
    "http://127.0.0.1:8000/*",
    "https://ai.example.local/*"
  ],
  "action": {
    "default_popup": "popup.html",
    "default_title": "AI 助手"
  },
  "background": {
    "service_worker": "background.js"
  }
}

2. popup.html




  
  AI 助手
  


  
  
点击按钮后,AI 将总结当前页面内容。

3. popup.js

const API_URL = "http://127.0.0.1:8000/api/summarize";

document.getElementById("summaryBtn").addEventListener("click", async () => {
  const resultEl = document.getElementById("result");
  resultEl.innerText = "正在读取网页内容...";

  const [tab] = await chrome.tabs.query({
    active: true,
    currentWindow: true
  });

  const injectionResults = await chrome.scripting.executeScript({
    target: { tabId: tab.id },
    func: () => {
      const title = document.title;
      const url = location.href;

      const article =
        document.querySelector("article") ||
        document.querySelector("main") ||
        document.body;

      const text = article.innerText
        .replace(/\s+/g, " ")
        .trim()
        .slice(0, 12000);

      return { title, url, text };
    }
  });

  const pageData = injectionResults[0].result;

  resultEl.innerText = "正在请求私有 AI 服务...";

  try {
    const response = await fetch(API_URL, {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer demo-token"
      },
      body: JSON.stringify(pageData)
    });

    if (!response.ok) {
      throw new Error("请求失败:" + response.status);
    }

    const data = await response.json();
    resultEl.innerText = data.summary;
  } catch (err) {
    resultEl.innerText = "调用失败:" + err.message;
  }
});

4. background.js

chrome.runtime.onInstalled.addListener(() => {
  console.log("Private AI Browser Assistant installed.");
});

以上插件实现了一个最小可用版本:点击按钮后,插件读取当前网页内容,然后请求私有化部署的后端接口,由后端调用本地大模型生成摘要。


六、源码示例:后端 AI 网关服务

下面使用 Python FastAPI 实现一个简单 AI 网关,兼容 OpenAI 风格接口的本地模型服务,例如 vLLM、Ollama OpenAI API、LMDeploy 等。

1. 项目结构

ai-browser-server/
├── main.py
├── requirements.txt
├── .env
└── docker-compose.yml

2. requirements.txt

fastapi==0.115.0
uvicorn==0.30.6
openai==1.44.0
python-dotenv==1.0.1
pydantic==2.8.2

3. .env

LLM_BASE_URL=http://127.0.0.1:11434/v1
LLM_API_KEY=ollama
LLM_MODEL=qwen2.5:7b

如果使用 vLLM,可以改成:

LLM_BASE_URL=http://127.0.0.1:8001/v1
LLM_API_KEY=EMPTY
LLM_MODEL=Qwen2.5-7B-Instruct

4. main.py

import os
from typing import Optional

from dotenv import load_dotenv
from fastapi import FastAPI, Header, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from openai import OpenAI
from pydantic import BaseModel

load_dotenv()

LLM_BASE_URL = os.getenv("LLM_BASE_URL")
LLM_API_KEY = os.getenv("LLM_API_KEY", "EMPTY")
LLM_MODEL = os.getenv("LLM_MODEL")

client = OpenAI(
    base_url=LLM_BASE_URL,
    api_key=LLM_API_KEY
)

app = FastAPI(title="Private AI Browser Gateway")

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


class PageRequest(BaseModel):
    title: str
    url: str
    text: str


class SummaryResponse(BaseModel):
    summary: str


def verify_token(authorization: Optional[str]):
    """
    示例鉴权逻辑。
    生产环境应替换为企业 SSO、LDAP、OAuth2、JWT 或 API Key 鉴权。
    """
    if not authorization:
      raise HTTPException(status_code=401, detail="Missing authorization header")

    if authorization != "Bearer demo-token":
      raise HTTPException(status_code=403, detail="Invalid token")


@app.post("/api/summarize", response_model=SummaryResponse)
async def summarize_page(
    req: PageRequest,
    authorization: Optional[str] = Header(default=None)
):
    verify_token(authorization)

    if not req.text:
        raise HTTPException(status_code=400, detail="Page text is empty")

    prompt = f"""
你是企业内部 AI 浏览器助手。请对用户正在浏览的网页进行专业总结。

网页标题:{req.title}
网页地址:{req.url}

网页正文:
{req.text}

请按以下格式输出:
1. 核心摘要:用 3-5 句话概括主要内容;
2. 关键要点:列出 5 条以内重点;
3. 适用场景:说明该内容可能对哪些业务有帮助;
4. 注意事项:如果内容中存在不确定信息,请明确说明。
"""

    completion = client.chat.completions.create(
        model=LLM_MODEL,
        messages=[
            {
                "role": "system",
                "content": "你是严谨、专业、可信赖的企业级 AI 助手。"
            },
            {
                "role": "user",
                "content": prompt
            }
        ],
        temperature=0.3
    )

    summary = completion.choices[0].message.content

    return SummaryResponse(summary=summary)

5. 启动服务

pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000

启动后,插件即可访问:

http://127.0.0.1:8000/api/summarize

七、Docker Compose 私有化部署示例

下面给出一个简化版 Docker Compose,用于部署 AI 网关、PostgreSQL、Redis、MinIO 等基础服务。实际生产环境还需要加入向量数据库和模型推理服务。

version: "3.9"

services:
  ai-gateway:
    build: ./ai-browser-server
    container_name: ai-browser-gateway
    ports:
      - "8000:8000"
    environment:
      - LLM_BASE_URL=http://host.docker.internal:11434/v1
      - LLM_API_KEY=ollama
      - LLM_MODEL=qwen2.5:7b
    depends_on:
      - postgres
      - redis
    restart: always

  postgres:
    image: postgres:16
    container_name: ai-browser-postgres
    environment:
      - POSTGRES_USER=ai
      - POSTGRES_PASSWORD=ai_password
      - POSTGRES_DB=ai_browser
    ports:
      - "5432:5432"
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    restart: always

  redis:
    image: redis:7
    container_name: ai-browser-redis
    ports:
      - "6379:6379"
    restart: always

  minio:
    image: minio/minio
    container_name: ai-browser-minio
    command: server /data --console-address ":9001"
    environment:
      - MINIO_ROOT_USER=admin
      - MINIO_ROOT_PASSWORD=admin_password
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - ./data/minio:/data
    restart: always

如果使用 Ollama,可在宿主机执行:

ollama pull qwen2.5:7b
ollama serve

如果使用 vLLM,可参考:

python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8001

八、知识库 RAG 能力扩展

仅总结当前网页还不够。企业更常见的需求是:用户浏览某个页面或提出问题时,AI 能结合企业内部知识库进行回答。

1. RAG 流程

用户问题
  ↓
问题向量化
  ↓
向量数据库检索 TopK 文档片段
  ↓
拼接上下文
  ↓
大模型生成回答
  ↓
返回答案与引用来源

2. 文档切分策略

文档切分会直接影响问答质量。建议:

  • 按标题层级切分;
  • 每段控制在 300-800 中文字;
  • 保留文档标题、章节、页码等元数据;
  • 设置 10%-20% 重叠内容;
  • 表格内容转换为 Markdown 再入库。

3. 向量模型选择

中文场景推荐使用中文或多语言 Embedding 模型,例如:

  • bge-large-zh;
  • bge-m3;
  • m3e;
  • text2vec;
  • jina-embeddings-v2;
  • 企业自训练 embedding 模型。

4. 答案可信度设计

企业应用中,AI 回答必须可追溯。建议返回:

  • 命中的文档标题;
  • 章节名称;
  • 页码或段落编号;
  • 相似度分数;
  • 原文片段;
  • 文件访问链接。

这可以让用户判断答案是否可靠,也方便审计。


九、安全与合规设计

私有化部署不是简单地把服务搬到内网,更重要的是建立完整安全体系。

1. 网络隔离

建议采用以下原则:

  • 插件只能访问企业 AI 网关;
  • AI 网关不能随意访问公网;
  • 模型服务只允许内网访问;
  • 数据库不暴露给普通用户网段;
  • 所有接口使用 HTTPS;
  • 管理后台单独授权访问。

2. 身份认证

可接入企业已有认证体系:

  • LDAP;
  • Active Directory;
  • OAuth2;
  • OpenID Connect;
  • SAML;
  • CAS;
  • 企业微信、钉钉、飞书统一登录。

3. 权限控制

权限粒度建议包括:

  • 用户是否可使用 AI 浏览器;
  • 用户可访问哪些知识库;
  • 用户可上传哪些文档;
  • 用户可调用哪些模型;
  • 用户每日 Token 配额;
  • 管理员是否可查看审计日志。

4. 数据脱敏

对于敏感内容,建议在进入模型前进行脱敏,例如:

  • 手机号;
  • 身份证号;
  • 银行卡号;
  • 客户姓名;
  • 合同金额;
  • 邮箱;
  • 地址;
  • 内部项目代号。

可以通过正则规则、敏感词典、NER 模型等方式实现。

5. 审计日志

审计日志应至少记录:

  • 用户 ID;
  • 请求时间;
  • 访问页面 URL;
  • 请求类型;
  • 消耗 Token;
  • 命中的知识库;
  • 模型名称;
  • 响应状态;
  • 风险标签。

需要注意的是,审计日志也可能包含敏感信息,因此应设置访问权限和保存周期。


十、性能优化建议

1. 流式输出

AI 浏览器的交互体验非常依赖响应速度。建议后端支持 SSE 或 WebSocket 流式输出,让用户尽快看到首字。

2. 页面内容压缩

网页正文可能很长,不应直接把整个页面传给模型。可以在服务端做:

  • HTML 清洗;
  • 正文提取;
  • 去除导航、广告、页脚;
  • 长文本分段摘要;
  • Token 预算控制。

3. 多模型路由

不同任务使用不同模型:

任务 推荐模型
简单摘要 7B/8B 模型
文档问答 14B/32B 模型
代码分析 Code 专用模型
SQL 生成 强推理模型
高价值决策 更大参数模型

4. 缓存机制

对于同一 URL 的网页总结,可以缓存结果。缓存 Key 可以由:

hash(url + page_title + page_text_digest)

组成,避免重复调用模型,降低 GPU 成本。

5. 并发与限流

生产环境中应对用户、部门、接口分别限流:

  • 每分钟请求次数;
  • 每日 Token 上限;
  • 单次最大输入长度;
  • 最大并发会话数;
  • 文件上传大小限制。

十一、生产环境落地清单

上线前建议检查以下内容:

  • [ ] 浏览器插件是否完成企业签名或内部分发;
  • [ ] 后端接口是否启用 HTTPS;
  • [ ] 是否接入统一身份认证;
  • [ ] 是否配置用户权限和知识库权限;
  • [ ] 是否限制跨域来源;
  • [ ] 是否启用审计日志;
  • [ ] 是否启用敏感信息脱敏;
  • [ ] 是否配置模型服务访问白名单;
  • [ ] 是否配置数据库备份;
  • [ ] 是否配置日志轮转;
  • [ ] 是否压测并评估 GPU 资源;
  • [ ] 是否制定异常降级方案;
  • [ ] 是否准备用户使用手册。

十二、常见问题

1. AI 浏览器是否必须自己开发浏览器内核?

不需要。大多数场景只需要开发浏览器插件即可。基于 Chrome、Edge 或 Chromium 内核浏览器,可以快速实现网页读取和 AI 侧边栏能力。只有在需要完全定制浏览器外壳、安全沙箱、内置证书体系时,才需要考虑基于 Electron 或 Chromium 二次开发。

2. 插件读取网页内容是否有安全风险?

有一定风险。因此需要控制插件权限,不要申请不必要的权限;同时要通过企业内部插件商店或浏览器策略统一分发,避免用户安装来源不明的插件。

3. 私有化部署是否一定需要 GPU?

如果只是轻量测试,可以使用 CPU 或较小模型,但生产环境建议使用 GPU。对于 7B 级模型,单张消费级高显存 GPU 或服务器 GPU 可以支撑基础场景;如果并发较高,应使用 vLLM 等推理框架提升吞吐。

4. 如何降低模型幻觉?

可以从几个方面入手:

  • 使用 RAG 引入企业知识库;
  • 要求答案引用来源;
  • 限制模型不得编造;
  • 对高风险问题增加“无法确定”输出策略;
  • 使用更强模型处理关键问题;
  • 增加人工审核流程。

十三、总结

AI 浏览器是企业落地大模型应用的高价值入口。它让用户无需切换复杂系统,就能在浏览网页、阅读文档、处理信息的过程中直接调用 AI 能力。相比公有云插件,私有化部署方案在数据安全、权限控制、模型可控、合规审计和业务定制方面更适合企业长期使用。

本文给出了一套可落地的 AI 浏览器私有化部署方案,包括整体架构、插件源码、后端 AI 网关源码、Docker Compose 部署示例、RAG 扩展、安全合规和性能优化建议。实际项目中,可以先从“网页总结 + 文档问答 + 企业知识库检索”三个核心功能做最小可用版本,再逐步扩展多模型路由、自动化操作、流程编排和智能 Agent 能力。

最终,一个成熟的私有化 AI 浏览器不只是一个工具,而会成为企业知识流转、信息处理和智能协作的新入口。

目录结构
全文