TinyMCE AI on-premises service 是一个自托管的后端,为 AI 写作辅助提供支持。它可以与 TinyMCE 富文本编辑器(特别是 TinyMCE AI 插件)配合使用,或作为独立服务使用。它完全在主机基础设施内运行。文档内容、对话历史、文件附件和用户数据保留在主机网络内,不会由 Tiny 存储。发送到配置的 LLM 提供商的数据受该提供商的数据处理政策约束。
该服务作为一个单一的 Open Container Initiative (OCI) 容器镜像(registry.containers.tiny.cloud/ai-service-tiny)发布。它提供了 REST API、管理面板、Server-Sent Events 流式传输以及 OpenAPI 规范。
架构
基础设施由三层组成:
浏览器运行带有
tinymceai插件的 TinyMCE 编辑器。应用层运行 token 端点(用于签署 JWT)、AI 服务容器以及负载均衡器或反向代理。它可以由负载均衡器后面的一个或多个 AI 服务实例组成(推荐使用轮询)。每个实例运行相同的无状态容器镜像,并监听端口
8000。数据层由 SQL 数据库、Redis 实例和文件存储组成:
SQL 数据库:存储配置和对话等持久化数据。
Redis:缓存和协调(SSE 投递、速率限制、发布/订阅)。使 AI 服务保持无状态。
文件存储:存储上传的文件和文档(S3、Azure Blob、文件系统或数据库本身)。
数据流
单个 AI 请求的数据流:
客户端应用程序从 token 端点请求 JWT。
客户端通过 HTTPS 将 prompt 和 JWT 发送到 AI 服务。
AI 服务验证 token,并将 prompt 转发给配置的大语言模型 (LLM)。
LLM 将响应流式传输回 AI 服务。
AI 服务通过 Server-Sent Events (SSE) 将响应传递给客户端。
当与 TinyMCE tinymceai 一起使用时,插件通过 tinymceai_token_provider 回调自动处理步骤 1、2 和 5。
浏览器直接连接到 AI 服务 —— 请求不经过应用程序后端。AI 服务必须能够从最终用户浏览器的网络访问,这意味着它必须有一个公共 URL(或在 intranet 上部署时通过 VPN/内部网络访问)。请相应地配置 CORS 和 TLS。
共享密钥(API Secret)仅存在于应用程序后端(token 端点)和 AI 服务容器中。浏览器和编辑器永远不会看到它 —— 它们只处理签名的 token。
功能
| 功能 | 详情 |
|---|---|
对话式 AI 助手 | 支持文档和文件上下文的多轮 AI 聊天。对话历史通过 JWT 的 |
文档审查 | 审查文档的正确性、清晰度、可读性、语气等,或翻译成其他语言。 |
快捷操作 | 重写、总结、扩展、改变语气、修正语法、翻译、续写和改进写作。 |
LLM 提供商灵活性 | OpenAI、Anthropic、Google Gemini、Azure OpenAI、AWS Bedrock、Google Vertex AI 或任何自托管的 OpenAI 兼容端点。多个提供商可以共存。 |
Model Context Protocol (MCP) 集成 | 通过基于 Streamable HTTP 传输的 Model Context Protocol 连接内部工具、数据库和知识库。支持静态 token 和 OAuth 2.0 按用户身份验证。 |
网页抓取和网页搜索 | 用于抓取网页和运行搜索的可插拔端点。 |
多租户环境 | 通过 Environments 实现隔离的对话历史和按租户的访问密钥。 |
许可证验证 | AI 服务在每次容器启动时根据 |
按用户、按功能的权限 | 通过 |
流式响应 | 从 LLM 到浏览器的 Server-Sent Events。 |
文件附件 | 使用附加文件作为 AI 对话的上下文。存储选项包括数据库、文件系统、Amazon S3 或 Azure Blob Storage。 |
可观测性 | 结构化请求日志、OpenTelemetry 和 Langfuse。这三个管道作为独立的同步管道运行。 |
水平扩展 | 服务无状态;可在 load balancer 背后添加 replicas,无需共享本地状态。 |
OpenAPI specification | 发布于 |
凭据
在本地部署中会涉及两个 license key。它们彼此不同,来自不同来源,且用途各异。
| 凭据 | 存放位置 | 作用 | 是否必需? |
|---|---|---|---|
服务 license key( | 作为环境变量传入 AI 服务容器(例如在 | 在运行时激活本地 AI 服务。通过 Tiny 客户门户提供的长字符串。 | 是 — 运行服务必需。 |
TinyMCE 编辑器 license key( | 添加到编辑器配置中: | 为 TinyMCE 编辑器配置 license 模式,并激活 TinyMCE 高级功能。 | 是 — TinyMCE AI 高级功能必需。 |
服务 license key(LICENSE_KEY)与 TinyMCE 编辑器 license key(license_key)不可互换。欲了解更多信息,请参阅 Service license keys 和 License key。
前提条件
| 要求 | 详情 |
|---|---|
容器运行时 | Docker 20.10+、Podman 4+ 或任意 OCI 兼容运行时。同时支持 Kubernetes、AWS ECS 或 Azure Container Apps。 |
SQL 数据库 | MySQL 8.0 或 PostgreSQL 13+(推荐 16)。 |
Redis | 3.2.6+(推荐 7.x)。支持单节点或 Cluster 模式。不支持 Sentinel。 |
LLM 访问 | 至少一个 provider。多个 provider 可并存。 |
License key 与 registry 凭据 | 由 Tiny 账户代表提供。 | Token 端点 | 一个可签名 HS256 JWT 的后端。 |
反向代理(推荐) | AI 服务不终止 Transport Layer Security (TLS)。建议在生产环境中使用 nginx、HAProxy 或云负载均衡器等反向代理进行 TLS 终止。 |
选择部署路径
若用于评估,请从 Getting started 指南开始(单机 Docker Compose)。若要用于生产,请按顺序逐步完成各主题指南 —— 无论部署目标为何(Kubernetes、ECS 或独立 Docker),所使用的组件相同。
主题指南
首次部署时,请按顺序完成各指南。每个指南也可作为特定主题的独立参考。
| 指南 | 范围 |
|---|---|
五分钟 Docker Compose 快速上手。启动 AI 服务、数据库、Redis、token 服务器及浏览器编辑器。 | |
数据层设置:MySQL 与 PostgreSQL 配置、Redis 连接、文件存储选项(S3、Azure Blob、文件系统、数据库)以及主机本地数据库连接。 | |
连接 OpenAI、Anthropic、Google Gemini、Azure OpenAI、AWS Bedrock、Google Vertex AI 或任意 OpenAI 兼容端点(Ollama、vLLM、LM Studio)。支持自定义模型目录及 API key 轮换。 | |
HS256 签名模型、必需与可选 claims、权限参考、8 种语言的 token 端点示例,以及多租户部署模式。 | |
编辑器端配置:plugin 选项、token provider、认证模式、Cross-Origin Resource Sharing (CORS) 以及部署检查清单。 | |
Kubernetes manifests、AWS ECS 任务定义、水平扩展、安全加固、速率限制、可观测性、备份与恢复以及升级。 | |
Model Context Protocol (MCP) 工具集成、Web 抓取端点及 Web 搜索端点。初始设置并非必需。 | |
快速分流、容器启动失败、JWT 错误、LLM 提供商错误、编辑器问题、性能以及诊断配方。 | |
环境变量参考、API 端点参考、Server-Sent Events 参考和错误代码参考。 |
支持
提交支持请求时,请包含:
容器日志docker logs ai-service --tail 200健康检查
curl -fsS http://localhost:8000/health
预期响应:
{"serviceName":"on-premises-http","uptime":1234}解码后的 JWT 负载去除签名并使用 JWT 库进行解码。
环境变量提交前请对机密信息进行脱敏处理。
docker inspect ai-service | jq '.[0].Config.Env'镜像版本
docker inspect ai-service | jq '.[0].Config.Image'