From 82c3cc4838eeeff94b5627989c245147c3af0b70 Mon Sep 17 00:00:00 2001 From: tmt Date: Mon, 27 Jul 2026 01:11:39 +0800 Subject: [PATCH 1/4] docs: refresh Chinese documentation --- .../docs/content/docs/configuration.zh-cn.mdx | 166 ++++++++++++++---- .../docs/content/docs/deployment.zh-cn.mdx | 75 ++++++-- .../content/docs/getting-started.zh-cn.mdx | 15 +- .../content/docs/supported-models.zh-cn.mdx | 91 ++++++---- packages/docs/content/docs/voxcpm.zh-cn.mdx | 3 +- 5 files changed, 254 insertions(+), 96 deletions(-) diff --git a/packages/docs/content/docs/configuration.zh-cn.mdx b/packages/docs/content/docs/configuration.zh-cn.mdx index 49c6b436ad..451a7e153b 100644 --- a/packages/docs/content/docs/configuration.zh-cn.mdx +++ b/packages/docs/content/docs/configuration.zh-cn.mdx @@ -1,13 +1,15 @@ --- title: 配置说明 -description: LLM 提供方、TTS、ASR、访问控制和功能开关。 +description: LLM 提供方、媒体生成、文档解析、TTS、ASR、访问控制和功能开关。 --- -OpenMAIC 在服务器启动时读取环境变量。所有项都是可选的——按需启用。完整清单见仓库里的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。内置模型 ID 请见[支持模型](./supported-models.mdx)。 +OpenMAIC 在服务器启动时读取环境变量。所有项都是可选的——按需启用。环境变量示例见仓库里的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。内置模型 ID 请见[支持模型](./supported-models.mdx)。 + +除环境变量外,也可以使用项目根目录下的 `server-providers.yml` 配置服务端 provider。环境变量会逐字段覆盖 YAML 中的同名配置。 ## LLM 提供方 -每个 provider 都用三个环境变量:只有 API key 必填,base URL 和 model 列表是可选的。 +云端提供方通常使用以下三个环境变量:API key、base URL 和 model 列表。其中 API key 通常是必填的,base URL 和 model 列表可选;Azure OpenAI 需要配置资源 endpoint,Ollama 和 Lemonade 不需要 API key。 ```bash OPENAI_API_KEY=sk-... @@ -20,6 +22,7 @@ OPENAI_MODELS= # 可选的模型白名单(逗号分隔) | 前缀 | 提供方 | | ------------------ | ------------------------------------ | | `OPENAI_` | OpenAI | +| `AZURE_OPENAI_` | Azure OpenAI | | `ANTHROPIC_` | Anthropic | | `GOOGLE_` | Google Gemini | | `DEEPSEEK_` | DeepSeek | @@ -32,21 +35,30 @@ OPENAI_MODELS= # 可选的模型白名单(逗号分隔) | `OPENROUTER_` | OpenRouter | | `GROK_` | xAI Grok | | `TENCENT_` | 腾讯混元 | -| `TENCENT_HUNYUAN_` | 腾讯混元 | +| `TENCENT_HUNYUAN_` | 腾讯混元(别名) | | `XIAOMI_` | 小米 MiMo | -| `MIMO_` | 小米 MiMo | +| `MIMO_` | 小米 MiMo(别名) | | `OLLAMA_` | Ollama(本地) | | `LEMONADE_` | Lemonade(本地) | -## 本地模型(Ollama) +Azure OpenAI 使用 deployment name 作为模型 ID: + +```bash +AZURE_OPENAI_API_KEY=... +AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai +AZURE_OPENAI_MODELS=your-deployment-name +``` + +## 本地模型(Ollama 和 Lemonade) -不需要 API key。把 base URL 写在服务端,绕过 SSRF 检查: +Ollama 和 Lemonade 不需要 API key;本地服务的 base URL 应写在服务端配置中,以通过 SSRF 校验: ```bash OLLAMA_BASE_URL=http://localhost:11434/v1 +# LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -生产环境会拦截客户端传过来的 localhost URL,所以必须在服务端配置。 +如需限制可用模型,可使用 `OLLAMA_MODELS` 或 `LEMONADE_MODELS` 指定模型白名单。 ## TTS 提供方 @@ -69,9 +81,9 @@ TTS_OPENAI_BASE_URL= TTS_VOXCPM_BASE_URL=http://localhost:8000 ``` -支持的 TTS 前缀包括 `TTS_MINIMAX_`、`TTS_DOUBAO_`、`TTS_OPENAI_`、`TTS_AZURE_`、`TTS_GLM_`、`TTS_QWEN_`、`TTS_VOXCPM_`、`TTS_ELEVENLABS_`。本地 Lemonade TTS 使用 `TTS_LEMONADE_BASE_URL`,不需要 API key。 +支持的 TTS 前缀包括 `TTS_OPENAI_`、`TTS_AZURE_`、`TTS_GLM_`、`TTS_QWEN_`、`TTS_MINIMAX_`、`TTS_DOUBAO_`、`TTS_ELEVENLABS_`、`TTS_VOXCPM_` 和 `TTS_LEMONADE_`。本地 Lemonade TTS 和 VoxCPM2 不需要 API key。浏览器原生 TTS 不需要服务端配置。 -VoxCPM2(自托管 TTS + 声音克隆)请见单独的 [VoxCPM2](./voxcpm.mdx) 章节。 +管理员可以使用 `TTS__ENABLED=false` 在服务端强制关闭某个 TTS 提供方。VoxCPM2(自托管 TTS + 声音克隆)请见单独的 [VoxCPM2](./voxcpm.mdx) 章节。 ## ASR(语音转文字) @@ -84,31 +96,60 @@ ASR_OPENAI_BASE_URL= # 可选覆盖 ASR_QWEN_API_KEY= ASR_QWEN_BASE_URL= # 可选覆盖 +# Azure ASR +ASR_AZURE_API_KEY= +ASR_AZURE_BASE_URL=https://{region}.api.cognitive.microsoft.com + # Lemonade ASR(本地,不需要 key) ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +浏览器原生 ASR 不需要服务端配置。 + ## 图像生成提供方 -图像生成提供方使用 `IMAGE__API_KEY`,可选 `IMAGE__BASE_URL`。Lemonade 是本地服务,不需要 key: +图像生成提供方使用 `IMAGE__API_KEY`,可选 `IMAGE__BASE_URL`。支持的前缀包括: + +`IMAGE_OPENAI_`、`IMAGE_SEEDREAM_`、`IMAGE_QWEN_IMAGE_`、`IMAGE_NANO_BANANA_`、`IMAGE_MINIMAX_`、`IMAGE_GROK_` 和 `IMAGE_LEMONADE_`。 + +Lemonade 是本地服务,不需要 key: ```bash IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -## ACCESS_CODE —— 站点级访问密码 +## 视频生成提供方 -对共享部署(内部 demo、课堂),可以设置访问码,访客先输密码才能看到应用: +视频生成提供方使用 `VIDEO__API_KEY`,可选 `VIDEO__BASE_URL`。支持的前缀包括: + +`VIDEO_SEEDANCE_`、`VIDEO_KLING_`、`VIDEO_VEO_`、`VIDEO_SORA_`、`VIDEO_MINIMAX_`、`VIDEO_GROK_` 和 `VIDEO_HAPPYHORSE_`。 + +## 文档和媒体解析 + +课程材料的具体格式取决于所选解析器。当前支持文本、PDF、Office 文档、图片以及部分音视频格式;不同 provider 支持的格式和能力不同。 ```bash -ACCESS_CODE=your-secret-code +# MinerU 自托管 +PDF_MINERU_BASE_URL=http://localhost:8888 + +# MinerU 自托管的可选后端 +PDF_MINERU_BACKEND=pipeline + +# MinerU Cloud +PDF_MINERU_CLOUD_API_KEY= +PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 + +# AliDocMind(使用阿里云 AccessKey,而不是单独的 API key) +ALIDOCMIND_ACCESS_KEY_ID= +ALIDOCMIND_ACCESS_KEY_SECRET= +ALIDOCMIND_BASE_URL= # 可选覆盖 ``` -访客只会被提示一次,密码存在 HTTP-only cookie 里。留空则关闭。 +`unpdf` 内置于 OpenMAIC,可用于基础 PDF 解析。Office 文档、图片和需要 OCR、表格、公式或版面分析的材料,应选择兼容的 MinerU 或 AliDocMind provider。 ## 联网搜索 -配置 Tavily、Bocha 或 MiniMax: +配置 Tavily、Bocha、Brave、Baidu、SearXNG 或 MiniMax: ```bash TAVILY_API_KEY= @@ -117,26 +158,80 @@ TAVILY_BASE_URL= # 可选覆盖 BOCHA_API_KEY= BOCHA_BASE_URL= # 可选覆盖 +BRAVE_API_KEY= + +BAIDU_API_KEY= +BAIDU_BASE_URL=https://qianfan.baidubce.com # 可选覆盖 + +# 自托管 SearXNG,不需要 API key +SEARXNG_BASE_URL= + WEB_SEARCH_MINIMAX_API_KEY= WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # 可选覆盖 ``` -前端会暴露一个 toggle,每次生成时可以选是否开启搜索。 +Brave 和 SearXNG 不需要 API key;前端可以在每次生成时选择是否启用搜索。Grok 的联网搜索通过 Grok LLM 的搜索工具提供,不是独立的联网搜索 provider。 -## PDF 解析提供方 +## ACCESS_CODE —— 站点级访问密码 -对于布局复杂、含公式/表格的 PDF,可以配置服务端解析器: +对共享部署(内部 demo、课堂),可以设置访问码,访客先输密码才能看到应用: ```bash -# MinerU 自托管 -PDF_MINERU_BASE_URL=http://localhost:8888 +ACCESS_CODE=your-secret-code +``` -# MinerU Cloud -PDF_MINERU_CLOUD_API_KEY= -PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 +访客只会被提示一次,密码存在 HTTP-only cookie 里。留空则关闭。 + +## 默认模型和模型路由 + +服务端 API 没有收到客户端模型时,需要通过 `DEFAULT_MODEL` 指定默认模型。模型写法是 `provider:model-id`,例如: + +```bash +DEFAULT_MODEL=openai:gpt-5.5 +``` + +可以使用 `MODEL_ROUTES` 为不同生成阶段指定模型;未配置的阶段继续按客户端模型和 `DEFAULT_MODEL` 解析。它是一个 JSON 对象,键为生成阶段,值可以是模型字符串,也可以是包含 `model` 和 `thinking` 的对象。完整的阶段列表和示例见仓库里的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。 + +## 功能开关 + +功能开关的值为 `true` 或 `1`,其他值视为关闭。`NEXT_PUBLIC_*` 开关会在构建时注入客户端,修改后需要重新构建: + +```bash +# MAIC Editor(Pro 模式) +NEXT_PUBLIC_MAIC_EDITOR_ENABLED=true + +# Pi 对话运行时 +NEXT_PUBLIC_PI_CHAT_ENABLED=true + +# 职业教育任务引擎(服务端开关) +OPENMAIC_ENABLE_VOCATIONAL=true + +# 显示职业教育实验开关 +NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true + +# 显示视频导出入口 +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true ``` -没配置服务端解析器时,OpenMAIC 会回退到 `unpdf`。 +## 其他服务端选项 + +以下服务端选项也可以通过环境变量配置: + +```bash +# 场景内容并行生成;0 或未设置表示串行 +PARALLEL_SCENE_CONCURRENCY=3 + +# 允许访问 localhost、内网等本地网络地址;仅用于自托管/内网部署 +ALLOW_LOCAL_NETWORKS=true + +# 可选的 MP4 渲染服务 +RENDER_SERVICE_URL=http://render-service:9000 + +# 日志和推理 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` ## 用 YAML 配置文件 @@ -148,8 +243,7 @@ providers: apiKey: sk-... baseUrl: https://api.openai.com/v1 models: - - gpt-4o - - gpt-4o-mini + - gpt-5.5 anthropic: apiKey: sk-ant-... @@ -164,13 +258,23 @@ asr: pdf: mineru: baseUrl: http://localhost:8888 + alidocmind: + accessKeyId: your-access-key-id + accessKeySecret: your-access-key-secret + +image: + seedream: + apiKey: ... + +video: + seedance: + apiKey: ... web-search: tavily: apiKey: tvly-... - minimax: - apiKey: sk-... - baseUrl: https://api.minimaxi.com + searxng: + baseUrl: http://localhost:8080 ``` -环境变量会逐字段覆盖 YAML 中的同名 provider 配置。键名使用 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`tavily` 或 `minimax`。 +环境变量会逐字段覆盖 YAML 中的同名 provider 配置。键名使用 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`alidocmind`、`seedream`、`seedance`、`tavily` 或 `searxng`。 diff --git a/packages/docs/content/docs/deployment.zh-cn.mdx b/packages/docs/content/docs/deployment.zh-cn.mdx index ec066a8721..5c9b0cc025 100644 --- a/packages/docs/content/docs/deployment.zh-cn.mdx +++ b/packages/docs/content/docs/deployment.zh-cn.mdx @@ -9,36 +9,33 @@ OpenMAIC 是一个标准的 Next.js 应用,Next.js 能跑的地方它就能跑 最快的路径。点[仓库 README](https://github.com/THU-MAIC/OpenMAIC)里的 Deploy 按钮,fork 仓库,按提示填入至少一个 LLM 的 API key 即可。 -Vercel 会在每次提交时重新构建,并自动把静态资源托管到它的边缘网络上。 +Vercel 会在每次提交后重新构建并部署 Next.js 应用。部署时需要在项目设置中配置至少一个 LLM 提供方。 + +Vercel 部署默认使用浏览器端持久化。若需要服务端持久化,请使用外部 PostgreSQL 和服务端部署方案;`server-persistence` Compose profile 不能直接用于 Vercel。 ## Docker -仓库里有一份适合生产的 `Dockerfile`。构建并运行: +仓库里有一份适合生产的 `Dockerfile`。镜像内部使用 Node.js 22,构建并运行: ```bash docker build -t openmaic . -docker run -p 3000:3000 \ - -e OPENAI_API_KEY=sk-... \ - openmaic +docker run --env-file .env.local -p 3000:3000 openmaic ``` -多容器部署(比如套反向代理或加其他服务),用 `docker-compose`: - -```yaml title="docker-compose.yml" -services: - openmaic: - image: openmaic:latest - ports: - - '3000:3000' - env_file: - - .env.local - restart: unless-stopped +推荐使用仓库里的 Docker Compose 配置: + +```bash +cp .env.example .env.local +# 编辑 .env.local,填入至少一个 LLM 提供方的配置,然后: +docker compose up --build ``` +默认 Compose 部署会启动 OpenMAIC 应用,并挂载 `openmaic-data` 数据卷。其他 provider 和功能按需配置,详见[配置说明](./configuration.mdx)。 + ## 自建虚拟机 -用 `pnpm` 构建并启动: +主机需要 Node.js `20.9.0` 或更高版本,以及 pnpm `10.28.0`。用 `pnpm` 构建并启动: ```bash pnpm install @@ -46,13 +43,53 @@ pnpm build pnpm start # 默认监听 3000 端口 ``` -前面套 nginx 或 Caddy 做 TLS 终止。高流量场景下可以部署多实例 + 负载均衡,OpenMAIC 默认无状态(状态存在浏览器 IndexedDB 里)。 +前面套 nginx 或 Caddy 做 TLS 终止。默认情况下,课堂状态保存在浏览器 IndexedDB 中;启用服务端持久化后,运行时数据和课程文档会保存到服务端存储和 PostgreSQL。多实例部署前应先选择合适的持久化方案。 + +## 服务端持久化(PostgreSQL) + +仓库的 `server-persistence` profile 会启动 OpenMAIC 和 PostgreSQL 两个容器。持久化 HTTP API 内嵌在 OpenMAIC 中,不需要额外的 persistence 服务。 + +先在 `.env.local` 中加入数据库连接和开发令牌: + +```bash +DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic +PERSISTENCE_DEV_TOKEN=openmaic-local-dev +``` + +然后启动 profile: + +```bash +NEXT_PUBLIC_PERSISTENCE=1 \ +NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \ +docker compose --profile server-persistence up --build +``` + +`NEXT_PUBLIC_PERSISTENCE` 和 `NEXT_PUBLIC_PERSISTENCE_TOKEN` 是构建时变量,必须与运行时的服务端配置匹配。`PERSISTENCE_DEV_TOKEN` 方案只适合本地或可信内网部署,不提供真正的用户隔离,不应直接作为公开生产环境的认证方案。 + +PostgreSQL 数据保存在 `openmaic-postgres` volume 中。`PERSISTENCE_POSTGRES_PASSWORD` 只会在数据库目录首次初始化时设置密码,之后修改环境变量不会自动修改已有数据库用户密码。 + +不设置 `NEXT_PUBLIC_PERSISTENCE` 即保持原有的浏览器端持久化行为。 + +## 可选:MP4 视频导出 + +“导出视频”功能会先在浏览器中生成自包含的 Hyperframes 项目,再由独立的 `render-service` 使用 Chromium 和 FFmpeg 渲染为 MP4。该服务是可选的,不影响普通课堂生成。 + +启用 `video-export` profile: + +```bash +docker compose --profile video-export up --build +``` + +Compose 会通过 `RENDER_SERVICE_URL` 让 OpenMAIC 连接渲染服务。未启用该 profile,或渲染服务不可用时,导出会退化为下载项目 ZIP,供本地 CLI 渲染。渲染服务使用隔离网络,启动时需要 `NET_ADMIN` capability;更多限制和独立部署方式见仓库的 [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md)。 ## 环境变量 -完整清单见[配置说明](./configuration.mdx)。至少要配置一个 LLM 提供方的 key。 +完整的环境变量和 provider 配置见[配置说明](./configuration.mdx)。至少要配置一个 LLM 提供方的 key。 ## 访问控制 共享 demo 可以设置 `ACCESS_CODE`,给整站加密码门。见[配置说明 → ACCESS_CODE](./configuration.mdx#access_code--站点级访问密码)。 +## 可选的自托管服务 + +- [VoxCPM2:自托管 TTS 与声音克隆 →](./voxcpm.mdx) diff --git a/packages/docs/content/docs/getting-started.zh-cn.mdx b/packages/docs/content/docs/getting-started.zh-cn.mdx index b5720c2929..600c973d72 100644 --- a/packages/docs/content/docs/getting-started.zh-cn.mdx +++ b/packages/docs/content/docs/getting-started.zh-cn.mdx @@ -3,13 +3,13 @@ title: 快速上手 description: 五分钟内在本地跑起 OpenMAIC。 --- -OpenMAIC 是一个 Next.js 应用,可以在自己的机器上运行。你需要 Node.js、pnpm,以及至少一个 LLM 服务的 API key。 +OpenMAIC 是一个 Next.js 应用,可以在自己的机器上运行。你需要至少配置一个 LLM provider:云端 provider 通常需要 API key;本地 Ollama 或 Lemonade 不需要 API key。 ## 前置条件 -- **Node.js** 20 或更高 -- **pnpm** 10 或更高(如果没装,先 `npm install -g pnpm`) -- 至少一个 LLM 提供方的 API key —— OpenAI、Anthropic、Google、DeepSeek、Zhipu、MiniMax、Qwen、Doubao、Groq、SiliconFlow,或本地 Ollama +- **Node.js** 20.9.0 或更高 +- **pnpm** 10.28.0(如果没装,先 `npm install -g pnpm@10.28.0`) +- 至少配置一个 LLM provider;云端 provider 通常需要 API key,本地 Ollama 或 Lemonade 不需要 API key ## 安装 @@ -21,7 +21,7 @@ cd OpenMAIC pnpm install ``` -安装过程会顺便构建两个 workspace 包(`mathml2omml` 和 `pptxgenjs`)。首次运行大约一分钟。 +安装过程中会构建项目所需的 workspace 包,首次安装可能需要一些时间。 ## 配置 @@ -41,7 +41,7 @@ ANTHROPIC_API_KEY=sk-ant-... OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -完整的 provider、TTS、ASR 和 feature flag 配置见[配置说明](./configuration.mdx)。 +完整的 provider、图像/视频生成、TTS、ASR、文档解析、联网搜索、访问控制和 feature flag 配置见[配置说明](./configuration.mdx)。 ## 运行 @@ -51,7 +51,7 @@ OLLAMA_BASE_URL=http://localhost:11434/v1 pnpm dev ``` -打开 [http://localhost:3000](http://localhost:3000),应该能看到 OpenMAIC 的课堂生成器。输入一个主题或上传 PDF,点生成,AI 教师会搭建一场完整的多场景课堂。 +打开 [http://localhost:3000](http://localhost:3000),应该能看到 OpenMAIC 的课堂生成器。输入一个主题或上传学习材料,点生成,AI 教师会搭建一场完整的多场景课堂。支持的材料格式取决于所选解析器,通常包括 PDF、Office 文档、Markdown/纯文本、图片和部分音视频;具体范围以解析器支持情况为准。 ## 生产构建 @@ -67,4 +67,3 @@ pnpm start - [配置 provider、TTS、ACCESS_CODE →](./configuration.mdx) - [部署到 Vercel 或 Docker →](./deployment.mdx) - 想了解架构或贡献代码,请访问 [GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) - diff --git a/packages/docs/content/docs/supported-models.zh-cn.mdx b/packages/docs/content/docs/supported-models.zh-cn.mdx index f8ccce8415..f32b9cfeba 100644 --- a/packages/docs/content/docs/supported-models.zh-cn.mdx +++ b/packages/docs/content/docs/supported-models.zh-cn.mdx @@ -3,53 +3,56 @@ title: 支持模型 description: 开源版 OpenMAIC 的内置模型与 provider 列表。 --- -本页列出开源版 OpenMAIC 随代码内置的 provider registry。你仍然可以在设置、环境变量或 `server-providers.yml` 中添加自定义 OpenAI 兼容 provider,或覆盖模型白名单。 +本页列出开源版 OpenMAIC 随代码内置的 provider registry。你仍然可以在设置、环境变量或 `server-providers.yml` 中添加自定义 OpenAI 兼容 provider,或覆盖模型白名单。具体可用性还取决于 provider 账号、所在区域和服务端配置;托管实例也可能通过白名单隐藏部分内置模型。 ## LLM 模型 -`DEFAULT_MODEL` 或 YAML 中的模型写法是 `provider:model-id`,例如 `openai:gpt-5.4-mini`、`qwen:qwen3.6-flash`、`ollama:llama3.3`。 - -| 提供方 | Provider ID | 内置模型 | -| --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | -| Claude | `anthropic` | Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | -| Gemini | `google` | Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | -| GLM | `glm` | GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | -| Qwen | `qwen` | Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | -| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | -| Kimi | `kimi` | Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | -| MiniMax | `minimax` | MiniMax M2.7 (`MiniMax-M2.7`) | -| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | -| Doubao | `doubao` | Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | -| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | -| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | -| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | -| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2.5 (`mimo-v2.5`) | -| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | -| Lemonade | `lemonade` | Qwen3.5 4B GGUF (`Qwen3.5-4B-GGUF`)
Qwen3 4B GGUF (`Qwen3-4B-GGUF`)
GPT-OSS 20B (`gpt-oss-20b`)
Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | +`DEFAULT_MODEL` 或 YAML 中的模型写法是 `provider:model-id`,例如 `openai:gpt-5.6`、`qwen:qwen3.7-plus`、`ollama:llama3.3`。 + +| 提供方 | Provider ID | 内置模型 | +| --------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | +| Azure OpenAI | `azure` | 无预设模型 ID;填写 Azure OpenAI deployment name。 | +| Claude | `anthropic` | Claude Opus 4.8 (`claude-opus-4-8`)
Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | +| Gemini | `google` | Gemini 3.5 Flash (`gemini-3.5-flash`)
Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | +| GLM | `glm` | GLM-5.2 (`glm-5.2`)
GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | +| Qwen | `qwen` | Qwen3.7 Plus (`qwen3.7-plus`)
Qwen3.7 Max (`qwen3.7-max`)
Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | +| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | +| Kimi | `kimi` | Kimi K2.7 Code (`kimi-k2.7-code`)
Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`)
Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | +| MiniMax | `minimax` | MiniMax M3 (`MiniMax-M3`)
MiniMax M2.7 (`MiniMax-M2.7`) | +| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | +| Doubao | `doubao` | Doubao Seed 2.1 Pro (`doubao-seed-2-1-pro-260628`)
Doubao Seed 2.1 Turbo (`doubao-seed-2-1-turbo-260628`)
Doubao Seed Evolving (`doubao-seed-evolving`)
Doubao Seed Character (`doubao-seed-character-260628`)
Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | +| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | +| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | +| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | +| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2 Pro (`mimo-v2-pro`)
MiMo V2.5 (`mimo-v2.5`)
MiMo V2 Omni (`mimo-v2-omni`)
MiMo V2 Flash (`mimo-v2-flash`) | +| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | +| Lemonade | `lemonade` | Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | ## 图像生成模型 | 提供方 | Provider ID | 内置模型 | | -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | +| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 5.0 Lite Alias (`doubao-seedream-5-0-lite-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | | OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | | Qwen Image | `qwen-image` | Qwen Image 2.0 Pro (`qwen-image-2.0-pro`)
Qwen Image 2.0 Pro 2026-03-03 (`qwen-image-2.0-pro-2026-03-03`)
Qwen Image 2.0 (`qwen-image-2.0`)
Qwen Image 2.0 2026-03-03 (`qwen-image-2.0-2026-03-03`)
Qwen Image Max (`qwen-image-max`)
Qwen Image Max 2025-12-30 (`qwen-image-max-2025-12-30`)
Qwen Image Plus (`qwen-image-plus`)
Qwen Image Plus 2026-01-09 (`qwen-image-plus-2026-01-09`)
Qwen Image (`qwen-image`)
Z-Image Turbo (`z-image-turbo`) | | Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | | MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | | Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | +| ComfyUI Image | `comfyui-image` | 无预设模型 ID;运行时从 `public/` 中发现并选择 ComfyUI workflow。 | | Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | ## 视频生成模型 -| 提供方 | Provider ID | 内置模型 | -| ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedance | `seedance` | Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | -| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | -| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | -| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 2.3 Fast (`MiniMax-Hailuo-2.3-Fast`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | -| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | -| Sora | `sora` | 暂无内置模型列表。当前 registry 里保留了该 provider,但当前 adapter 尚不可用于生成。 | +| 提供方 | Provider ID | 内置模型 | +| ------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedance | `seedance` | Seedance 2.0 (`doubao-seedance-2-0-260128`)
Seedance 2.0 Fast (`doubao-seedance-2-0-fast-260128`)
Seedance 2.0 Mini (`doubao-seedance-2-0-mini-260615`)
Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | +| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | +| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | +| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | +| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | +| HappyHorse | `happyhorse` | HappyHorse 1.0 T2V (`happyhorse-1.0-t2v`) | +| Sora | `sora` | 暂无内置模型列表。当前 registry 里保留了该 provider,但当前 adapter 尚不可用于生成。 | ## TTS 模型与后端 @@ -74,13 +77,29 @@ description: 开源版 OpenMAIC 的内置模型与 provider 列表。 | -------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | | Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | +| Azure STT | `azure-asr` | 无模型选择器,使用 Azure Speech to Text。 | | Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | | 浏览器原生 ASR | `browser-native` | 无模型选择器,使用浏览器 Web Speech API。 | -## PDF 解析提供方 +## 文档解析提供方 + +| 提供方 | Provider ID | 能力 | +| ------------ | -------------- | ------------------------------------- | +| unpdf | `unpdf` | 文本、图片、元数据 | +| MinerU | `mineru` | 文本、图片、表格、公式、版面分析 | +| MinerU Cloud | `mineru-cloud` | 文本、图片、表格、公式、版面分析 | +| AliDocMind | `alidocmind` | 文本、图片、表格、公式、版面分析、OCR | + +## Web Search 提供方 + +Web Search provider 没有模型选择器。SearXNG 仅支持服务端托管配置;其他 provider 可按各自要求配置 API key 或 Base URL。 -| 提供方 | Provider ID | 能力 | -| ------------ | -------------- | -------------------------------- | -| unpdf | `unpdf` | 文本、图片、元数据 | -| MinerU | `mineru` | 文本、图片、表格、公式、版面分析 | -| MinerU Cloud | `mineru-cloud` | 文本、图片、表格、公式、版面分析 | +| 提供方 | Provider ID | +| ------------ | ----------- | +| Tavily | `tavily` | +| Bocha | `bocha` | +| Brave Search | `brave` | +| Baidu | `baidu` | +| MiniMax | `minimax` | +| Doubao | `doubao` | +| SearXNG | `searxng` | diff --git a/packages/docs/content/docs/voxcpm.zh-cn.mdx b/packages/docs/content/docs/voxcpm.zh-cn.mdx index 37c75560a6..d24165b6ac 100644 --- a/packages/docs/content/docs/voxcpm.zh-cn.mdx +++ b/packages/docs/content/docs/voxcpm.zh-cn.mdx @@ -50,7 +50,7 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -服务端默认值会作为新用户首次进入设置页时的初始值,用户依然可以本地覆盖。 +服务端配置会下发给用户;如果 provider 由服务端托管,客户端不能覆盖这些配置。 ## 3. 声音管理 @@ -78,4 +78,3 @@ OpenMAIC 在合成时根据每个 Agent 的人设动态生成 voice prompt。无 | 第一次克隆请求要等 ~30s | 后端冷启动,后续克隆会复用热运行时。 | | 音频说到一半就断 | 后端输出 token 数受限,提高 `--max-tokens` 或对应 VoxCPM 配置。 | | 401 / 403 | 给一个不需要 key 的后端配了 `TTS_VOXCPM_API_KEY`,留空即可。 | - From 18aa13096e620cf85f62c633d52dc6473acf196d Mon Sep 17 00:00:00 2001 From: tmt Date: Mon, 27 Jul 2026 14:27:55 +0800 Subject: [PATCH 2/4] docs: address Chinese documentation review --- Dockerfile | 10 ++++++++ docker-compose.yml | 11 ++++++--- .../docs/content/docs/configuration.zh-cn.mdx | 23 +++++++++++++++---- .../docs/content/docs/deployment.zh-cn.mdx | 21 +++++++++++++++++ .../content/docs/supported-models.zh-cn.mdx | 2 +- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 50804b5aca..c3f17ef4a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,8 +23,18 @@ FROM base AS builder ARG NEXT_PUBLIC_PERSISTENCE ARG NEXT_PUBLIC_PERSISTENCE_TOKEN +ARG NEXT_PUBLIC_MAIC_EDITOR_ENABLED +ARG NEXT_PUBLIC_PI_CHAT_ENABLED +ARG NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI +ARG NEXT_PUBLIC_ENABLE_VIDEO_EXPORT +ARG NEXT_PUBLIC_ENABLE_PPTX_IMPORT ENV NEXT_PUBLIC_PERSISTENCE=$NEXT_PUBLIC_PERSISTENCE ENV NEXT_PUBLIC_PERSISTENCE_TOKEN=$NEXT_PUBLIC_PERSISTENCE_TOKEN +ENV NEXT_PUBLIC_MAIC_EDITOR_ENABLED=$NEXT_PUBLIC_MAIC_EDITOR_ENABLED +ENV NEXT_PUBLIC_PI_CHAT_ENABLED=$NEXT_PUBLIC_PI_CHAT_ENABLED +ENV NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=$NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI +ENV NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=$NEXT_PUBLIC_ENABLE_VIDEO_EXPORT +ENV NEXT_PUBLIC_ENABLE_PPTX_IMPORT=$NEXT_PUBLIC_ENABLE_PPTX_IMPORT COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/packages ./packages diff --git a/docker-compose.yml b/docker-compose.yml index 32c36e033e..642f72f5ca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,11 +3,16 @@ services: build: context: . args: - # NEXT_PUBLIC_* values are compiled into the browser bundle. Leave both - # empty for today's browser-only persistence; the persistence quickstart - # in README supplies them on the compose command line. + # NEXT_PUBLIC_* values are compiled into the browser bundle. Leave them + # empty unless the corresponding client feature is explicitly enabled; + # persistence and other build-time flags can be supplied on the command line. - NEXT_PUBLIC_PERSISTENCE=${NEXT_PUBLIC_PERSISTENCE:-} - NEXT_PUBLIC_PERSISTENCE_TOKEN=${NEXT_PUBLIC_PERSISTENCE_TOKEN:-} + - NEXT_PUBLIC_MAIC_EDITOR_ENABLED=${NEXT_PUBLIC_MAIC_EDITOR_ENABLED:-} + - NEXT_PUBLIC_PI_CHAT_ENABLED=${NEXT_PUBLIC_PI_CHAT_ENABLED:-} + - NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=${NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI:-} + - NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=${NEXT_PUBLIC_ENABLE_VIDEO_EXPORT:-} + - NEXT_PUBLIC_ENABLE_PPTX_IMPORT=${NEXT_PUBLIC_ENABLE_PPTX_IMPORT:-} ports: - "3000:3000" env_file: diff --git a/packages/docs/content/docs/configuration.zh-cn.mdx b/packages/docs/content/docs/configuration.zh-cn.mdx index 451a7e153b..338c911244 100644 --- a/packages/docs/content/docs/configuration.zh-cn.mdx +++ b/packages/docs/content/docs/configuration.zh-cn.mdx @@ -5,7 +5,7 @@ description: LLM 提供方、媒体生成、文档解析、TTS、ASR、访问控 OpenMAIC 在服务器启动时读取环境变量。所有项都是可选的——按需启用。环境变量示例见仓库里的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。内置模型 ID 请见[支持模型](./supported-models.mdx)。 -除环境变量外,也可以使用项目根目录下的 `server-providers.yml` 配置服务端 provider。环境变量会逐字段覆盖 YAML 中的同名配置。 +除环境变量外,也可以使用项目根目录下的 `server-providers.yml` 配置代码中已注册的服务端 provider。环境变量会逐字段覆盖 YAML 中的同名配置;自定义 OpenAI 兼容 provider 只能在设置中添加,不能通过任意环境变量前缀或未知 YAML provider ID 注册。 ## LLM 提供方 @@ -49,6 +49,8 @@ AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai AZURE_OPENAI_MODELS=your-deployment-name ``` +如需连接其他 OpenAI 兼容的 LLM 服务,请在 **设置 → 模型提供方** 中添加自定义 provider,并选择对应的协议类型。 + ## 本地模型(Ollama 和 Lemonade) Ollama 和 Lemonade 不需要 API key;本地服务的 base URL 应写在服务端配置中,以通过 SSRF 校验: @@ -85,6 +87,8 @@ TTS_VOXCPM_BASE_URL=http://localhost:8000 管理员可以使用 `TTS__ENABLED=false` 在服务端强制关闭某个 TTS 提供方。VoxCPM2(自托管 TTS + 声音克隆)请见单独的 [VoxCPM2](./voxcpm.mdx) 章节。 +也可以在设置中添加自定义 OpenAI 兼容 TTS provider,填写 Base URL、模型和音色。这类自定义 provider 保存在客户端设置中,不通过任意 `TTS_*` 环境变量或 YAML provider ID 注册。 + ## ASR(语音转文字) ```bash @@ -106,6 +110,8 @@ ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 浏览器原生 ASR 不需要服务端配置。 +也可以在设置中添加自定义 OpenAI 兼容 ASR provider,填写 Base URL、模型和支持语言;该配置保存在客户端设置中。 + ## 图像生成提供方 图像生成提供方使用 `IMAGE__API_KEY`,可选 `IMAGE__BASE_URL`。支持的前缀包括: @@ -118,6 +124,8 @@ Lemonade 是本地服务,不需要 key: IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +ComfyUI Image 不需要 API key,默认连接 `http://localhost:8188`。在设置中填写 ComfyUI Base URL,并把以 API 格式导出的 workflow JSON 放入 OpenMAIC 的 `public/` 目录;文件名使用 `comfyui-*.json` 或包含 `workflow`,设置页会自动发现这些文件并将其作为可选 workflow。Docker 部署时还需要在构建镜像前加入 workflow,或把单个 workflow 文件挂载到容器的 `/app/public/` 目录。 + ## 视频生成提供方 视频生成提供方使用 `VIDEO__API_KEY`,可选 `VIDEO__BASE_URL`。支持的前缀包括: @@ -147,6 +155,8 @@ ALIDOCMIND_BASE_URL= # 可选覆盖 `unpdf` 内置于 OpenMAIC,可用于基础 PDF 解析。Office 文档、图片和需要 OCR、表格、公式或版面分析的材料,应选择兼容的 MinerU 或 AliDocMind provider。 +AliDocMind 的文档解析支持 PDF、DOCX、PPTX、XLSX,以及 PNG、JPG/JPEG、BMP、GIF。当前音视频材料仅支持通过 AliDocMind 解析:视频格式为 MP4、MOV、AVI、MKV、WMV,音频格式为 MP3、WAV、AAC;不支持 M4A。 + ## 联网搜索 配置 Tavily、Bocha、Brave、Baidu、SearXNG 或 MiniMax: @@ -158,8 +168,6 @@ TAVILY_BASE_URL= # 可选覆盖 BOCHA_API_KEY= BOCHA_BASE_URL= # 可选覆盖 -BRAVE_API_KEY= - BAIDU_API_KEY= BAIDU_BASE_URL=https://qianfan.baidubce.com # 可选覆盖 @@ -211,8 +219,13 @@ NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true # 显示视频导出入口 NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true + +# 显示实验性 PPTX 导入入口 +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true ``` +PPTX 导入目前仍是实验性入口,解析结果尚未完整接入课堂数据流。以上 `NEXT_PUBLIC_*` 变量都是构建时开关;Docker 部署还需要通过 build args 传入,不能只写在容器运行时环境变量中。 + ## 其他服务端选项 以下服务端选项也可以通过环境变量配置: @@ -235,7 +248,7 @@ LLM_THINKING_DISABLED=false ## 用 YAML 配置文件 -除了环境变量,你也可以把配置放在项目根目录下的 `server-providers.yml` 文件里。服务端启动时加载,结构与环境变量分类对应: +除了环境变量,你也可以把代码中已注册 provider 的配置放在项目根目录下的 `server-providers.yml` 文件里。服务端启动时加载,结构与环境变量分类对应: ```yaml title="server-providers.yml" providers: @@ -277,4 +290,4 @@ web-search: baseUrl: http://localhost:8080 ``` -环境变量会逐字段覆盖 YAML 中的同名 provider 配置。键名使用 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`alidocmind`、`seedream`、`seedance`、`tavily` 或 `searxng`。 +环境变量会逐字段覆盖 YAML 中的同名 provider 配置。键名必须使用代码中已注册的 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`alidocmind`、`seedream`、`seedance`、`tavily` 或 `searxng`;未知 ID 不能在这里注册为自定义 LLM provider。 diff --git a/packages/docs/content/docs/deployment.zh-cn.mdx b/packages/docs/content/docs/deployment.zh-cn.mdx index 5c9b0cc025..ff5d76d532 100644 --- a/packages/docs/content/docs/deployment.zh-cn.mdx +++ b/packages/docs/content/docs/deployment.zh-cn.mdx @@ -33,6 +33,27 @@ docker compose up --build 默认 Compose 部署会启动 OpenMAIC 应用,并挂载 `openmaic-data` 数据卷。其他 provider 和功能按需配置,详见[配置说明](./configuration.mdx)。 +`NEXT_PUBLIC_*` 功能开关会在 Docker 构建时注入,不能只写在运行时的 `.env.local` 中。例如启用视频导出和实验性 PPTX 导入: + +```bash +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ +docker compose --profile video-export up --build +``` + +其他客户端功能开关也可以用同样方式传入。若使用 `docker build`,请改用对应的 `--build-arg`。 + +如需使用服务端 provider 配置,把文件挂载到容器内的固定路径: + +```yaml +services: + openmaic: + volumes: + - ./server-providers.yml:/app/server-providers.yml:ro +``` + +Docker 容器中的 `localhost` 指向容器自身。若 Ollama、Lemonade、VoxCPM 或 ComfyUI 运行在宿主机上,请使用 `host.docker.internal`,例如 `http://host.docker.internal:11434/v1` 或 `http://host.docker.internal:8188`。Linux Docker 通常还需要为 `openmaic` 服务添加 `extra_hosts: ["host.docker.internal:host-gateway"]`。 + ## 自建虚拟机 主机需要 Node.js `20.9.0` 或更高版本,以及 pnpm `10.28.0`。用 `pnpm` 构建并启动: diff --git a/packages/docs/content/docs/supported-models.zh-cn.mdx b/packages/docs/content/docs/supported-models.zh-cn.mdx index f32b9cfeba..e4285c4702 100644 --- a/packages/docs/content/docs/supported-models.zh-cn.mdx +++ b/packages/docs/content/docs/supported-models.zh-cn.mdx @@ -3,7 +3,7 @@ title: 支持模型 description: 开源版 OpenMAIC 的内置模型与 provider 列表。 --- -本页列出开源版 OpenMAIC 随代码内置的 provider registry。你仍然可以在设置、环境变量或 `server-providers.yml` 中添加自定义 OpenAI 兼容 provider,或覆盖模型白名单。具体可用性还取决于 provider 账号、所在区域和服务端配置;托管实例也可能通过白名单隐藏部分内置模型。 +本页列出开源版 OpenMAIC 随代码内置的 provider registry。内置 provider 可以通过设置、环境变量或 `server-providers.yml` 配置;自定义 OpenAI 兼容 provider 请在设置中添加。具体可用性还取决于 provider 账号、所在区域和服务端配置;托管实例也可能通过白名单隐藏部分内置模型。 ## LLM 模型 From 40a6e4f24176d24396eba33f6efe45afe0129e09 Mon Sep 17 00:00:00 2001 From: tmt Date: Mon, 27 Jul 2026 15:29:59 +0800 Subject: [PATCH 3/4] docs: address localized documentation review --- app/page.tsx | 5 ++-- lib/config/feature-flags.ts | 5 ++++ .../docs/content/docs/configuration.ar.mdx | 23 +++++++++++++++ .../docs/content/docs/configuration.ja.mdx | 23 +++++++++++++++ packages/docs/content/docs/configuration.mdx | 23 +++++++++++++++ .../docs/content/docs/configuration.ru.mdx | 23 +++++++++++++++ .../docs/content/docs/configuration.zh-cn.mdx | 2 +- .../docs/content/docs/configuration.zh-tw.mdx | 23 +++++++++++++++ packages/docs/content/docs/deployment.ar.mdx | 25 ++++++++++++++++ packages/docs/content/docs/deployment.ja.mdx | 25 ++++++++++++++++ packages/docs/content/docs/deployment.mdx | 25 ++++++++++++++++ packages/docs/content/docs/deployment.ru.mdx | 25 ++++++++++++++++ .../docs/content/docs/deployment.zh-cn.mdx | 2 +- .../docs/content/docs/deployment.zh-tw.mdx | 25 ++++++++++++++++ .../docs/content/docs/getting-started.ar.mdx | 9 +++--- .../docs/content/docs/getting-started.ja.mdx | 9 +++--- .../docs/content/docs/getting-started.mdx | 13 ++++----- .../docs/content/docs/getting-started.ru.mdx | 11 ++++--- .../content/docs/getting-started.zh-tw.mdx | 9 +++--- .../docs/content/docs/supported-models.ar.mdx | 2 +- .../docs/content/docs/supported-models.ja.mdx | 2 +- .../docs/content/docs/supported-models.mdx | 2 +- .../docs/content/docs/supported-models.ru.mdx | 2 +- .../content/docs/supported-models.zh-tw.mdx | 2 +- packages/docs/content/docs/voxcpm.ar.mdx | 3 +- packages/docs/content/docs/voxcpm.ja.mdx | 3 +- packages/docs/content/docs/voxcpm.mdx | 3 +- packages/docs/content/docs/voxcpm.ru.mdx | 3 +- packages/docs/content/docs/voxcpm.zh-tw.mdx | 3 +- tests/config/feature-flags.test.ts | 29 +++++++++++++++++++ 30 files changed, 311 insertions(+), 48 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 4f5edd3569..94b83699ff 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -63,7 +63,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip import { useDraftCache } from '@/lib/hooks/use-draft-cache'; import { SpeechButton } from '@/components/audio/speech-button'; import { useImportClassroom } from '@/lib/import/use-import-classroom'; -import { shouldShowVocationalTestUi } from '@/lib/config/feature-flags'; +import { isPptxImportEnabled, shouldShowVocationalTestUi } from '@/lib/config/feature-flags'; import { useImportPptx } from '@/lib/import/use-import-pptx'; import { InteractiveModeButton } from '@/components/generation/interactive-mode-button'; @@ -76,8 +76,7 @@ const INTERACTIVE_MODE_STORAGE_KEY = 'interactiveModeEnabled'; // PPTX import is still scaffolding: `useImportPptx` has no `onImported` consumer // yet, so the flow only logs the parsed slides. Hide the entry point behind a // flag until it's wired end-to-end, so the UI doesn't expose a no-op button. -// Enable with NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true. -const PPTX_IMPORT_ENABLED = process.env.NEXT_PUBLIC_ENABLE_PPTX_IMPORT === 'true'; +const PPTX_IMPORT_ENABLED = isPptxImportEnabled(); interface FormState { courseMaterials: SelectedCourseMaterial[]; diff --git a/lib/config/feature-flags.ts b/lib/config/feature-flags.ts index 355212605c..193cca3894 100644 --- a/lib/config/feature-flags.ts +++ b/lib/config/feature-flags.ts @@ -61,3 +61,8 @@ export function shouldShowVocationalTestUi(): boolean { export function isVideoExportEnabled(): boolean { return readBoolean(process.env.NEXT_PUBLIC_ENABLE_VIDEO_EXPORT); } + +/** Experimental PPTX import entry point. Default OFF. */ +export function isPptxImportEnabled(): boolean { + return readBoolean(process.env.NEXT_PUBLIC_ENABLE_PPTX_IMPORT); +} diff --git a/packages/docs/content/docs/configuration.ar.mdx b/packages/docs/content/docs/configuration.ar.mdx index f5397d1f54..a24d65ed22 100644 --- a/packages/docs/content/docs/configuration.ar.mdx +++ b/packages/docs/content/docs/configuration.ar.mdx @@ -174,3 +174,26 @@ web-search: ``` تتجاوز متغيرات البيئة حقول YAML المطابقة حقلا بحقل. ترتبط المفاتيح بمعرّفات provider مثل `openai` أو `doubao-tts` أو `openai-whisper` أو `mineru` أو `tavily` أو `minimax`. + +## Providers إضافية وخيارات الخادم + +يمكن إضافة custom OpenAI-compatible LLM provider من Settings. لا يمكن تسجيله عبر prefixes عشوائية لمتغيرات البيئة أو IDs غير معروفة في `server-providers.yml`. وتُضاف custom TTS/ASR providers أيضًا من إعدادات العميل. + +يكتشف ComfyUI Image ملفات workflow من `public/` (مثل `comfyui-*.json` أو اسم يحتوي على `workflow`) ولا يحتاج إلى API key. عند تشغيل ComfyUI على المضيف مع Docker في الإنتاج، استخدم `host.docker.internal:8188` واضبط `ALLOW_LOCAL_NETWORKS=true`؛ وإلا سيرفض SSRF guard العنوان المحلي الذي يرسله العميل. + +يعتمد تحليل المواد على parser المختار، وقد يشمل النصوص وPDF ومستندات Office والصور وبعض صيغ الصوت والفيديو. يدعم AliDocMind صيغ PDF وDOCX وPPTX وXLSX، والصور PNG وJPG/JPEG وBMP وGIF، والوسائط MP4 وMOV وAVI وMKV وWMV وMP3 وWAV وAAC. + +تقبل feature flags القيمة `true` أو `1`، وتُعد القيم الأخرى معطلة. تُحقن متغيرات `NEXT_PUBLIC_*` وقت البناء؛ وفي Docker مررها كـ build args، بما في ذلك `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` و`NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`. + +يستخدم Azure OpenAI المتغير `AZURE_OPENAI_API_KEY` وresource endpoint في `AZURE_OPENAI_BASE_URL` وأسماء deployment في `AZURE_OPENAI_MODELS`. Ollama وLemonade providers محليان ولا يحتاجان إلى API key. تعتمد إعدادات توليد الصور/الفيديو وTTS/ASR المخصص وتحليل المستندات/الوسائط وSearXNG و`DEFAULT_MODEL`/`MODEL_ROUTES` على إعدادات provider في `.env.example`؛ SearXNG مُدار من الخادم وBrave لا يحتاج إلى key. + +خيارات خادم أخرى: + +```bash +PARALLEL_SCENE_CONCURRENCY=3 # القيمة 0 أو عدم الإعداد: توليد تسلسلي +ALLOW_LOCAL_NETWORKS=true # للنشر الذاتي/الشبكات الداخلية فقط +RENDER_SERVICE_URL=http://render-service:9000 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` diff --git a/packages/docs/content/docs/configuration.ja.mdx b/packages/docs/content/docs/configuration.ja.mdx index e811b4b7b9..f9046ad458 100644 --- a/packages/docs/content/docs/configuration.ja.mdx +++ b/packages/docs/content/docs/configuration.ja.mdx @@ -174,3 +174,26 @@ web-search: ``` 環境変数は対応する YAML フィールドをフィールド単位で上書きします。キーは `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`tavily`、`minimax` のような provider ID に対応します。 + +## 追加 provider とサーバーオプション + +カスタム OpenAI 互換 LLM provider は Settings から追加できます。任意の環境変数 prefix や未知の `server-providers.yml` ID から登録することはできません。カスタム TTS/ASR provider もクライアントの Settings に追加します。 + +ComfyUI Image は `public/` にある workflow(`comfyui-*.json`、または名前に `workflow` を含むファイル)を検出し、API key は不要です。Docker 本番環境でホストの ComfyUI (`host.docker.internal:8188`) に接続する場合は `ALLOW_LOCAL_NETWORKS=true` を設定してください。`comfyui-image` は server-managed provider ではないため、設定しないと SSRF 保護により拒否されます。 + +ドキュメント解析は parser に応じてテキスト、PDF、Office 文書、画像、一部の音声・動画形式をサポートします。AliDocMind は PDF、DOCX、PPTX、XLSX、PNG、JPG/JPEG、BMP、GIF、さらに MP4、MOV、AVI、MKV、WMV、MP3、WAV、AAC に対応します。 + +feature flag は `true` または `1` を受け付け、それ以外は無効です。`NEXT_PUBLIC_*` はビルド時の設定なので、Docker では `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` や `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT` などを build args で渡します。 + +Azure OpenAI は `AZURE_OPENAI_API_KEY`、リソース endpoint(`AZURE_OPENAI_BASE_URL`)、deployment name(`AZURE_OPENAI_MODELS`)を使用します。Ollama と Lemonade はローカル provider のため API key 不要です。画像/動画生成、カスタム TTS/ASR、ドキュメント/メディア解析、SearXNG、`DEFAULT_MODEL`/`MODEL_ROUTES` は `.env.example` の provider 別設定に従います。SearXNG は server-managed、Brave は keyless です。 + +その他のサーバーオプション: + +```bash +PARALLEL_SCENE_CONCURRENCY=3 # 0 または未設定:逐次生成 +ALLOW_LOCAL_NETWORKS=true # self-hosted/内部ネットワーク向け +RENDER_SERVICE_URL=http://render-service:9000 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` diff --git a/packages/docs/content/docs/configuration.mdx b/packages/docs/content/docs/configuration.mdx index 70a765a2f4..4e38eb8a46 100644 --- a/packages/docs/content/docs/configuration.mdx +++ b/packages/docs/content/docs/configuration.mdx @@ -175,3 +175,26 @@ web-search: ``` Environment variables override matching YAML fields field-by-field. Keys map to provider IDs such as `openai`, `doubao-tts`, `openai-whisper`, `mineru`, `tavily`, or `minimax`. + +## Additional providers and server options + +Custom OpenAI-compatible LLM providers can be added in Settings. They are not registered through arbitrary environment-variable prefixes or unknown `server-providers.yml` IDs. Custom OpenAI-compatible TTS and ASR providers are also client-side Settings entries. + +ComfyUI Image uses workflows discovered from `public/` (filenames such as `comfyui-*.json` or names containing `workflow`) and does not require an API key. For a host-side ComfyUI in production Docker, use `host.docker.internal:8188` and set `ALLOW_LOCAL_NETWORKS=true`; otherwise the SSRF guard rejects the client-supplied local URL. + +Document parsing supports text, PDF, Office documents, images, and some audio/video formats depending on the parser. AliDocMind supports PDF, DOCX, PPTX, XLSX; PNG, JPG/JPEG, BMP, GIF; and (for media) MP4, MOV, AVI, MKV, WMV, MP3, WAV, and AAC. + +Feature flags accept `true` or `1`; other values are off. `NEXT_PUBLIC_*` flags are build-time values. In Docker, pass them as build args, including `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` and `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`. + +Azure OpenAI uses `AZURE_OPENAI_API_KEY`, a resource endpoint in `AZURE_OPENAI_BASE_URL`, and deployment names in `AZURE_OPENAI_MODELS`. Ollama and Lemonade are local providers and do not need API keys. Image/video generation, custom TTS/ASR, document/media parsing, SearXNG, and `DEFAULT_MODEL`/`MODEL_ROUTES` use the same provider-specific settings described in `.env.example`; SearXNG is server-managed and Brave is keyless. + +Other server options: + +```bash +PARALLEL_SCENE_CONCURRENCY=3 # 0 or unset: serial generation +ALLOW_LOCAL_NETWORKS=true # self-hosted/internal deployments only +RENDER_SERVICE_URL=http://render-service:9000 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` diff --git a/packages/docs/content/docs/configuration.ru.mdx b/packages/docs/content/docs/configuration.ru.mdx index 691df1fcdb..7278dc437e 100644 --- a/packages/docs/content/docs/configuration.ru.mdx +++ b/packages/docs/content/docs/configuration.ru.mdx @@ -174,3 +174,26 @@ web-search: ``` Переменные окружения переопределяют совпадающие YAML fields по отдельным полям. Ключи соответствуют provider ID, например `openai`, `doubao-tts`, `openai-whisper`, `mineru`, `tavily` или `minimax`. + +## Дополнительные provider и параметры сервера + +Custom OpenAI-compatible LLM provider можно добавить в Settings. Произвольные prefixes переменных окружения и неизвестные ID в `server-providers.yml` для регистрации не поддерживаются. Custom OpenAI-compatible TTS и ASR provider также добавляются только в клиентских Settings. + +ComfyUI Image обнаруживает workflow в `public/` (например, `comfyui-*.json` или имя с `workflow`) и не требует API key. В production Docker для ComfyUI на хосте используйте `host.docker.internal:8188` и задайте `ALLOW_LOCAL_NETWORKS=true`; иначе SSRF guard отклонит переданный клиентом локальный URL. + +Разбор материалов зависит от parser и может включать текст, PDF, Office-документы, изображения и некоторые аудио/видео форматы. AliDocMind поддерживает PDF, DOCX, PPTX, XLSX; PNG, JPG/JPEG, BMP, GIF; а также MP4, MOV, AVI, MKV, WMV, MP3, WAV и AAC. + +Feature flags принимают `true` или `1`, остальные значения выключают функцию. `NEXT_PUBLIC_*` задаются во время сборки; в Docker передавайте их как build args, включая `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` и `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`. + +Azure OpenAI использует `AZURE_OPENAI_API_KEY`, resource endpoint в `AZURE_OPENAI_BASE_URL` и deployment names в `AZURE_OPENAI_MODELS`. Ollama и Lemonade — локальные provider без API key. Настройки генерации изображений/видео, custom TTS/ASR, разбора документов и media, SearXNG, а также `DEFAULT_MODEL`/`MODEL_ROUTES` описаны в `.env.example`; SearXNG управляется сервером, Brave не требует key. + +Другие параметры сервера: + +```bash +PARALLEL_SCENE_CONCURRENCY=3 # 0 или unset: последовательная генерация +ALLOW_LOCAL_NETWORKS=true # только self-hosted/внутренние сети +RENDER_SERVICE_URL=http://render-service:9000 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` diff --git a/packages/docs/content/docs/configuration.zh-cn.mdx b/packages/docs/content/docs/configuration.zh-cn.mdx index 338c911244..31bba03568 100644 --- a/packages/docs/content/docs/configuration.zh-cn.mdx +++ b/packages/docs/content/docs/configuration.zh-cn.mdx @@ -124,7 +124,7 @@ Lemonade 是本地服务,不需要 key: IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -ComfyUI Image 不需要 API key,默认连接 `http://localhost:8188`。在设置中填写 ComfyUI Base URL,并把以 API 格式导出的 workflow JSON 放入 OpenMAIC 的 `public/` 目录;文件名使用 `comfyui-*.json` 或包含 `workflow`,设置页会自动发现这些文件并将其作为可选 workflow。Docker 部署时还需要在构建镜像前加入 workflow,或把单个 workflow 文件挂载到容器的 `/app/public/` 目录。 +ComfyUI Image 不需要 API key,默认连接 `http://localhost:8188`。在设置中填写 ComfyUI Base URL,并把以 API 格式导出的 workflow JSON 放入 OpenMAIC 的 `public/` 目录;文件名使用 `comfyui-*.json` 或包含 `workflow`,设置页会自动发现这些文件并将其作为可选 workflow。Docker 部署时还需要在构建镜像前加入 workflow,或把单个 workflow 文件挂载到容器的 `/app/public/` 目录。由于 `comfyui-image` 不是服务端托管 provider,生产环境连接宿主机 ComfyUI 时还需要设置 `ALLOW_LOCAL_NETWORKS=true`。 ## 视频生成提供方 diff --git a/packages/docs/content/docs/configuration.zh-tw.mdx b/packages/docs/content/docs/configuration.zh-tw.mdx index 195921b6a6..727a1fd24d 100644 --- a/packages/docs/content/docs/configuration.zh-tw.mdx +++ b/packages/docs/content/docs/configuration.zh-tw.mdx @@ -174,3 +174,26 @@ web-search: ``` 環境變數會逐欄位覆蓋 YAML 中對應的 provider 設定。鍵名使用 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`tavily` 或 `minimax`。 + +## 其他 provider 與服務端選項 + +自訂 OpenAI 相容的 LLM provider 可在設定中新增,不能透過任意環境變數前綴或未知的 `server-providers.yml` ID 註冊。自訂 OpenAI 相容的 TTS 與 ASR provider 也只能在用戶端設定中新增。 + +ComfyUI Image 會從 `public/` 掃描 workflow(檔名可用 `comfyui-*.json` 或包含 `workflow`),不需要 API key。Docker 生產環境連接主機 ComfyUI 時,請使用 `host.docker.internal:8188` 並設定 `ALLOW_LOCAL_NETWORKS=true`,否則 SSRF 防護會拒絕用戶端提供的本機網址。 + +文件解析支援文字、PDF、Office 文件、圖片及部分音訊/影片格式,具體取決於解析器。AliDocMind 支援 PDF、DOCX、PPTX、XLSX;PNG、JPG/JPEG、BMP、GIF;媒體則支援 MP4、MOV、AVI、MKV、WMV、MP3、WAV、AAC。 + +功能開關接受 `true` 或 `1`,其他值視為關閉。`NEXT_PUBLIC_*` 是建置時設定;Docker 部署時要以 build args 傳入,包括 `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` 和 `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`。 + +Azure OpenAI 使用 `AZURE_OPENAI_API_KEY`、資源 endpoint(`AZURE_OPENAI_BASE_URL`)及 deployment name(`AZURE_OPENAI_MODELS`)。Ollama 與 Lemonade 是本機 provider,不需要 API key。圖片/影片生成、自訂 TTS/ASR、文件/媒體解析、SearXNG,以及 `DEFAULT_MODEL`/`MODEL_ROUTES` 均依 `.env.example` 的 provider 專用設定;SearXNG 只能由伺服器託管,Brave 不需要 key。 + +其他服務端選項: + +```bash +PARALLEL_SCENE_CONCURRENCY=3 # 0 或未設定:串行生成 +ALLOW_LOCAL_NETWORKS=true # 僅限自託管/內網部署 +RENDER_SERVICE_URL=http://render-service:9000 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` diff --git a/packages/docs/content/docs/deployment.ar.mdx b/packages/docs/content/docs/deployment.ar.mdx index a03f7f1f16..03173af1d6 100644 --- a/packages/docs/content/docs/deployment.ar.mdx +++ b/packages/docs/content/docs/deployment.ar.mdx @@ -23,6 +23,26 @@ docker run -p 3000:3000 \ openmaic ``` +يتم تضمين أعلام `NEXT_PUBLIC_*` في العميل أثناء بناء Docker. مررها كـ build args؛ ضبطها وقت تشغيل الحاوية فقط لا يكفي. + +```bash +docker build \ + --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ + --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ + -t openmaic . +``` + +يشغّل ملف Compose باسم `video-export` خدمة التصيير، ويجب تفعيل علم البناء المقابل حتى يظهر مدخل التصدير في التطبيق. + +عند استخدام إعداد provider من الخادم، اربط الملف إلى `/app/server-providers.yml`: + +```yaml +volumes: + - ./server-providers.yml:/app/server-providers.yml:ro +``` + +داخل الحاوية، يشير `localhost` إلى حاوية OpenMAIC نفسها. للوصول إلى Ollama أو Lemonade أو VoxCPM أو ComfyUI على المضيف، استخدم `host.docker.internal`، وعلى Linux أضف عادة `extra_hosts: ["host.docker.internal:host-gateway"]`. عند استخدام ComfyUI على المضيف عبر `host.docker.internal:8188`، اضبط `ALLOW_LOCAL_NETWORKS=true` لأن `comfyui-image` ليس provider مُدارا من الخادم، وإلا سيرفض production SSRF guard العنوان. + للإعدادات متعددة الحاويات (مع reverse proxy أو خدمات أخرى بجانبه)، استخدم `docker-compose`: ```yaml title="docker-compose.yml" @@ -56,3 +76,8 @@ pnpm start # يستمع على port 3000 افتراضيا للعروض المشتركة، اضبط `ACCESS_CODE` لحماية الموقع كله بكلمة مرور. راجع [الإعدادات](./configuration.mdx). +## Profiles اختيارية + +يشغّل Compose profile `server-persistence` تطبيق OpenMAIC مع PostgreSQL. اضبط `DATABASE_URL` و`PERSISTENCE_DEV_TOKEN` وقيم البناء `NEXT_PUBLIC_PERSISTENCE` و`NEXT_PUBLIC_PERSISTENCE_TOKEN`؛ إعداد dev token مناسب للشبكات المحلية أو الموثوقة فقط. يشغّل profile `video-export` خدمة التصيير وينشئ MP4، وبدونه يعود التصدير إلى project ZIP للتصيير المحلي. راجع `render-service/README.md` للمتطلبات. + +راجع [VoxCPM2](./voxcpm.mdx) لإعداد TTS ذاتي الاستضافة واستنساخ الصوت. diff --git a/packages/docs/content/docs/deployment.ja.mdx b/packages/docs/content/docs/deployment.ja.mdx index 777a1cdbaa..541f514816 100644 --- a/packages/docs/content/docs/deployment.ja.mdx +++ b/packages/docs/content/docs/deployment.ja.mdx @@ -23,6 +23,26 @@ docker run -p 3000:3000 \ openmaic ``` +`NEXT_PUBLIC_*` feature flag は Docker のビルド時にクライアントへコンパイルされます。build args として渡してください。コンテナ実行時だけ設定しても反映されません。例: + +```bash +docker build \ + --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ + --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ + -t openmaic . +``` + +Compose の `video-export` profile は render service を起動します。アプリに export の入口を表示するには対応する build flag も有効にしてください。 + +server-side provider 設定を使う場合は `/app/server-providers.yml` に mount します: + +```yaml +volumes: + - ./server-providers.yml:/app/server-providers.yml:ro +``` + +コンテナ内の `localhost` は OpenMAIC コンテナ自身を指します。ホスト上の Ollama、Lemonade、VoxCPM、ComfyUI へ接続する場合は `host.docker.internal` を使い、Linux では通常 `extra_hosts: ["host.docker.internal:host-gateway"]` も追加します。ホストの ComfyUI (`host.docker.internal:8188`) には `ALLOW_LOCAL_NETWORKS=true` が必要です。`comfyui-image` は server-managed provider ではないため、本番の SSRF 保護がこの URL を拒否します。 + リバースプロキシや他サービスを含むマルチコンテナ構成では `docker-compose` を使います。 ```yaml title="docker-compose.yml" @@ -56,3 +76,8 @@ TLS 終端には前段に nginx または Caddy を置いてください。ト 共有デモでは `ACCESS_CODE` を設定して、サイト全体をパスワードで保護できます。詳しくは[設定](./configuration.mdx)を参照してください。 +## オプション profile + +`server-persistence` Compose profile は OpenMAIC と PostgreSQL を起動します。`DATABASE_URL`、`PERSISTENCE_DEV_TOKEN`、ビルド時の `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN` を設定してください。dev token はローカルまたは信頼できるネットワーク向けです。`video-export` profile は render service を起動して MP4 を生成します。無効時はローカル render 用の project ZIP にフォールバックします。要件は `render-service/README.md` を参照してください。 + +セルフホスト TTS と音声クローンは [VoxCPM2](./voxcpm.mdx) を参照してください。 diff --git a/packages/docs/content/docs/deployment.mdx b/packages/docs/content/docs/deployment.mdx index bc199b8c6d..d1b02ab0c6 100644 --- a/packages/docs/content/docs/deployment.mdx +++ b/packages/docs/content/docs/deployment.mdx @@ -23,6 +23,26 @@ docker run -p 3000:3000 \ openmaic ``` +The `NEXT_PUBLIC_*` flags are compiled into the client during the Docker build. Pass them as build arguments; setting them only at container runtime has no effect. For example: + +```bash +docker build \ + --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ + --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ + -t openmaic . +``` + +The Compose `video-export` profile starts the render service; enable the corresponding build flag to show the export entry in the app. + +If you use server-side provider configuration, mount it at `/app/server-providers.yml`: + +```yaml +volumes: + - ./server-providers.yml:/app/server-providers.yml:ro +``` + +Inside a container, `localhost` refers to the OpenMAIC container. For Ollama, Lemonade, VoxCPM, or ComfyUI running on the host, use `host.docker.internal` (and on Linux add `extra_hosts: ["host.docker.internal:host-gateway"]`). For a host-side ComfyUI at `host.docker.internal:8188`, set `ALLOW_LOCAL_NETWORKS=true` because `comfyui-image` is not server-managed and production SSRF protection otherwise rejects the URL. + For multi-container setups (with a reverse proxy or other services alongside), use `docker-compose`: ```yaml title="docker-compose.yml" @@ -56,3 +76,8 @@ See [Configuration](./configuration.mdx) for the full list. At minimum you need For shared demos, set `ACCESS_CODE` to gate the whole site behind a password. See [Configuration → ACCESS_CODE](./configuration.mdx#access_code--site-wide-password). +## Optional profiles + +The `server-persistence` Compose profile runs OpenMAIC with PostgreSQL. Set `DATABASE_URL`, `PERSISTENCE_DEV_TOKEN`, and the build-time `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN` values; the dev-token setup is for local or trusted networks. The `video-export` profile starts the render service and produces MP4; without it, export falls back to a project ZIP for local rendering. See `render-service/README.md` for its requirements. + +For self-hosted TTS and voice cloning, see [VoxCPM2](./voxcpm.mdx). diff --git a/packages/docs/content/docs/deployment.ru.mdx b/packages/docs/content/docs/deployment.ru.mdx index 116fafa9fc..0d43734b53 100644 --- a/packages/docs/content/docs/deployment.ru.mdx +++ b/packages/docs/content/docs/deployment.ru.mdx @@ -23,6 +23,26 @@ docker run -p 3000:3000 \ openmaic ``` +Флаги `NEXT_PUBLIC_*` компилируются в клиент во время сборки Docker. Передавайте их как build args: настройка только во время запуска контейнера не действует. + +```bash +docker build \ + --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ + --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ + -t openmaic . +``` + +Профиль Compose `video-export` запускает render service; соответствующий build flag также нужен, чтобы пункт экспорта отображался в приложении. + +Конфигурацию server-side provider монтируйте в `/app/server-providers.yml`: + +```yaml +volumes: + - ./server-providers.yml:/app/server-providers.yml:ro +``` + +В контейнере `localhost` означает сам контейнер OpenMAIC. Для Ollama, Lemonade, VoxCPM или ComfyUI на хосте используйте `host.docker.internal`; в Linux обычно добавьте `extra_hosts: ["host.docker.internal:host-gateway"]`. Для ComfyUI на хосте по адресу `host.docker.internal:8188` задайте `ALLOW_LOCAL_NETWORKS=true`: `comfyui-image` не является server-managed provider, поэтому production SSRF guard иначе отклонит URL. + Для multi-container setups (например, с reverse proxy или другими сервисами рядом) используйте `docker-compose`: ```yaml title="docker-compose.yml" @@ -56,3 +76,8 @@ pnpm start # по умолчанию слушает port 3000 Для общих demo задайте `ACCESS_CODE`, чтобы закрыть весь сайт паролем. См. [Конфигурацию](./configuration.mdx). +## Необязательные профили + +Compose profile `server-persistence` запускает OpenMAIC и PostgreSQL. Задайте `DATABASE_URL`, `PERSISTENCE_DEV_TOKEN` и build-time значения `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN`; dev token предназначен для локальных или доверенных сетей. Profile `video-export` запускает render service и создаёт MP4, а без него экспорт возвращается к project ZIP для локального рендеринга. Требования см. в `render-service/README.md`. + +Self-hosted TTS и клонирование голоса описаны в [VoxCPM2](./voxcpm.mdx). diff --git a/packages/docs/content/docs/deployment.zh-cn.mdx b/packages/docs/content/docs/deployment.zh-cn.mdx index ff5d76d532..5af64927e6 100644 --- a/packages/docs/content/docs/deployment.zh-cn.mdx +++ b/packages/docs/content/docs/deployment.zh-cn.mdx @@ -52,7 +52,7 @@ services: - ./server-providers.yml:/app/server-providers.yml:ro ``` -Docker 容器中的 `localhost` 指向容器自身。若 Ollama、Lemonade、VoxCPM 或 ComfyUI 运行在宿主机上,请使用 `host.docker.internal`,例如 `http://host.docker.internal:11434/v1` 或 `http://host.docker.internal:8188`。Linux Docker 通常还需要为 `openmaic` 服务添加 `extra_hosts: ["host.docker.internal:host-gateway"]`。 +Docker 容器中的 `localhost` 指向容器自身。若 Ollama、Lemonade、VoxCPM 或 ComfyUI 运行在宿主机上,请使用 `host.docker.internal`,例如 `http://host.docker.internal:11434/v1` 或 `http://host.docker.internal:8188`。Linux Docker 通常还需要为 `openmaic` 服务添加 `extra_hosts: ["host.docker.internal:host-gateway"]`。其中 ComfyUI 目前不是服务端托管 provider,生产环境还要设置 `ALLOW_LOCAL_NETWORKS=true`,否则 SSRF 防护会拒绝该地址。 ## 自建虚拟机 diff --git a/packages/docs/content/docs/deployment.zh-tw.mdx b/packages/docs/content/docs/deployment.zh-tw.mdx index e3d2e9a53b..2d9bd8ebfe 100644 --- a/packages/docs/content/docs/deployment.zh-tw.mdx +++ b/packages/docs/content/docs/deployment.zh-tw.mdx @@ -23,6 +23,26 @@ docker run -p 3000:3000 \ openmaic ``` +`NEXT_PUBLIC_*` 功能開關會在 Docker 建置時編譯進用戶端,必須透過 build args 傳入,僅在容器執行時設定不會生效。例如: + +```bash +docker build \ + --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ + --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ + -t openmaic . +``` + +Compose 的 `video-export` profile 會啟動渲染服務;同時啟用對應的建置開關,應用程式才會顯示匯出入口。 + +若使用服務端 provider 設定,請掛載到 `/app/server-providers.yml`: + +```yaml +volumes: + - ./server-providers.yml:/app/server-providers.yml:ro +``` + +容器內的 `localhost` 指向 OpenMAIC 容器本身。若 Ollama、Lemonade、VoxCPM 或 ComfyUI 執行在主機上,請使用 `host.docker.internal`;Linux 通常還要加入 `extra_hosts: ["host.docker.internal:host-gateway"]`。主機 ComfyUI 使用 `host.docker.internal:8188` 時,請設定 `ALLOW_LOCAL_NETWORKS=true`,因為 `comfyui-image` 不是服務端託管 provider,否則生產環境的 SSRF 防護會拒絕該網址。 + 多容器部署(例如搭配反向代理或其他服務)可使用 `docker-compose`: ```yaml title="docker-compose.yml" @@ -56,3 +76,8 @@ pnpm start # 預設監聽 3000 連接埠 共享 demo 可以設定 `ACCESS_CODE`,讓整個站點先經過密碼驗證。請見[設定說明](./configuration.mdx)。 +## 可選 profile + +`server-persistence` Compose profile 會啟動 OpenMAIC 與 PostgreSQL。設定 `DATABASE_URL`、`PERSISTENCE_DEV_TOKEN`,以及建置時的 `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN`;dev token 僅適合本機或可信網路。`video-export` profile 會啟動渲染服務並輸出 MP4;未啟用時會退回下載專案 ZIP 供本機渲染。需求請見 `render-service/README.md`。 + +自託管 TTS 與聲音複製請見 [VoxCPM2](./voxcpm.mdx)。 diff --git a/packages/docs/content/docs/getting-started.ar.mdx b/packages/docs/content/docs/getting-started.ar.mdx index 923ea4f2e9..cb802ebf2d 100644 --- a/packages/docs/content/docs/getting-started.ar.mdx +++ b/packages/docs/content/docs/getting-started.ar.mdx @@ -7,8 +7,8 @@ OpenMAIC هو تطبيق Next.js يمكنك تشغيله على جهازك. تح ## المتطلبات -- **Node.js** 20 أو أحدث -- **pnpm** 10 أو أحدث (ثبّته عبر `npm install -g pnpm` عند الحاجة) +- **Node.js** 20.9.0 أو أحدث +- **pnpm** 10.28.0 (ثبّته عبر `npm install -g pnpm@10.28.0` عند الحاجة) - مفتاح API من موفر LLM واحد على الأقل — OpenAI أو Anthropic أو Google أو DeepSeek أو Zhipu أو MiniMax أو Qwen أو Doubao أو Groq أو SiliconFlow أو Ollama محلي ## التثبيت @@ -41,7 +41,7 @@ ANTHROPIC_API_KEY=sk-ant-... OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -راجع [الإعدادات](./configuration.mdx) للقائمة الكاملة من providers و TTS و ASR و feature flags. +راجع [الإعدادات](./configuration.mdx) لإعدادات providers وتوليد الصور/الفيديو وTTS وASR وتحليل المستندات والبحث على الويب والتحكم بالوصول وfeature flags. ## التشغيل @@ -51,7 +51,7 @@ OLLAMA_BASE_URL=http://localhost:11434/v1 pnpm dev ``` -افتح [http://localhost:3000](http://localhost:3000). سترى مولّد الصفوف في OpenMAIC. أدخل موضوعا أو PDF، اضغط Generate، وسيبني AI teacher صفا كاملا من عدة مشاهد. +افتح [http://localhost:3000](http://localhost:3000)، وأدخل موضوعا أو ارفع مادة تعليمية ثم اضغط Generate. سيبني AI teacher صفا كاملا من عدة مشاهد. تعتمد الصيغ المدعومة على parser المختار، وتشمل عادة PDF ومستندات Office وMarkdown/النص العادي والصور وبعض الصوت/الفيديو. ## بناء الإنتاج @@ -67,4 +67,3 @@ pnpm start - [اضبط providers و TTS و ACCESS_CODE →](./configuration.mdx) - [انشر على Vercel أو Docker →](./deployment.mdx) - [استكشف البنية وساهم على GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) - diff --git a/packages/docs/content/docs/getting-started.ja.mdx b/packages/docs/content/docs/getting-started.ja.mdx index 82fdc64509..6c219577fb 100644 --- a/packages/docs/content/docs/getting-started.ja.mdx +++ b/packages/docs/content/docs/getting-started.ja.mdx @@ -7,8 +7,8 @@ OpenMAIC は自分のマシンで実行できる Next.js アプリケーショ ## 前提条件 -- **Node.js** 20 以降 -- **pnpm** 10 以降(未インストールの場合は `npm install -g pnpm`) +- **Node.js** 20.9.0 以降 +- **pnpm** 10.28.0(未インストールの場合は `npm install -g pnpm@10.28.0`) - 少なくとも 1 つの LLM プロバイダーの API key —— OpenAI、Anthropic、Google、DeepSeek、Zhipu、MiniMax、Qwen、Doubao、Groq、SiliconFlow、またはローカル Ollama ## インストール @@ -41,7 +41,7 @@ ANTHROPIC_API_KEY=sk-ant-... OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -プロバイダー、TTS、ASR、feature flag の完全な設定一覧は[設定](./configuration.mdx)を参照してください。 +provider、画像/動画生成、TTS、ASR、ドキュメント解析、Web 検索、アクセス制御、feature flag の設定は[設定](./configuration.mdx)を参照してください。 ## 実行 @@ -51,7 +51,7 @@ OLLAMA_BASE_URL=http://localhost:11434/v1 pnpm dev ``` -[http://localhost:3000](http://localhost:3000) を開くと OpenMAIC のクラスルーム生成画面が表示されます。トピックまたは PDF を投入し、Generate をクリックすると、AI 教師が複数シーンからなるクラスルームを作成します。 +[http://localhost:3000](http://localhost:3000) を開き、トピックを入力するか学習資料をアップロードして Generate をクリックします。AI 教師が完全なマルチシーン授業を作成します。対応形式は選択した parser に依存し、通常は PDF、Office 文書、Markdown/プレーンテキスト、画像、一部の音声・動画を含みます。 ## 本番ビルド @@ -67,4 +67,3 @@ Vercel、Docker、または自分のサーバーにもデプロイできます - [プロバイダー、TTS、ACCESS_CODE を設定する →](./configuration.mdx) - [Vercel または Docker にデプロイする →](./deployment.mdx) - [GitHub でアーキテクチャを確認し、コントリビュートする](https://github.com/THU-MAIC/OpenMAIC#-contributing) - diff --git a/packages/docs/content/docs/getting-started.mdx b/packages/docs/content/docs/getting-started.mdx index 18f77f1878..c251465c17 100644 --- a/packages/docs/content/docs/getting-started.mdx +++ b/packages/docs/content/docs/getting-started.mdx @@ -7,9 +7,9 @@ OpenMAIC is a Next.js application you can run on your own machine. You need Node ## Prerequisites -- **Node.js** 20 or later -- **pnpm** 10 or later (install with `npm install -g pnpm` if needed) -- An API key from at least one LLM provider — OpenAI, Anthropic, Google, DeepSeek, Zhipu, MiniMax, Qwen, Doubao, Groq, SiliconFlow, or Ollama (local) +- **Node.js** 20.9.0 or later +- **pnpm** 10.28.0 (install with `npm install -g pnpm@10.28.0` if needed) +- At least one LLM provider. Cloud providers usually need an API key; local Ollama and Lemonade do not. ## Install @@ -21,7 +21,7 @@ cd OpenMAIC pnpm install ``` -The install step also builds the two workspace packages (`mathml2omml` and `pptxgenjs`). This takes a minute on first run. +The install step also builds the workspace packages required by the project and may take some time on the first run. ## Configure @@ -41,7 +41,7 @@ ANTHROPIC_API_KEY=sk-ant-... OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -See [Configuration](./configuration.mdx) for the full list of providers, TTS, ASR, and feature flags. +See [Configuration](./configuration.mdx) for provider, image/video generation, TTS, ASR, document parsing, web search, access control, and feature flag settings. ## Run @@ -51,7 +51,7 @@ Start the dev server: pnpm dev ``` -Open [http://localhost:3000](http://localhost:3000). You should see the OpenMAIC classroom generator. Drop a topic or PDF, click Generate, and watch an AI teacher build a full multi-scene classroom. +Open [http://localhost:3000](http://localhost:3000). Enter a topic or upload learning material, click Generate, and an AI teacher will build a complete multi-scene classroom. Supported formats depend on the selected parser and commonly include PDF, Office documents, Markdown/plain text, images, and some audio/video. ## Troubleshooting @@ -91,4 +91,3 @@ Or deploy to Vercel, Docker, or your own server — see [Deployment](./deploymen - [Configure providers, TTS, and ACCESS_CODE →](./configuration.mdx) - [Deploy to Vercel or Docker →](./deployment.mdx) - Explore the [architecture and contribute on GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) - diff --git a/packages/docs/content/docs/getting-started.ru.mdx b/packages/docs/content/docs/getting-started.ru.mdx index aa5fb66dcd..3795120681 100644 --- a/packages/docs/content/docs/getting-started.ru.mdx +++ b/packages/docs/content/docs/getting-started.ru.mdx @@ -7,9 +7,9 @@ OpenMAIC — это приложение Next.js, которое можно за ## Требования -- **Node.js** 20 или новее -- **pnpm** 10 или новее (при необходимости установите через `npm install -g pnpm`) -- API key как минимум одного LLM provider — OpenAI, Anthropic, Google, DeepSeek, Zhipu, MiniMax, Qwen, Doubao, Groq, SiliconFlow или локальный Ollama +- **Node.js** 20.9.0 или новее +- **pnpm** 10.28.0 (при необходимости установите через `npm install -g pnpm@10.28.0`) +- Как минимум один LLM provider. Облачным provider обычно нужен API key; локальным Ollama и Lemonade ключ не нужен. ## Установка @@ -41,7 +41,7 @@ ANTHROPIC_API_KEY=sk-ant-... OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -Полный список provider, TTS, ASR и feature flags смотрите в разделе [Конфигурация](./configuration.mdx). +Настройки provider, генерации изображений и видео, TTS, ASR, разбора документов, web search, контроля доступа и feature flags см. в разделе [Конфигурация](./configuration.mdx). ## Запуск @@ -51,7 +51,7 @@ OLLAMA_BASE_URL=http://localhost:11434/v1 pnpm dev ``` -Откройте [http://localhost:3000](http://localhost:3000). Вы увидите генератор classroom в OpenMAIC. Добавьте тему или PDF, нажмите Generate, и AI teacher соберет полноценный classroom из нескольких сцен. +Откройте [http://localhost:3000](http://localhost:3000), введите тему или загрузите учебные материалы и нажмите Generate. AI teacher соберёт полноценный classroom из нескольких сцен. Форматы зависят от выбранного parser и обычно включают PDF, Office-документы, Markdown/обычный текст, изображения и некоторые аудио/видео. ## Production build @@ -67,4 +67,3 @@ pnpm start - [Настроить provider, TTS и ACCESS_CODE →](./configuration.mdx) - [Развернуть на Vercel или Docker →](./deployment.mdx) - [Изучить архитектуру и внести вклад на GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) - diff --git a/packages/docs/content/docs/getting-started.zh-tw.mdx b/packages/docs/content/docs/getting-started.zh-tw.mdx index 6cb3f8d646..b1e1b286c0 100644 --- a/packages/docs/content/docs/getting-started.zh-tw.mdx +++ b/packages/docs/content/docs/getting-started.zh-tw.mdx @@ -7,8 +7,8 @@ OpenMAIC 是一個 Next.js 應用程式,可以在自己的機器上執行。 ## 前置條件 -- **Node.js** 20 或更高版本 -- **pnpm** 10 或更高版本(如果尚未安裝,先執行 `npm install -g pnpm`) +- **Node.js** 20.9.0 或更高版本 +- **pnpm** 10.28.0(如果尚未安裝,先執行 `npm install -g pnpm@10.28.0`) - 至少一個 LLM 供應商的 API key —— OpenAI、Anthropic、Google、DeepSeek、Zhipu、MiniMax、Qwen、Doubao、Groq、SiliconFlow,或本機 Ollama ## 安裝 @@ -41,7 +41,7 @@ ANTHROPIC_API_KEY=sk-ant-... OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -完整的 provider、TTS、ASR 和 feature flag 設定請見[設定說明](./configuration.mdx)。 +完整的 provider、圖片/影片生成、TTS、ASR、文件解析、網路搜尋、存取控制和 feature flag 設定請見[設定說明](./configuration.mdx)。 ## 執行 @@ -51,7 +51,7 @@ OLLAMA_BASE_URL=http://localhost:11434/v1 pnpm dev ``` -打開 [http://localhost:3000](http://localhost:3000),應該能看到 OpenMAIC 的課堂生成器。輸入一個主題或上傳 PDF,點選 Generate,AI 教師就會建立一場完整的多場景課堂。 +打開 [http://localhost:3000](http://localhost:3000),輸入主題或上傳學習材料後點選 Generate,AI 教師就會建立一場完整的多場景課堂。支援格式取決於所選解析器,通常包括 PDF、Office 文件、Markdown/純文字、圖片及部分音訊/影片。 ## 生產建置 @@ -67,4 +67,3 @@ pnpm start - [設定 provider、TTS、ACCESS_CODE →](./configuration.mdx) - [部署到 Vercel 或 Docker →](./deployment.mdx) - 想了解架構或貢獻程式碼,請前往 [GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) - diff --git a/packages/docs/content/docs/supported-models.ar.mdx b/packages/docs/content/docs/supported-models.ar.mdx index 07164f53be..06fc324ff8 100644 --- a/packages/docs/content/docs/supported-models.ar.mdx +++ b/packages/docs/content/docs/supported-models.ar.mdx @@ -3,7 +3,7 @@ title: النماذج المدعومة description: قوائم النماذج والموفرين المدمجة في إصدار OpenMAIC مفتوح المصدر. --- -تسرد هذه الصفحة provider registry المدمج في إصدار OpenMAIC مفتوح المصدر. يمكنك مع ذلك إضافة providers مخصصة متوافقة مع OpenAI أو تجاوز model allowlists من Settings أو متغيرات البيئة أو `server-providers.yml`. +تسرد هذه الصفحة provider registry المدمج في إصدار OpenMAIC مفتوح المصدر. يمكن إعداد providers المدمجة من Settings أو متغيرات البيئة أو `server-providers.yml`، بينما تُضاف providers المخصصة المتوافقة مع OpenAI من Settings. يعتمد التوفر أيضا على حساب provider والمنطقة وإعدادات الخادم. ## نماذج LLM diff --git a/packages/docs/content/docs/supported-models.ja.mdx b/packages/docs/content/docs/supported-models.ja.mdx index a77dbcb062..9a3dc0c5a4 100644 --- a/packages/docs/content/docs/supported-models.ja.mdx +++ b/packages/docs/content/docs/supported-models.ja.mdx @@ -3,7 +3,7 @@ title: 対応モデル description: オープンソース版 OpenMAIC の組み込みモデルと provider 一覧。 --- -このページでは、オープンソース版 OpenMAIC に組み込まれている provider registry を一覧します。Settings、環境変数、または `server-providers.yml` から、カスタムの OpenAI 互換 provider を追加したり、モデル許可リストを上書きしたりできます。 +このページでは、オープンソース版 OpenMAIC に組み込まれている provider registry を一覧します。組み込み provider は Settings、環境変数、または `server-providers.yml` で設定できます。カスタム OpenAI 互換 provider は Settings から追加します。利用可否は provider アカウント、地域、サーバー設定にも依存します。 ## LLM モデル diff --git a/packages/docs/content/docs/supported-models.mdx b/packages/docs/content/docs/supported-models.mdx index 6b349ef2dd..e263b07e33 100644 --- a/packages/docs/content/docs/supported-models.mdx +++ b/packages/docs/content/docs/supported-models.mdx @@ -3,7 +3,7 @@ title: Supported Models description: Built-in model and provider lists for the open-source OpenMAIC edition. --- -This page lists the built-in provider registry for the open-source OpenMAIC edition. You can still add custom OpenAI-compatible providers or override model allowlists in Settings, environment variables, or `server-providers.yml`. +This page lists the built-in provider registry for the open-source OpenMAIC edition. Built-in providers can be configured in Settings, environment variables, or `server-providers.yml`; add custom OpenAI-compatible providers in Settings. Availability also depends on provider accounts, region, and server configuration. ## LLM models diff --git a/packages/docs/content/docs/supported-models.ru.mdx b/packages/docs/content/docs/supported-models.ru.mdx index d26c859a1b..a266e00f98 100644 --- a/packages/docs/content/docs/supported-models.ru.mdx +++ b/packages/docs/content/docs/supported-models.ru.mdx @@ -3,7 +3,7 @@ title: Поддерживаемые модели description: Встроенные списки моделей и providers для open-source edition OpenMAIC. --- -На этой странице перечислен встроенный provider registry для open-source edition OpenMAIC. Вы по-прежнему можете добавлять custom OpenAI-compatible providers или переопределять model allowlists в Settings, переменных окружения или `server-providers.yml`. +На этой странице перечислен встроенный provider registry для open-source edition OpenMAIC. Встроенные provider настраиваются через Settings, переменные окружения или `server-providers.yml`; custom OpenAI-compatible provider добавляются в Settings. Доступность также зависит от аккаунта provider, региона и серверной конфигурации. ## LLM модели diff --git a/packages/docs/content/docs/supported-models.zh-tw.mdx b/packages/docs/content/docs/supported-models.zh-tw.mdx index 68eeca78a2..d6d416bfdf 100644 --- a/packages/docs/content/docs/supported-models.zh-tw.mdx +++ b/packages/docs/content/docs/supported-models.zh-tw.mdx @@ -3,7 +3,7 @@ title: 支援模型 description: 開源版 OpenMAIC 的內建模型與 provider 清單。 --- -本頁列出開源版 OpenMAIC 隨程式碼內建的 provider registry。你仍然可以在 Settings、環境變數或 `server-providers.yml` 中新增自訂 OpenAI 相容 provider,或覆蓋模型白名單。 +本頁列出開源版 OpenMAIC 隨程式碼內建的 provider registry。內建 provider 可在 Settings、環境變數或 `server-providers.yml` 中設定;自訂 OpenAI 相容 provider 請在 Settings 中新增。實際可用性也取決於 provider 帳戶、地區與伺服器設定。 ## LLM 模型 diff --git a/packages/docs/content/docs/voxcpm.ar.mdx b/packages/docs/content/docs/voxcpm.ar.mdx index c84f8651a7..182aabef51 100644 --- a/packages/docs/content/docs/voxcpm.ar.mdx +++ b/packages/docs/content/docs/voxcpm.ar.mdx @@ -50,7 +50,7 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -القيمة الافتراضية على الخادم تملأ Settings UI للمستخدمين الجدد. لا يزال بإمكان المستخدمين تجاوزها محليا. +القيمة الافتراضية على الخادم تملأ Settings UI للمستخدمين الجدد. عندما يكون provider مُدارا من الخادم، لا يمكن للعميل تجاوز هذه الإعدادات. ## 3. إدارة الأصوات @@ -78,4 +78,3 @@ TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 | أول clone request يتوقف نحو 30s | cold-start في backend. الطلبات التالية تعيد استخدام warm runtime. | | ينقطع الصوت في منتصف الجملة | حد output token في backend. ارفع `--max-tokens` أو ما يكافئه في VoxCPM config. | | 401 / 403 | ضبطت `TTS_VOXCPM_API_KEY` لـ backend لا يتوقعه. اتركه فارغا. | - diff --git a/packages/docs/content/docs/voxcpm.ja.mdx b/packages/docs/content/docs/voxcpm.ja.mdx index 0a05a04bd7..b76921674e 100644 --- a/packages/docs/content/docs/voxcpm.ja.mdx +++ b/packages/docs/content/docs/voxcpm.ja.mdx @@ -50,7 +50,7 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -サーバー側の既定値は、初回ユーザーの Settings UI を初期化します。ユーザーは引き続きローカルで上書きできます。 +サーバー側の既定値は、初回ユーザーの Settings UI を初期化します。provider がサーバー管理の場合、クライアントからこれらの設定を上書きできません。 ## 3. 音声管理 @@ -78,4 +78,3 @@ OpenMAIC は合成時に各 agent の persona から voice prompt を生成し | 初回の clone request が約 30 秒止まる | backend の cold-start です。以降の clone は warm runtime を再利用します。 | | 音声が文の途中で切れる | backend の出力 token limit が原因です。`--max-tokens` または VoxCPM config の相当項目を引き上げてください。 | | 401 / 403 | key を想定していない backend に `TTS_VOXCPM_API_KEY` を設定しています。空にしてください。 | - diff --git a/packages/docs/content/docs/voxcpm.mdx b/packages/docs/content/docs/voxcpm.mdx index 54164dd300..be39c83e80 100644 --- a/packages/docs/content/docs/voxcpm.mdx +++ b/packages/docs/content/docs/voxcpm.mdx @@ -50,7 +50,7 @@ Set the following in `.env.local` (or your YAML config). No API key is required. TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -The server-side default seeds the Settings UI for first-time users. Users can still override it locally. +The server-side default seeds the Settings UI for first-time users. When the provider is server-managed, clients cannot override these settings. ## 3. Voice management @@ -78,4 +78,3 @@ Upload a short reference audio clip (≤ 60 seconds, ≤ 10 MB) or record one in | First clone request hangs ~30s | Cold-start on the backend. Subsequent clones reuse the warm runtime. | | Audio cuts off mid-sentence | Output token limit on the backend. Raise `--max-tokens` or the equivalent in your VoxCPM config. | | 401 / 403 | You set `TTS_VOXCPM_API_KEY` for a backend that doesn't expect one. Leave it empty. | - diff --git a/packages/docs/content/docs/voxcpm.ru.mdx b/packages/docs/content/docs/voxcpm.ru.mdx index b7cc8c533e..7002cda158 100644 --- a/packages/docs/content/docs/voxcpm.ru.mdx +++ b/packages/docs/content/docs/voxcpm.ru.mdx @@ -50,7 +50,7 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -Серверное значение по умолчанию заполняет Settings UI для новых пользователей. Пользователи все еще могут переопределить его локально. +Серверное значение по умолчанию заполняет Settings UI для новых пользователей. Если provider управляется сервером, клиент не может переопределить эти настройки. ## 3. Управление голосами @@ -78,4 +78,3 @@ OpenMAIC генерирует voice prompt из persona каждого agent в | Первый clone request висит ~30s | Cold-start на backend. Последующие clone requests используют warm runtime. | | Audio обрывается посреди фразы | Лимит output tokens на backend. Увеличьте `--max-tokens` или соответствующий параметр в VoxCPM config. | | 401 / 403 | Вы задали `TTS_VOXCPM_API_KEY` для backend, который его не ожидает. Оставьте пустым. | - diff --git a/packages/docs/content/docs/voxcpm.zh-tw.mdx b/packages/docs/content/docs/voxcpm.zh-tw.mdx index 3b83236f2d..11d59e0571 100644 --- a/packages/docs/content/docs/voxcpm.zh-tw.mdx +++ b/packages/docs/content/docs/voxcpm.zh-tw.mdx @@ -50,7 +50,7 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -伺服器端預設值會作為新使用者首次進入 Settings UI 時的初始值。使用者仍可在本機覆蓋。 +伺服器端預設值會作為新使用者首次進入 Settings UI 時的初始值。若 provider 由伺服器託管,用戶端無法覆蓋這些設定。 ## 3. 聲音管理 @@ -78,4 +78,3 @@ OpenMAIC 會在合成時根據每個 agent 的人設動態生成 voice prompt。 | 第一次複製請求等待約 30 秒 | 後端冷啟動;後續複製會重用已暖機的 runtime。 | | 音訊說到一半就中斷 | 後端輸出 token 數受限,調高 `--max-tokens` 或 VoxCPM 的對應設定。 | | 401 / 403 | 為不需要 key 的後端設定了 `TTS_VOXCPM_API_KEY`,留空即可。 | - diff --git a/tests/config/feature-flags.test.ts b/tests/config/feature-flags.test.ts index 67f8207b55..879062e2c3 100644 --- a/tests/config/feature-flags.test.ts +++ b/tests/config/feature-flags.test.ts @@ -2,6 +2,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest'; import { isMaicEditorEnabled, isPiChatEnabled, + isPptxImportEnabled, isVideoExportEnabled, isVocationalTaskEngineEnabled, resolveVocationalActive, @@ -201,3 +202,31 @@ describe('isVideoExportEnabled', () => { expect(isVideoExportEnabled()).toBe(false); }); }); + +describe('isPptxImportEnabled', () => { + const flag = 'NEXT_PUBLIC_ENABLE_PPTX_IMPORT'; + let original: string | undefined; + + beforeEach(() => { + original = process.env[flag]; + }); + + afterEach(() => { + if (original === undefined) delete process.env[flag]; + else process.env[flag] = original; + }); + + it("returns true for 'true' and '1'", () => { + process.env[flag] = 'true'; + expect(isPptxImportEnabled()).toBe(true); + process.env[flag] = '1'; + expect(isPptxImportEnabled()).toBe(true); + }); + + it('returns false when unset or disabled', () => { + delete process.env[flag]; + expect(isPptxImportEnabled()).toBe(false); + process.env[flag] = 'false'; + expect(isPptxImportEnabled()).toBe(false); + }); +}); From 706db6d20bd85d6612719eeb50054d04067f5202 Mon Sep 17 00:00:00 2001 From: tmt Date: Tue, 28 Jul 2026 02:13:33 +0800 Subject: [PATCH 4/4] docs: fully synchronize localized guides --- .../docs/content/docs/configuration.ar.mdx | 262 ++++++++++------ .../docs/content/docs/configuration.ja.mdx | 206 +++++++++---- packages/docs/content/docs/configuration.mdx | 255 +++++++++++----- .../docs/content/docs/configuration.ru.mdx | 284 ++++++++++++------ .../docs/content/docs/configuration.zh-tw.mdx | 270 +++++++++++------ packages/docs/content/docs/deployment.ar.mdx | 111 ++++--- packages/docs/content/docs/deployment.ja.mdx | 107 ++++--- packages/docs/content/docs/deployment.mdx | 101 ++++--- packages/docs/content/docs/deployment.ru.mdx | 107 ++++--- .../docs/content/docs/deployment.zh-tw.mdx | 103 ++++--- .../docs/content/docs/getting-started.ar.mdx | 34 +-- .../docs/content/docs/getting-started.ja.mdx | 30 +- .../docs/content/docs/getting-started.mdx | 52 +--- .../docs/content/docs/getting-started.ru.mdx | 36 +-- .../content/docs/getting-started.zh-tw.mdx | 18 +- .../docs/content/docs/supported-models.ar.mdx | 97 +++--- .../docs/content/docs/supported-models.ja.mdx | 143 +++++---- .../docs/content/docs/supported-models.mdx | 49 ++- .../docs/content/docs/supported-models.ru.mdx | 147 +++++---- .../content/docs/supported-models.zh-tw.mdx | 95 +++--- packages/docs/content/docs/voxcpm.ar.mdx | 76 ++--- packages/docs/content/docs/voxcpm.ja.mdx | 70 ++--- packages/docs/content/docs/voxcpm.mdx | 60 ++-- packages/docs/content/docs/voxcpm.ru.mdx | 72 ++--- packages/docs/content/docs/voxcpm.zh-tw.mdx | 56 ++-- 25 files changed, 1773 insertions(+), 1068 deletions(-) diff --git a/packages/docs/content/docs/configuration.ar.mdx b/packages/docs/content/docs/configuration.ar.mdx index a24d65ed22..14b5257c9b 100644 --- a/packages/docs/content/docs/configuration.ar.mdx +++ b/packages/docs/content/docs/configuration.ar.mdx @@ -1,56 +1,70 @@ --- -title: الإعدادات -description: موفرو LLM و TTS و ASR والتحكم بالوصول و feature flags. +title: شرح الإعدادات +description: موفرو LLM، توليد الوسائط، تحليل المستندات، TTS، ASR، التحكم بالوصول و feature flags. --- -يقرأ OpenMAIC الإعدادات من متغيرات البيئة عند بدء الخادم. جميعها اختيارية — فعّل الموفرات والميزات التي تحتاجها فقط. للاطلاع على القائمة الكاملة راجع [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) في المستودع. لمعرّفات النماذج المدمجة، راجع [النماذج المدعومة](./supported-models.mdx). +يقرأ OpenMAIC متغيرات البيئة عند بدء تشغيل الخادم. جميع الإعدادات اختيارية — فعّل ما تحتاجه فقط. مثال متغيرات البيئة موجود في المستودع ضمن [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example). لمعرفات النماذج المدمجة، راجع [النماذج المدعومة](./supported-models.mdx). + +بجانب متغيرات البيئة، يمكنك أيضًا استخدام ملف `server-providers.yml` في جذر المشروع لتكوين موفري الخادم المسجلين في الكود. متغيرات البيئة تتجاوز حقول YAML المطابقة حقلًا بحقل. لا يمكن تسجيل موفري LLM متوافقين مع OpenAI مخصصين عبر بادئات متغيرات بيئة عشوائية أو معرفات YAML غير معروفة، بل فقط من خلال الإعدادات. ## موفرو LLM -يستخدم كل provider نفس شكل المتغيرات الثلاثة. مفتاح API فقط هو المطلوب؛ أما base URL وقائمة النماذج فاختياريان. +عادةً ما يستخدم موفرو السحابة ثلاثة متغيرات بيئة: مفتاح API، عنوان URL الأساسي، وقائمة النماذج. مفتاح API عادةً مطلوب، أما العنوان الأساسي وقائمة النماذج فاختياريان. Azure OpenAI يحتاج إلى تكوين نقطة نهاية المورد، بينما Ollama وLemonade لا يحتاجان إلى مفتاح API. ```bash OPENAI_API_KEY=sk-... -OPENAI_BASE_URL= # تجاوز اختياري لـ base URL -OPENAI_MODELS= # قائمة اختيارية بالنماذج المسموحة، مفصولة بفواصل +OPENAI_BASE_URL= # تجاوز اختياري للعنوان الأساسي +OPENAI_MODELS= # قائمة بيضاء اختيارية للنماذج (مفصولة بفواصل) +``` + +بادئات الموفرين المدعومة: + +| البادئة | الموفر | +| ------------------- | ---------------------------------- | +| `OPENAI_` | OpenAI | +| `AZURE_OPENAI_` | Azure OpenAI | +| `ANTHROPIC_` | Anthropic | +| `GOOGLE_` | Google Gemini | +| `DEEPSEEK_` | DeepSeek | +| `QWEN_` | Alibaba Qwen | +| `KIMI_` | Moonshot Kimi | +| `MINIMAX_` | MiniMax (يستخدم نقطة نهاية متوافقة مع Anthropic افتراضيًا) | +| `GLM_` | Zhipu GLM | +| `SILICONFLOW_` | SiliconFlow | +| `DOUBAO_` | Doubao (ByteDance) | +| `OPENROUTER_` | OpenRouter | +| `GROK_` | xAI Grok | +| `TENCENT_` | Tencent Hunyuan | +| `TENCENT_HUNYUAN_` | Tencent Hunyuan (اسم بديل) | +| `XIAOMI_` | Xiaomi MiMo | +| `MIMO_` | Xiaomi MiMo (اسم بديل) | +| `OLLAMA_` | Ollama (محلي) | +| `LEMONADE_` | Lemonade (محلي) | + +يستخدم Azure OpenAI اسم النشر كمعرف للنموذج: + +```bash +AZURE_OPENAI_API_KEY=... +AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai +AZURE_OPENAI_MODELS=your-deployment-name ``` -بادئات provider المدعومة: - -| البادئة | الموفر | -| ------------------ | ------------------------------------------------------- | -| `OPENAI_` | OpenAI | -| `ANTHROPIC_` | Anthropic | -| `GOOGLE_` | Google Gemini | -| `DEEPSEEK_` | DeepSeek | -| `QWEN_` | Alibaba Qwen | -| `KIMI_` | Moonshot Kimi | -| `MINIMAX_` | MiniMax (يستخدم endpoint متوافقا مع Anthropic افتراضيا) | -| `GLM_` | Zhipu GLM | -| `SILICONFLOW_` | SiliconFlow | -| `DOUBAO_` | Doubao (ByteDance) | -| `OPENROUTER_` | OpenRouter | -| `GROK_` | xAI Grok | -| `TENCENT_` | Tencent Hunyuan | -| `TENCENT_HUNYUAN_` | Tencent Hunyuan | -| `XIAOMI_` | Xiaomi MiMo | -| `MIMO_` | Xiaomi MiMo | -| `OLLAMA_` | Ollama (محلي) | -| `LEMONADE_` | Lemonade (محلي) | - -## النماذج المحلية عبر Ollama - -لا تحتاج إلى API key. اضبط base URL على الخادم حتى يتجاوز OpenMAIC فحص SSRF: +للاتصال بخدمات LLM متوافقة مع OpenAI أخرى، أضف موفرًا مخصصًا في **الإعدادات → موفرو النماذج** واختر نوع البروتوكول المناسب. + +## النماذج المحلية (Ollama و Lemonade) + +لا تحتاج Ollama وLemonade إلى مفتاح API؛ يجب كتابة عنوان URL الأساسي للخدمة المحلية في إعدادات الخادم لتجاوز فحص SSRF: ```bash OLLAMA_BASE_URL=http://localhost:11434/v1 +# LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -في production يتم حظر localhost URL القادم من العميل، لذلك يجب ضبطه على الخادم. +يمكن تحديد قائمة بيضاء للنماذج المتاحة باستخدام `OLLAMA_MODELS` أو `LEMONADE_MODELS`. ## موفرو TTS -يستخدم موفرو TTS على الخادم `TTS__API_KEY` و `TTS__BASE_URL` الاختياري. +يستخدم موفرو TTS على الخادم متغيرات `TTS__API_KEY`، مع خيار `TTS__BASE_URL` للتجاوز. ```bash # Doubao TTS (Volcengine Seed-TTS، MP3 أصلي) @@ -61,7 +75,7 @@ TTS_DOUBAO_BASE_URL= # تجاوز اختياري TTS_QWEN_API_KEY= TTS_QWEN_BASE_URL= # تجاوز اختياري -# أي endpoint متوافق مع OpenAI TTS +# أي نقطة نهاية متوافقة مع OpenAI TTS TTS_OPENAI_API_KEY= TTS_OPENAI_BASE_URL= @@ -69,9 +83,11 @@ TTS_OPENAI_BASE_URL= TTS_VOXCPM_BASE_URL=http://localhost:8000 ``` -بادئات TTS المدعومة هي `TTS_MINIMAX_` و `TTS_DOUBAO_` و `TTS_OPENAI_` و `TTS_AZURE_` و `TTS_GLM_` و `TTS_QWEN_` و `TTS_VOXCPM_` و `TTS_ELEVENLABS_`. يستخدم Lemonade TTS المحلي `TTS_LEMONADE_BASE_URL` ولا يحتاج إلى API key. +بادئات TTS المدعومة تشمل `TTS_OPENAI_`، `TTS_AZURE_`، `TTS_GLM_`، `TTS_QWEN_`، `TTS_MINIMAX_`، `TTS_DOUBAO_`، `TTS_ELEVENLABS_`، `TTS_VOXCPM_` و `TTS_LEMONADE_`. TTS المحلي لـ Lemonade وVoxCPM2 لا يحتاجان إلى مفتاح API. TTS المدمج في المتصفح لا يحتاج إلى إعدادات خادم. + +يمكن للمسؤولين تعطيل موفر TTS معين على الخادم باستخدام `TTS__ENABLED=false`. لمزيد من التفاصيل عن VoxCPM2 (TTS ذاتي الاستضافة واستنساخ الصوت)، راجع الفصل الخاص بـ [VoxCPM2](./voxcpm.mdx). -لمعرفة VoxCPM2 (TTS ذاتي الاستضافة مع استنساخ الصوت)، راجع صفحة [VoxCPM2](./voxcpm.mdx). +يمكن أيضًا إضافة provider مخصص متوافق مع OpenAI لـ TTS من الإعدادات عبر إدخال Base URL والنموذج والصوت. يُحفظ هذا provider المخصص في إعدادات العميل ولا يمكن تسجيله عبر متغيرات بيئة `TTS_*` عشوائية أو YAML provider ID. ## ASR (تحويل الكلام إلى نص) @@ -84,31 +100,66 @@ ASR_OPENAI_BASE_URL= # تجاوز اختياري ASR_QWEN_API_KEY= ASR_QWEN_BASE_URL= # تجاوز اختياري -# Lemonade ASR (محلي، لا يحتاج إلى key) +# Azure ASR +ASR_AZURE_API_KEY= +ASR_AZURE_BASE_URL=https://{region}.api.cognitive.microsoft.com + +# Lemonade ASR (محلي، لا يحتاج إلى مفتاح) ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +ASR المدمج في المتصفح لا يحتاج إلى إعدادات خادم. + +يمكن أيضًا إضافة موفري ASR مخصصين متوافقين مع OpenAI من الإعدادات، مع إدخال عنوان URL الأساسي، النموذج، واللغات المدعومة. تحفظ هذه الإعدادات في إعدادات العميل. + ## موفرو توليد الصور -يستخدم موفرو الصور `IMAGE__API_KEY` و `IMAGE__BASE_URL` الاختياري. يعمل Lemonade محليا ولا يحتاج إلى key: +يستخدم موفرو الصور متغيرات `IMAGE__API_KEY`، مع خيار `IMAGE__BASE_URL`. البادئات المدعومة تشمل: + +`IMAGE_OPENAI_`، `IMAGE_SEEDREAM_`، `IMAGE_QWEN_IMAGE_`، `IMAGE_NANO_BANANA_`، `IMAGE_MINIMAX_`، `IMAGE_GROK_` و `IMAGE_LEMONADE_`. + +Lemonade خدمة محلية ولا تحتاج إلى مفتاح API: ```bash IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -## ACCESS_CODE — كلمة مرور على مستوى الموقع +ComfyUI Image لا يحتاج إلى مفتاح API، ويتصل افتراضيًا بـ `http://localhost:8188`. أدخل عنوان URL الأساسي لـ ComfyUI في الإعدادات، وضع ملفات workflow بصيغة JSON المصدرة من ComfyUI API في مجلد `public/` الخاص بـ OpenMAIC؛ يجب أن يكون اسم الملف مطابقًا لـ `comfyui-*.json` أو يحتوي على `workflow`. ستكتشف صفحة الإعدادات هذه الملفات تلقائيًا وتعرضها كخيارات workflow. عند نشر Docker، يجب تضمين ملفات workflow أثناء بناء الصورة أو ربط ملف workflow واحد بمجلد `/app/public/` داخل الحاوية. لأن `comfyui-image` ليس موفرًا مستضافًا على الخادم، عند تشغيل ComfyUI على المضيف مع Docker في الإنتاج، يجب تعيين `ALLOW_LOCAL_NETWORKS=true` للسماح بالوصول المحلي، وإلا سيرفض حارس SSRF العنوان المحلي المرسل من العميل. + +## موفرو توليد الفيديو -لعمليات النشر المشتركة (عروض داخلية، صفوف)، اضبط access code حتى يكتب الزوار كلمة مرور قبل رؤية التطبيق: +يستخدم موفرو الفيديو متغيرات `VIDEO__API_KEY`، مع خيار `VIDEO__BASE_URL`. البادئات المدعومة تشمل: + +`VIDEO_SEEDANCE_`، `VIDEO_KLING_`، `VIDEO_VEO_`، `VIDEO_SORA_`، `VIDEO_MINIMAX_`، `VIDEO_GROK_` و `VIDEO_HAPPYHORSE_`. + +## تحليل المستندات والوسائط + +تعتمد صيغ المواد التعليمية على المحلل المختار. حاليًا يدعم النصوص، PDF، مستندات Office، الصور، وبعض صيغ الصوت والفيديو؛ تختلف الصيغ المدعومة والقدرات حسب الموفر. ```bash -ACCESS_CODE=your-secret-code +# MinerU ذاتي الاستضافة +PDF_MINERU_BASE_URL=http://localhost:8888 + +# MinerU backend اختياري ذاتي الاستضافة +PDF_MINERU_BACKEND=pipeline + +# MinerU Cloud +PDF_MINERU_CLOUD_API_KEY= +PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 + +# AliDocMind (يستخدم AccessKey من Alibaba Cloud بدلاً من مفتاح API منفصل) +ALIDOCMIND_ACCESS_KEY_ID= +ALIDOCMIND_ACCESS_KEY_SECRET= +ALIDOCMIND_BASE_URL= # تجاوز اختياري ``` -يُطلب من الزائر إدخاله مرة واحدة، ثم يُحفظ في HTTP-only cookie. اتركه فارغا لتعطيله. +`unpdf` مدمج في OpenMAIC ويستخدم لتحليل PDF الأساسي. لتحليل مستندات Office، الصور، أو المواد التي تحتاج إلى OCR، جداول، معادلات أو تحليل تخطيط، يجب اختيار موفر MinerU أو AliDocMind المتوافق. + +يدعم AliDocMind تحليل PDF، DOCX، PPTX، XLSX، بالإضافة إلى PNG، JPG/JPEG، BMP، GIF. حاليًا، يدعم تحليل الوسائط الصوتية والفيديو فقط عبر AliDocMind: صيغ الفيديو MP4، MOV، AVI، MKV، WMV، وصيغ الصوت MP3، WAV، AAC؛ لا يدعم M4A. -## بحث الويب +## البحث عبر الإنترنت -اضبط Tavily أو Bocha أو MiniMax: +اضبط موفري البحث Tavily، Bocha، Brave، Baidu، SearXNG أو MiniMax: ```bash TAVILY_API_KEY= @@ -117,30 +168,87 @@ TAVILY_BASE_URL= # تجاوز اختياري BOCHA_API_KEY= BOCHA_BASE_URL= # تجاوز اختياري +BAIDU_API_KEY= +BAIDU_BASE_URL=https://qianfan.baidubce.com # تجاوز اختياري + +# SearXNG ذاتي الاستضافة، لا يحتاج إلى مفتاح API +SEARXNG_BASE_URL= + WEB_SEARCH_MINIMAX_API_KEY= WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # تجاوز اختياري ``` -تعرض الواجهة الأمامية مفتاح تبديل لتفعيل البحث لكل عملية generation. +Brave وSearXNG لا يحتاجان إلى مفتاح API؛ يمكن للواجهة الأمامية اختيار تفعيل البحث في كل عملية توليد. بحث Grok متوفر عبر أدوات البحث في Grok LLM، وليس موفر بحث مستقل. -## موفرو تحليل PDF +## ACCESS_CODE — كلمة مرور على مستوى الموقع -لملفات PDF ذات التخطيطات المعقدة أو الرياضيات أو الجداول، اضبط parser على الخادم: +للنشر المشترك (عروض داخلية، صفوف)، يمكن تعيين رمز وصول ليطلب من الزوار إدخال كلمة مرور قبل رؤية التطبيق: ```bash -# MinerU self-hosted -PDF_MINERU_BASE_URL=http://localhost:8888 +ACCESS_CODE=your-secret-code +``` -# MinerU Cloud -PDF_MINERU_CLOUD_API_KEY= -PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 +يُطلب من الزائر إدخاله مرة واحدة فقط، ويحفظ في cookie من نوع HTTP-only. اتركه فارغًا لتعطيله. + +## النموذج الافتراضي ومسارات النماذج + +عندما لا يرسل العميل نموذجًا، يستخدم API الخادم النموذج الافتراضي المحدد بـ `DEFAULT_MODEL`. صيغة النموذج هي `provider:model-id`، مثل: + +```bash +DEFAULT_MODEL=openai:gpt-5.5 ``` -من دون parser على الخادم، يعود OpenMAIC إلى `unpdf`. +يمكن استخدام `MODEL_ROUTES` لتحديد نماذج مختلفة لمراحل توليد مختلفة؛ المراحل غير المحددة تستخدم النموذج المرسل من العميل أو `DEFAULT_MODEL`. هو كائن JSON، المفاتيح هي أسماء المراحل، والقيم إما سلسلة نموذج أو كائن يحتوي على `model` و `thinking`. قائمة المراحل الكاملة والأمثلة موجودة في [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example). + +## feature flags (مفاتيح الميزات) + +تُعتبر القيم `true` أو `1` مفعلة، وأي قيمة أخرى معطلة. تُحقن متغيرات `NEXT_PUBLIC_*` في وقت البناء للعميل، ويجب إعادة البناء بعد تعديلها: + +```bash +# محرر MAIC (وضع Pro) +NEXT_PUBLIC_MAIC_EDITOR_ENABLED=true + +# وقت تشغيل محادثة Pi +NEXT_PUBLIC_PI_CHAT_ENABLED=true + +# محرك مهام التعليم المهني (مفتاح خادم) +OPENMAIC_ENABLE_VOCATIONAL=true + +# عرض مفتاح تجربة التعليم المهني +NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true + +# عرض مدخل تصدير الفيديو +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true + +# عرض مدخل استيراد PPTX التجريبي +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true +``` + +استيراد PPTX لا يزال تجريبيًا، والنتائج لم تُدمج بالكامل في تدفق بيانات الصف. جميع متغيرات `NEXT_PUBLIC_*` هي مفاتيح بناء؛ عند نشر Docker، يجب تمريرها كـ build args، لا يمكن فقط تعيينها في بيئة الحاوية. + +## خيارات خادم أخرى + +يمكن تكوين الخيارات التالية عبر متغيرات البيئة: + +```bash +# توليد متوازي لمحتوى المشاهد؛ 0 أو عدم التعيين يعني توليد تسلسلي +PARALLEL_SCENE_CONCURRENCY=3 + +# السماح بالوصول إلى localhost والشبكات المحلية؛ فقط للنشر الذاتي/الشبكات الداخلية +ALLOW_LOCAL_NETWORKS=true + +# خدمة تصيير MP4 اختيارية +RENDER_SERVICE_URL=http://render-service:9000 + +# إعدادات السجلات والتفكير +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` ## استخدام ملف إعداد YAML -بدلا من env vars، يمكنك وضع الإعدادات في `server-providers.yml` في جذر المشروع. يتم تحميل الملف عند بدء الخادم. الأقسام تطابق فئات env vars: +بدلاً من متغيرات البيئة، يمكنك وضع إعدادات موفري الخادم المسجلين في الكود داخل ملف `server-providers.yml` في جذر المشروع. يُحمّل الملف عند بدء الخادم، والبنية تطابق تصنيفات متغيرات البيئة: ```yaml title="server-providers.yml" providers: @@ -148,8 +256,7 @@ providers: apiKey: sk-... baseUrl: https://api.openai.com/v1 models: - - gpt-4o - - gpt-4o-mini + - gpt-5.5 anthropic: apiKey: sk-ant-... @@ -164,36 +271,23 @@ asr: pdf: mineru: baseUrl: http://localhost:8888 + alidocmind: + accessKeyId: your-access-key-id + accessKeySecret: your-access-key-secret + +image: + seedream: + apiKey: ... + +video: + seedance: + apiKey: ... web-search: tavily: apiKey: tvly-... - minimax: - apiKey: sk-... - baseUrl: https://api.minimaxi.com + searxng: + baseUrl: http://localhost:8080 ``` -تتجاوز متغيرات البيئة حقول YAML المطابقة حقلا بحقل. ترتبط المفاتيح بمعرّفات provider مثل `openai` أو `doubao-tts` أو `openai-whisper` أو `mineru` أو `tavily` أو `minimax`. - -## Providers إضافية وخيارات الخادم - -يمكن إضافة custom OpenAI-compatible LLM provider من Settings. لا يمكن تسجيله عبر prefixes عشوائية لمتغيرات البيئة أو IDs غير معروفة في `server-providers.yml`. وتُضاف custom TTS/ASR providers أيضًا من إعدادات العميل. - -يكتشف ComfyUI Image ملفات workflow من `public/` (مثل `comfyui-*.json` أو اسم يحتوي على `workflow`) ولا يحتاج إلى API key. عند تشغيل ComfyUI على المضيف مع Docker في الإنتاج، استخدم `host.docker.internal:8188` واضبط `ALLOW_LOCAL_NETWORKS=true`؛ وإلا سيرفض SSRF guard العنوان المحلي الذي يرسله العميل. - -يعتمد تحليل المواد على parser المختار، وقد يشمل النصوص وPDF ومستندات Office والصور وبعض صيغ الصوت والفيديو. يدعم AliDocMind صيغ PDF وDOCX وPPTX وXLSX، والصور PNG وJPG/JPEG وBMP وGIF، والوسائط MP4 وMOV وAVI وMKV وWMV وMP3 وWAV وAAC. - -تقبل feature flags القيمة `true` أو `1`، وتُعد القيم الأخرى معطلة. تُحقن متغيرات `NEXT_PUBLIC_*` وقت البناء؛ وفي Docker مررها كـ build args، بما في ذلك `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` و`NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`. - -يستخدم Azure OpenAI المتغير `AZURE_OPENAI_API_KEY` وresource endpoint في `AZURE_OPENAI_BASE_URL` وأسماء deployment في `AZURE_OPENAI_MODELS`. Ollama وLemonade providers محليان ولا يحتاجان إلى API key. تعتمد إعدادات توليد الصور/الفيديو وTTS/ASR المخصص وتحليل المستندات/الوسائط وSearXNG و`DEFAULT_MODEL`/`MODEL_ROUTES` على إعدادات provider في `.env.example`؛ SearXNG مُدار من الخادم وBrave لا يحتاج إلى key. - -خيارات خادم أخرى: - -```bash -PARALLEL_SCENE_CONCURRENCY=3 # القيمة 0 أو عدم الإعداد: توليد تسلسلي -ALLOW_LOCAL_NETWORKS=true # للنشر الذاتي/الشبكات الداخلية فقط -RENDER_SERVICE_URL=http://render-service:9000 -LOG_LEVEL=info -LOG_FORMAT=pretty -LLM_THINKING_DISABLED=false -``` +تتجاوز متغيرات البيئة حقول YAML المطابقة حقلًا بحقل. يجب أن تستخدم المفاتيح معرفات الموفرين المسجلين في الكود مثل `openai`، `doubao-tts`، `openai-whisper`، `mineru`، `alidocmind`، `seedream`، `seedance`، `tavily` أو `searxng`. لا يمكن تسجيل معرفات غير معروفة هنا كموفري LLM مخصصين. diff --git a/packages/docs/content/docs/configuration.ja.mdx b/packages/docs/content/docs/configuration.ja.mdx index f9046ad458..52ca8f3a26 100644 --- a/packages/docs/content/docs/configuration.ja.mdx +++ b/packages/docs/content/docs/configuration.ja.mdx @@ -1,13 +1,15 @@ --- title: 設定 -description: LLM プロバイダー、TTS、ASR、アクセス制御、feature flag。 +description: LLM プロバイダー、メディア生成、ドキュメント解析、TTS、ASR、アクセス制御、機能フラグ。 --- -OpenMAIC はサーバー起動時に環境変数を読み込みます。すべて任意項目なので、必要なプロバイダーと機能だけを有効にしてください。完全な一覧はリポジトリの [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) を参照してください。組み込みモデル ID は[対応モデル](./supported-models.mdx)にあります。 +OpenMAIC はサーバー起動時に環境変数を読み込みます。すべて任意項目なので、必要に応じて有効化してください。環境変数の例はリポジトリの [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) を参照してください。組み込みモデル ID は[対応モデル](./supported-models.mdx)にあります。 + +環境変数のほかに、プロジェクトルートの `server-providers.yml` にコード内で登録済みのサーバー側 provider の設定を書くこともできます。環境変数は YAML の同名設定をフィールド単位で上書きします。カスタム OpenAI 互換 provider は設定画面から追加可能で、任意の環境変数 prefix や未知の YAML provider ID からは登録できません。 ## LLM プロバイダー -各 provider は同じ 3 つの変数を使います。必須なのは API key だけで、base URL とモデル一覧は任意です。 +クラウドプロバイダーは通常、API key、base URL、モデル一覧の3つの環境変数を使います。API key は必須の場合が多く、base URL とモデル一覧は任意です。Azure OpenAI はリソース endpoint の設定が必要で、Ollama と Lemonade は API key 不要です。 ```bash OPENAI_API_KEY=sk-... @@ -20,6 +22,7 @@ OPENAI_MODELS= # 任意の許可モデル一覧(カンマ区 | Prefix | プロバイダー | | ------------------ | ------------------------------------------------ | | `OPENAI_` | OpenAI | +| `AZURE_OPENAI_` | Azure OpenAI | | `ANTHROPIC_` | Anthropic | | `GOOGLE_` | Google Gemini | | `DEEPSEEK_` | DeepSeek | @@ -32,21 +35,32 @@ OPENAI_MODELS= # 任意の許可モデル一覧(カンマ区 | `OPENROUTER_` | OpenRouter | | `GROK_` | xAI Grok | | `TENCENT_` | Tencent Hunyuan | -| `TENCENT_HUNYUAN_` | Tencent Hunyuan | +| `TENCENT_HUNYUAN_` | Tencent Hunyuan(別名) | | `XIAOMI_` | Xiaomi MiMo | -| `MIMO_` | Xiaomi MiMo | +| `MIMO_` | Xiaomi MiMo(別名) | | `OLLAMA_` | Ollama(ローカル) | | `LEMONADE_` | Lemonade(ローカル) | -## Ollama によるローカルモデル +Azure OpenAI は deployment name をモデル ID として使います: + +```bash +AZURE_OPENAI_API_KEY=... +AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai +AZURE_OPENAI_MODELS=your-deployment-name +``` + +他の OpenAI 互換 LLM サービスに接続する場合は、**設定 → モデルプロバイダー** からカスタム provider を追加し、対応するプロトコルタイプを選択してください。 -API key は不要です。OpenMAIC の SSRF チェックを回避できるよう、base URL はサーバー側に設定します。 +## ローカルモデル(Ollama と Lemonade) + +Ollama と Lemonade は API key 不要です。ローカルサービスの base URL はサーバー側設定に書き、SSRF チェックを通過させます。 ```bash OLLAMA_BASE_URL=http://localhost:11434/v1 +# LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -本番環境ではクライアントから渡された localhost URL はブロックされるため、必ずサーバー側で設定してください。 +利用可能モデルを制限したい場合は、`OLLAMA_MODELS` または `LEMONADE_MODELS` でホワイトリストを指定できます。 ## TTS プロバイダー @@ -69,9 +83,11 @@ TTS_OPENAI_BASE_URL= TTS_VOXCPM_BASE_URL=http://localhost:8000 ``` -対応している TTS prefix は `TTS_MINIMAX_`、`TTS_DOUBAO_`、`TTS_OPENAI_`、`TTS_AZURE_`、`TTS_GLM_`、`TTS_QWEN_`、`TTS_VOXCPM_`、`TTS_ELEVENLABS_` です。ローカル Lemonade TTS は `TTS_LEMONADE_BASE_URL` を設定します。API key は不要です。 +対応している TTS prefix は `TTS_OPENAI_`、`TTS_AZURE_`、`TTS_GLM_`、`TTS_QWEN_`、`TTS_MINIMAX_`、`TTS_DOUBAO_`、`TTS_ELEVENLABS_`、`TTS_VOXCPM_`、`TTS_LEMONADE_` です。ローカル Lemonade TTS と VoxCPM2 は API key 不要です。ブラウザのネイティブ TTS はサーバー設定不要です。 + +管理者は `TTS__ENABLED=false` で特定の TTS プロバイダーをサーバー側で強制無効化できます。VoxCPM2(セルフホスト TTS+音声クローン)については専用の [VoxCPM2](./voxcpm.mdx) ページを参照してください。 -VoxCPM2(セルフホスト TTS と音声クローン)については専用の [VoxCPM2](./voxcpm.mdx) ページを参照してください。 +カスタム OpenAI 互換 TTS provider は設定画面から追加可能で、Base URL、モデル、音色を指定します。これらはクライアント設定に保存され、任意の `TTS_*` 環境変数や YAML provider ID では登録されません。 ## ASR(音声認識) @@ -84,31 +100,66 @@ ASR_OPENAI_BASE_URL= # 任意の上書き ASR_QWEN_API_KEY= ASR_QWEN_BASE_URL= # 任意の上書き -# Lemonade ASR(ローカル、key は不要) +# Azure ASR +ASR_AZURE_API_KEY= +ASR_AZURE_BASE_URL=https://{region}.api.cognitive.microsoft.com + +# Lemonade ASR(ローカル、key 不要) ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +ブラウザのネイティブ ASR はサーバー設定不要です。 + +カスタム OpenAI 互換 ASR provider も設定画面から追加可能で、Base URL、モデル、対応言語を指定します。これらはクライアント設定に保存されます。 + ## 画像生成プロバイダー -画像生成プロバイダーは `IMAGE__API_KEY` と任意の `IMAGE__BASE_URL` を使います。Lemonade はローカルで動作し、key は不要です。 +画像生成プロバイダーは `IMAGE__API_KEY` と任意の `IMAGE__BASE_URL` を使います。対応 prefix は以下の通りです: + +`IMAGE_OPENAI_`、`IMAGE_SEEDREAM_`、`IMAGE_QWEN_IMAGE_`、`IMAGE_NANO_BANANA_`、`IMAGE_MINIMAX_`、`IMAGE_GROK_`、`IMAGE_LEMONADE_` + +Lemonade はローカルサービスで API key 不要です: ```bash IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -## ACCESS_CODE — サイト全体のパスワード +ComfyUI Image は API key 不要で、デフォルトで `http://localhost:8188` に接続します。設定画面で ComfyUI Base URL を指定し、OpenMAIC の `public/` ディレクトリに API 形式でエクスポートした workflow JSON(`comfyui-*.json` またはファイル名に `workflow` を含む)を置くと自動検出され、選択可能になります。Docker 本番環境ではビルド前に workflow を追加するか、単一の workflow ファイルをコンテナの `/app/public/` にマウントしてください。`comfyui-image` はサーバー管理 provider ではないため、本番環境でホストの ComfyUI に接続する場合は `ALLOW_LOCAL_NETWORKS=true` を設定してください。 + +## 動画生成プロバイダー + +動画生成プロバイダーは `VIDEO__API_KEY` と任意の `VIDEO__BASE_URL` を使います。対応 prefix は: -共有デプロイ(社内デモ、授業など)では、アクセスコードを設定して、訪問者にアプリ表示前のパスワード入力を求められます。 +`VIDEO_SEEDANCE_`、`VIDEO_KLING_`、`VIDEO_VEO_`、`VIDEO_SORA_`、`VIDEO_MINIMAX_`、`VIDEO_GROK_`、`VIDEO_HAPPYHORSE_` + +## ドキュメント・メディア解析 + +教材の具体的なフォーマットは選択したパーサーに依存します。現在はテキスト、PDF、Office 文書、画像、一部の音声・動画形式をサポートし、provider によって対応範囲が異なります。 ```bash -ACCESS_CODE=your-secret-code +# MinerU 自ホスト +PDF_MINERU_BASE_URL=http://localhost:8888 + +# MinerU 自ホストのオプションバックエンド +PDF_MINERU_BACKEND=pipeline + +# MinerU Cloud +PDF_MINERU_CLOUD_API_KEY= +PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 + +# AliDocMind(API key ではなく Alibaba Cloud AccessKey を使用) +ALIDOCMIND_ACCESS_KEY_ID= +ALIDOCMIND_ACCESS_KEY_SECRET= +ALIDOCMIND_BASE_URL= # 任意の上書き ``` -訪問者は一度だけ入力を求められ、コードは HTTP-only cookie に保存されます。空のままにすると無効になります。 +`unpdf` は OpenMAIC に組み込み済みで、基本的な PDF 解析に使えます。Office 文書、画像、OCR、表、数式、レイアウト解析が必要な教材は MinerU または AliDocMind の互換 provider を選択してください。 + +AliDocMind のドキュメント解析は PDF、DOCX、PPTX、XLSX、PNG、JPG/JPEG、BMP、GIF に対応します。現在の音声・動画素材は AliDocMind でのみ解析可能で、動画は MP4、MOV、AVI、MKV、WMV、音声は MP3、WAV、AAC に対応し、M4A は非対応です。 ## Web 検索 -Tavily、Bocha、または MiniMax を設定します。 +Tavily、Bocha、Brave、Baidu、SearXNG、MiniMax を設定可能です。 ```bash TAVILY_API_KEY= @@ -117,30 +168,87 @@ TAVILY_BASE_URL= # 任意の上書き BOCHA_API_KEY= BOCHA_BASE_URL= # 任意の上書き +BAIDU_API_KEY= +BAIDU_BASE_URL=https://qianfan.baidubce.com # 任意の上書き + +# 自ホスト SearXNG(API key 不要) +SEARXNG_BASE_URL= + WEB_SEARCH_MINIMAX_API_KEY= WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # 任意の上書き ``` -フロントエンドには、生成ごとに検索を有効化するためのトグルが表示されます。 +Brave と SearXNG は API key 不要です。フロントエンドでは生成ごとに検索を有効化するトグルが表示されます。Grok の Web 検索は Grok LLM の検索ツール経由で提供され、独立した Web 検索 provider ではありません。 -## PDF 解析プロバイダー +## ACCESS_CODE — サイト全体のパスワード -複雑なレイアウト、数式、表を含む PDF には、サーバー側パーサーを設定できます。 +共有デプロイ(社内デモ、授業など)ではアクセスコードを設定し、訪問者にアプリ表示前のパスワード入力を求められます。 ```bash -# MinerU self-hosted -PDF_MINERU_BASE_URL=http://localhost:8888 +ACCESS_CODE=your-secret-code +``` -# MinerU Cloud -PDF_MINERU_CLOUD_API_KEY= -PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 +訪問者は一度だけ入力を求められ、コードは HTTP-only cookie に保存されます。空欄にすると無効になります。 + +## デフォルトモデルとモデルルーティング + +サーバー API がクライアントからモデル指定を受け取らない場合、`DEFAULT_MODEL` でデフォルトモデルを指定します。モデル指定は `provider:model-id` 形式です。例: + +```bash +DEFAULT_MODEL=openai:gpt-5.5 ``` -サーバー側パーサーが未設定の場合、OpenMAIC は `unpdf` にフォールバックします。 +`MODEL_ROUTES` で生成の各フェーズに別モデルを割り当て可能です。未設定フェーズはクライアント指定モデルか `DEFAULT_MODEL` を使います。JSON オブジェクトで、キーがフェーズ名、値がモデル文字列または `model` と `thinking` を含むオブジェクトです。完全なフェーズ一覧と例はリポジトリの [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) を参照してください。 + +## 機能フラグ + +機能フラグは `true` または `1` を有効とし、それ以外は無効です。`NEXT_PUBLIC_*` はビルド時にクライアントに注入されるため、変更後は再ビルドが必要です。 + +```bash +# MAIC Editor(Pro モード) +NEXT_PUBLIC_MAIC_EDITOR_ENABLED=true + +# Pi 対話ランタイム +NEXT_PUBLIC_PI_CHAT_ENABLED=true + +# 職業教育タスクエンジン(サーバー側スイッチ) +OPENMAIC_ENABLE_VOCATIONAL=true + +# 職業教育実験 UI 表示 +NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true + +# 動画エクスポート入口表示 +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true + +# 実験的 PPTX インポート入口表示 +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true +``` + +PPTX インポートはまだ実験的で、解析結果は完全に授業データフローに統合されていません。`NEXT_PUBLIC_*` 変数はビルド時スイッチで、Docker では build args で渡す必要があり、コンテナ実行時環境変数だけでは反映されません。 + +## その他サーバーオプション + +以下のサーバーオプションも環境変数で設定可能です: + +```bash +# シーン内容の並列生成。0 または未設定は逐次生成 +PARALLEL_SCENE_CONCURRENCY=3 + +# localhost や内部ネットワークへのアクセス許可。セルフホスト/プライベートネットワーク向け +ALLOW_LOCAL_NETWORKS=true + +# 任意の MP4 レンダリングサービス +RENDER_SERVICE_URL=http://render-service:9000 + +# ログと推論設定 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` ## YAML 設定ファイルを使う -環境変数の代わりに、プロジェクトルートの `server-providers.yml` に設定を書くこともできます。このファイルはサーバー起動時に読み込まれます。セクションは環境変数のカテゴリに対応します。 +環境変数のほかに、コード内で登録済みの provider 設定をプロジェクトルートの `server-providers.yml` に書くこともできます。サーバー起動時に読み込まれ、環境変数のカテゴリに対応した構造です。 ```yaml title="server-providers.yml" providers: @@ -148,8 +256,7 @@ providers: apiKey: sk-... baseUrl: https://api.openai.com/v1 models: - - gpt-4o - - gpt-4o-mini + - gpt-5.5 anthropic: apiKey: sk-ant-... @@ -164,36 +271,23 @@ asr: pdf: mineru: baseUrl: http://localhost:8888 + alidocmind: + accessKeyId: your-access-key-id + accessKeySecret: your-access-key-secret + +image: + seedream: + apiKey: ... + +video: + seedance: + apiKey: ... web-search: tavily: apiKey: tvly-... - minimax: - apiKey: sk-... - baseUrl: https://api.minimaxi.com + searxng: + baseUrl: http://localhost:8080 ``` -環境変数は対応する YAML フィールドをフィールド単位で上書きします。キーは `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`tavily`、`minimax` のような provider ID に対応します。 - -## 追加 provider とサーバーオプション - -カスタム OpenAI 互換 LLM provider は Settings から追加できます。任意の環境変数 prefix や未知の `server-providers.yml` ID から登録することはできません。カスタム TTS/ASR provider もクライアントの Settings に追加します。 - -ComfyUI Image は `public/` にある workflow(`comfyui-*.json`、または名前に `workflow` を含むファイル)を検出し、API key は不要です。Docker 本番環境でホストの ComfyUI (`host.docker.internal:8188`) に接続する場合は `ALLOW_LOCAL_NETWORKS=true` を設定してください。`comfyui-image` は server-managed provider ではないため、設定しないと SSRF 保護により拒否されます。 - -ドキュメント解析は parser に応じてテキスト、PDF、Office 文書、画像、一部の音声・動画形式をサポートします。AliDocMind は PDF、DOCX、PPTX、XLSX、PNG、JPG/JPEG、BMP、GIF、さらに MP4、MOV、AVI、MKV、WMV、MP3、WAV、AAC に対応します。 - -feature flag は `true` または `1` を受け付け、それ以外は無効です。`NEXT_PUBLIC_*` はビルド時の設定なので、Docker では `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` や `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT` などを build args で渡します。 - -Azure OpenAI は `AZURE_OPENAI_API_KEY`、リソース endpoint(`AZURE_OPENAI_BASE_URL`)、deployment name(`AZURE_OPENAI_MODELS`)を使用します。Ollama と Lemonade はローカル provider のため API key 不要です。画像/動画生成、カスタム TTS/ASR、ドキュメント/メディア解析、SearXNG、`DEFAULT_MODEL`/`MODEL_ROUTES` は `.env.example` の provider 別設定に従います。SearXNG は server-managed、Brave は keyless です。 - -その他のサーバーオプション: - -```bash -PARALLEL_SCENE_CONCURRENCY=3 # 0 または未設定:逐次生成 -ALLOW_LOCAL_NETWORKS=true # self-hosted/内部ネットワーク向け -RENDER_SERVICE_URL=http://render-service:9000 -LOG_LEVEL=info -LOG_FORMAT=pretty -LLM_THINKING_DISABLED=false -``` +環境変数は YAML の同名フィールドを逐次上書きします。キーはコード内登録済みの provider ID(例:`openai`、`doubao-tts`、`openai-whisper`、`mineru`、`alidocmind`、`seedream`、`seedance`、`tavily`、`searxng`)でなければなりません。未知の ID でカスタム LLM provider を登録することはできません。 diff --git a/packages/docs/content/docs/configuration.mdx b/packages/docs/content/docs/configuration.mdx index 4e38eb8a46..c0a52aeab9 100644 --- a/packages/docs/content/docs/configuration.mdx +++ b/packages/docs/content/docs/configuration.mdx @@ -1,56 +1,70 @@ --- title: Configuration -description: LLM providers, TTS, ASR, access control, and feature flags. +description: LLM providers, media generation, document parsing, TTS, ASR, access control, and feature flags. --- -OpenMAIC reads configuration from environment variables at server start. All of them are optional — enable the providers and features you need. For a full list see [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) in the repo. For built-in model IDs, see [Supported Models](./supported-models.mdx). +OpenMAIC reads environment variables when the server starts. Every setting is optional—enable only what you need. See [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) in the repository for environment variable examples. See [Supported models](./supported-models.mdx) for built-in model IDs. + +In addition to environment variables, you can configure server-side providers registered in the code through `server-providers.yml` in the project root. Environment variables override matching YAML fields one by one. Custom OpenAI-compatible providers can only be added in Settings; they cannot be registered with arbitrary environment variable prefixes or unknown YAML provider IDs. ## LLM providers -Every provider uses the same shape of three variables. Only the API key is required; base URL and model list are optional. +Cloud providers generally use three environment variables: an API key, a base URL, and a model list. The API key is usually required; the base URL and model list are optional. Azure OpenAI requires a resource endpoint, while Ollama and Lemonade do not require an API key. ```bash OPENAI_API_KEY=sk-... -OPENAI_BASE_URL= # optional override -OPENAI_MODELS= # optional comma-separated list of allowed models +OPENAI_BASE_URL= # optional base URL override +OPENAI_MODELS= # optional model allowlist (comma-separated) ``` Supported provider prefixes: -| Prefix | Provider | -| ------------------ | -------------------------------------------------- | -| `OPENAI_` | OpenAI | -| `ANTHROPIC_` | Anthropic | -| `GOOGLE_` | Google Gemini | -| `DEEPSEEK_` | DeepSeek | -| `QWEN_` | Alibaba Qwen | -| `KIMI_` | Moonshot Kimi | +| Prefix | Provider | +| ------------------ | --------------------------------------------- | +| `OPENAI_` | OpenAI | +| `AZURE_OPENAI_` | Azure OpenAI | +| `ANTHROPIC_` | Anthropic | +| `GOOGLE_` | Google Gemini | +| `DEEPSEEK_` | DeepSeek | +| `QWEN_` | Alibaba Qwen | +| `KIMI_` | Moonshot Kimi | | `MINIMAX_` | MiniMax (Anthropic-compatible endpoint by default) | -| `GLM_` | Zhipu GLM | -| `SILICONFLOW_` | SiliconFlow | -| `DOUBAO_` | Doubao (ByteDance) | -| `OPENROUTER_` | OpenRouter | -| `GROK_` | xAI Grok | -| `TENCENT_` | Tencent Hunyuan | -| `TENCENT_HUNYUAN_` | Tencent Hunyuan | -| `XIAOMI_` | Xiaomi MiMo | -| `MIMO_` | Xiaomi MiMo | -| `OLLAMA_` | Ollama (local) | -| `LEMONADE_` | Lemonade (local) | - -## Local models via Ollama - -No API key is needed. Set the base URL so OpenMAIC bypasses its SSRF check: +| `GLM_` | Zhipu GLM | +| `SILICONFLOW_` | SiliconFlow | +| `DOUBAO_` | Doubao (ByteDance) | +| `OPENROUTER_` | OpenRouter | +| `GROK_` | xAI Grok | +| `TENCENT_` | Tencent Hunyuan | +| `TENCENT_HUNYUAN_` | Tencent Hunyuan (alias) | +| `XIAOMI_` | Xiaomi MiMo | +| `MIMO_` | Xiaomi MiMo (alias) | +| `OLLAMA_` | Ollama (local) | +| `LEMONADE_` | Lemonade (local) | + +Azure OpenAI uses the deployment name as the model ID: + +```bash +AZURE_OPENAI_API_KEY=... +AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai +AZURE_OPENAI_MODELS=your-deployment-name +``` + +To connect another OpenAI-compatible LLM service, add a custom provider under **Settings → Model providers** and select the corresponding protocol type. + +## Local models (Ollama and Lemonade) + +Ollama and Lemonade do not require an API key. Put the local service base URL in the server configuration so it passes SSRF validation: ```bash OLLAMA_BASE_URL=http://localhost:11434/v1 +# LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -Client-supplied localhost URLs are blocked in production, so this must be configured on the server. +To limit available models, use `OLLAMA_MODELS` or `LEMONADE_MODELS` as a model allowlist. ## TTS providers -Server-side TTS providers use `TTS__API_KEY` and optional `TTS__BASE_URL`. +Server-side TTS providers use `TTS__API_KEY` and optionally `TTS__BASE_URL`. ```bash # Doubao TTS (Volcengine Seed-TTS, native MP3) @@ -65,14 +79,15 @@ TTS_QWEN_BASE_URL= # optional override TTS_OPENAI_API_KEY= TTS_OPENAI_BASE_URL= -# VoxCPM2 (self-hosted TTS with voice cloning, see VoxCPM2 page) +# VoxCPM2 (self-hosted TTS with voice cloning; see the dedicated VoxCPM2 page) TTS_VOXCPM_BASE_URL=http://localhost:8000 ``` -Supported TTS prefixes are `TTS_MINIMAX_`, `TTS_DOUBAO_`, `TTS_OPENAI_`, `TTS_AZURE_`, `TTS_GLM_`, `TTS_QWEN_`, `TTS_VOXCPM_`, and `TTS_ELEVENLABS_`. -For local Lemonade TTS, set `TTS_LEMONADE_BASE_URL` (no API key required). +Supported TTS prefixes include `TTS_OPENAI_`, `TTS_AZURE_`, `TTS_GLM_`, `TTS_QWEN_`, `TTS_MINIMAX_`, `TTS_DOUBAO_`, `TTS_ELEVENLABS_`, `TTS_VOXCPM_`, and `TTS_LEMONADE_`. Local Lemonade TTS and VoxCPM2 do not require an API key. Browser-native TTS requires no server configuration. + +Administrators can force-disable a TTS provider on the server with `TTS__ENABLED=false`. See the dedicated [VoxCPM2](./voxcpm.mdx) section for self-hosted TTS and voice cloning. -For VoxCPM2 (self-hosted TTS with voice cloning), see the dedicated [VoxCPM2](./voxcpm.mdx) page. +You can also add a custom OpenAI-compatible TTS provider in Settings by entering its Base URL, model, and voice. Custom providers are stored in client settings and cannot be registered through arbitrary `TTS_*` environment variables or YAML provider IDs. ## ASR (speech to text) @@ -85,31 +100,66 @@ ASR_OPENAI_BASE_URL= # optional override ASR_QWEN_API_KEY= ASR_QWEN_BASE_URL= # optional override -# Lemonade ASR (local, no key needed) +# Azure ASR +ASR_AZURE_API_KEY= +ASR_AZURE_BASE_URL=https://{region}.api.cognitive.microsoft.com + +# Lemonade ASR (local, no key required) ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +Browser-native ASR requires no server configuration. + +You can also add a custom OpenAI-compatible ASR provider in Settings by entering its Base URL, model, and supported languages; this configuration is stored in client settings. + ## Image generation providers -Image providers use `IMAGE__API_KEY` and optional `IMAGE__BASE_URL`. Lemonade is local and does not require a key: +Image generation providers use `IMAGE__API_KEY` and optionally `IMAGE__BASE_URL`. Supported prefixes include: + +`IMAGE_OPENAI_`, `IMAGE_SEEDREAM_`, `IMAGE_QWEN_IMAGE_`, `IMAGE_NANO_BANANA_`, `IMAGE_MINIMAX_`, `IMAGE_GROK_`, and `IMAGE_LEMONADE_`. + +Lemonade is a local service and does not require a key: ```bash IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -## ACCESS_CODE — site-wide password +ComfyUI Image does not require an API key and connects to `http://localhost:8188` by default. Enter the ComfyUI Base URL in Settings, and place workflow JSON exported in API format in OpenMAIC's `public/` directory. Use filenames matching `comfyui-*.json` or containing `workflow`; the Settings page discovers these files automatically and offers them as workflows. With Docker, add the workflow before building the image or mount an individual workflow file into `/app/public/` in the container. Because `comfyui-image` is not a server-managed provider, production deployments connecting to host-side ComfyUI must also set `ALLOW_LOCAL_NETWORKS=true`. + +## Video generation providers + +Video generation providers use `VIDEO__API_KEY` and optionally `VIDEO__BASE_URL`. Supported prefixes include: -For shared deployments (internal demos, classrooms), set an access code so visitors enter a password before seeing the app: +`VIDEO_SEEDANCE_`, `VIDEO_KLING_`, `VIDEO_VEO_`, `VIDEO_SORA_`, `VIDEO_MINIMAX_`, `VIDEO_GROK_`, and `VIDEO_HAPPYHORSE_`. + +## Document and media parsing + +The exact course-material formats depend on the selected parser. OpenMAIC currently supports text, PDF, Office documents, images, and some audio/video formats; supported formats and capabilities vary by provider. ```bash -ACCESS_CODE=your-secret-code +# MinerU self-hosted +PDF_MINERU_BASE_URL=http://localhost:8888 + +# Optional backend for self-hosted MinerU +PDF_MINERU_BACKEND=pipeline + +# MinerU Cloud +PDF_MINERU_CLOUD_API_KEY= +PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 + +# AliDocMind (uses Alibaba Cloud AccessKey, not a separate API key) +ALIDOCMIND_ACCESS_KEY_ID= +ALIDOCMIND_ACCESS_KEY_SECRET= +ALIDOCMIND_BASE_URL= # optional override ``` -Visitors are prompted once and the code is stored in an HTTP-only cookie. Leave empty to disable. +`unpdf` is built into OpenMAIC and supports basic PDF parsing. For Office documents, images, and material requiring OCR, table, formula, or layout analysis, select a compatible MinerU or AliDocMind provider. + +AliDocMind document parsing supports PDF, DOCX, PPTX, XLSX, and PNG, JPG/JPEG, BMP, and GIF. Audio and video material is currently supported only through AliDocMind: MP4, MOV, AVI, MKV, and WMV for video; MP3, WAV, and AAC for audio. M4A is not supported. ## Web search -Configure Tavily, Bocha, or MiniMax: +Configure Tavily, Bocha, Brave, Baidu, SearXNG, or MiniMax: ```bash TAVILY_API_KEY= @@ -118,30 +168,87 @@ TAVILY_BASE_URL= # optional override BOCHA_API_KEY= BOCHA_BASE_URL= # optional override +BAIDU_API_KEY= +BAIDU_BASE_URL=https://qianfan.baidubce.com # optional override + +# Self-hosted SearXNG, no API key required +SEARXNG_BASE_URL= + WEB_SEARCH_MINIMAX_API_KEY= WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # optional override ``` -The front-end exposes a toggle to enable search per generation. +Brave and SearXNG do not require an API key. The frontend lets users choose whether to enable search for each generation. Grok web search is provided through the Grok LLM search tool, not a standalone web-search provider. -## PDF parsing providers +## ACCESS_CODE — site-wide password -For PDFs with complex layouts, math, or tables, configure a server-side parser: +For shared deployments such as internal demos or classrooms, set an access code so visitors must enter a password before they can see the app: ```bash -# MinerU self-hosted -PDF_MINERU_BASE_URL=http://localhost:8888 +ACCESS_CODE=your-secret-code +``` -# MinerU Cloud -PDF_MINERU_CLOUD_API_KEY= -PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 +Visitors are prompted only once; the password is stored in an HTTP-only cookie. Leave it empty to disable access control. + +## Default model and model routing + +When the server API receives no client model, set the default with `DEFAULT_MODEL`. Use the format `provider:model-id`, for example: + +```bash +DEFAULT_MODEL=openai:gpt-5.5 ``` -Without a server-side parser, OpenMAIC falls back to `unpdf`. +Use `MODEL_ROUTES` to choose models for individual generation stages. Unconfigured stages continue to resolve through the client model and `DEFAULT_MODEL`. Its value is a JSON object whose keys are generation stages and whose values can be model strings or objects containing `model` and `thinking`. See [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) for the complete stage list and examples. + +## Feature flags + +Feature flags accept `true` or `1`; all other values are treated as disabled. `NEXT_PUBLIC_*` flags are injected into the client at build time, so changing them requires a rebuild: + +```bash +# MAIC Editor (Pro mode) +NEXT_PUBLIC_MAIC_EDITOR_ENABLED=true + +# Pi chat runtime +NEXT_PUBLIC_PI_CHAT_ENABLED=true + +# Vocational education task engine (server-side flag) +OPENMAIC_ENABLE_VOCATIONAL=true + +# Show the vocational education experimental switch +NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true + +# Show the video export entry point +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true + +# Show the experimental PPTX import entry point +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true +``` -## Using a YAML config file +PPTX import is still experimental, and its parsed output is not yet fully integrated into the classroom data flow. All `NEXT_PUBLIC_*` variables above are build-time flags. Docker deployments must also pass them as build args; setting them only as container runtime environment variables is not sufficient. -As an alternative to env vars, you can put configuration in `server-providers.yml` at the project root. The file is loaded on server start. Sections mirror the env-var categories: +## Other server options + +The following server options can also be configured with environment variables: + +```bash +# Parallel scene-content generation; 0 or unset means sequential +PARALLEL_SCENE_CONCURRENCY=3 + +# Allow localhost and private-network addresses; self-hosted/private deployments only +ALLOW_LOCAL_NETWORKS=true + +# Optional MP4 rendering service +RENDER_SERVICE_URL=http://render-service:9000 + +# Logging and reasoning +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` + +## Using a YAML configuration file + +In addition to environment variables, place configuration for providers registered in the code in `server-providers.yml` at the project root. The server loads it at startup, and its structure follows the environment variable categories: ```yaml title="server-providers.yml" providers: @@ -149,8 +256,7 @@ providers: apiKey: sk-... baseUrl: https://api.openai.com/v1 models: - - gpt-4o - - gpt-4o-mini + - gpt-5.5 anthropic: apiKey: sk-ant-... @@ -165,36 +271,23 @@ asr: pdf: mineru: baseUrl: http://localhost:8888 + alidocmind: + accessKeyId: your-access-key-id + accessKeySecret: your-access-key-secret + +image: + seedream: + apiKey: ... + +video: + seedance: + apiKey: ... web-search: tavily: apiKey: tvly-... - minimax: - apiKey: sk-... - baseUrl: https://api.minimaxi.com + searxng: + baseUrl: http://localhost:8080 ``` -Environment variables override matching YAML fields field-by-field. Keys map to provider IDs such as `openai`, `doubao-tts`, `openai-whisper`, `mineru`, `tavily`, or `minimax`. - -## Additional providers and server options - -Custom OpenAI-compatible LLM providers can be added in Settings. They are not registered through arbitrary environment-variable prefixes or unknown `server-providers.yml` IDs. Custom OpenAI-compatible TTS and ASR providers are also client-side Settings entries. - -ComfyUI Image uses workflows discovered from `public/` (filenames such as `comfyui-*.json` or names containing `workflow`) and does not require an API key. For a host-side ComfyUI in production Docker, use `host.docker.internal:8188` and set `ALLOW_LOCAL_NETWORKS=true`; otherwise the SSRF guard rejects the client-supplied local URL. - -Document parsing supports text, PDF, Office documents, images, and some audio/video formats depending on the parser. AliDocMind supports PDF, DOCX, PPTX, XLSX; PNG, JPG/JPEG, BMP, GIF; and (for media) MP4, MOV, AVI, MKV, WMV, MP3, WAV, and AAC. - -Feature flags accept `true` or `1`; other values are off. `NEXT_PUBLIC_*` flags are build-time values. In Docker, pass them as build args, including `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` and `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`. - -Azure OpenAI uses `AZURE_OPENAI_API_KEY`, a resource endpoint in `AZURE_OPENAI_BASE_URL`, and deployment names in `AZURE_OPENAI_MODELS`. Ollama and Lemonade are local providers and do not need API keys. Image/video generation, custom TTS/ASR, document/media parsing, SearXNG, and `DEFAULT_MODEL`/`MODEL_ROUTES` use the same provider-specific settings described in `.env.example`; SearXNG is server-managed and Brave is keyless. - -Other server options: - -```bash -PARALLEL_SCENE_CONCURRENCY=3 # 0 or unset: serial generation -ALLOW_LOCAL_NETWORKS=true # self-hosted/internal deployments only -RENDER_SERVICE_URL=http://render-service:9000 -LOG_LEVEL=info -LOG_FORMAT=pretty -LLM_THINKING_DISABLED=false -``` +Environment variables override matching YAML provider fields one by one. Keys must use provider IDs registered in the code, such as `openai`, `doubao-tts`, `openai-whisper`, `mineru`, `alidocmind`, `seedream`, `seedance`, `tavily`, or `searxng`. Unknown IDs cannot register custom LLM providers here. diff --git a/packages/docs/content/docs/configuration.ru.mdx b/packages/docs/content/docs/configuration.ru.mdx index 7278dc437e..0c1fa83366 100644 --- a/packages/docs/content/docs/configuration.ru.mdx +++ b/packages/docs/content/docs/configuration.ru.mdx @@ -1,146 +1,254 @@ --- title: Конфигурация -description: LLM providers, TTS, ASR, контроль доступа и feature flags. +description: LLM провайдеры, генерация медиа, разбор документов, TTS, ASR, контроль доступа и feature flags. --- -OpenMAIC читает конфигурацию из переменных окружения при запуске сервера. Все параметры необязательны — включайте только нужные providers и функции. Полный список смотрите в [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example) в репозитории. Встроенные model ID перечислены в разделе [Поддерживаемые модели](./supported-models.mdx). +OpenMAIC читает переменные окружения при запуске сервера. Все параметры необязательны — включайте только нужные. Пример env vars смотрите в репозитории в файле [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example). Встроенные ID моделей — в разделе [Поддерживаемые модели](./supported-models.mdx). -## LLM providers +Помимо env vars, можно использовать файл `server-providers.yml` в корне проекта для конфигурации зарегистрированных в коде серверных провайдеров. Переменные окружения по отдельным полям переопределяют соответствующие настройки в YAML. Кастомные OpenAI-совместимые провайдеры LLM можно добавить только через настройки, нельзя регистрировать их через произвольные префиксы env vars или неизвестные ID в YAML. -Каждый provider использует три переменные одного формата. Обязателен только API key; base URL и список моделей необязательны. +## LLM провайдеры + +Облачные провайдеры обычно используют три переменные: API key, base URL и список моделей. Обычно требуется только API key, base URL и список моделей — опциональны. Azure OpenAI требует указания endpoint ресурса, Ollama и Lemonade API key не требуют. ```bash OPENAI_API_KEY=sk-... -OPENAI_BASE_URL= # необязательное переопределение base URL -OPENAI_MODELS= # необязательный список разрешенных моделей через запятую +OPENAI_BASE_URL= # опциональное переопределение base URL +OPENAI_MODELS= # опциональный белый список моделей через запятую ``` -Поддерживаемые provider prefixes: - -| Prefix | Provider | -| ------------------ | ---------------------------------------------------- | -| `OPENAI_` | OpenAI | -| `ANTHROPIC_` | Anthropic | -| `GOOGLE_` | Google Gemini | -| `DEEPSEEK_` | DeepSeek | -| `QWEN_` | Alibaba Qwen | -| `KIMI_` | Moonshot Kimi | -| `MINIMAX_` | MiniMax (по умолчанию Anthropic-compatible endpoint) | -| `GLM_` | Zhipu GLM | -| `SILICONFLOW_` | SiliconFlow | -| `DOUBAO_` | Doubao (ByteDance) | -| `OPENROUTER_` | OpenRouter | -| `GROK_` | xAI Grok | -| `TENCENT_` | Tencent Hunyuan | -| `TENCENT_HUNYUAN_` | Tencent Hunyuan | -| `XIAOMI_` | Xiaomi MiMo | -| `MIMO_` | Xiaomi MiMo | -| `OLLAMA_` | Ollama (локально) | -| `LEMONADE_` | Lemonade (локально) | - -## Локальные модели через Ollama - -API key не нужен. Укажите base URL на сервере, чтобы OpenMAIC обошел SSRF check: +Поддерживаемые префиксы провайдеров: + +| Префикс | Провайдер | +| ------------------- | ------------------------------------- | +| `OPENAI_` | OpenAI | +| `AZURE_OPENAI_` | Azure OpenAI | +| `ANTHROPIC_` | Anthropic | +| `GOOGLE_` | Google Gemini | +| `DEEPSEEK_` | DeepSeek | +| `QWEN_` | Alibaba Qwen | +| `KIMI_` | Moonshot Kimi | +| `MINIMAX_` | MiniMax (по умолчанию Anthropic-совместимый endpoint) | +| `GLM_` | Zhipu GLM | +| `SILICONFLOW_` | SiliconFlow | +| `DOUBAO_` | Doubao (ByteDance) | +| `OPENROUTER_` | OpenRouter | +| `GROK_` | xAI Grok | +| `TENCENT_` | Tencent Hunyuan | +| `TENCENT_HUNYUAN_` | Tencent Hunyuan (синоним) | +| `XIAOMI_` | Xiaomi MiMo | +| `MIMO_` | Xiaomi MiMo (синоним) | +| `OLLAMA_` | Ollama (локально) | +| `LEMONADE_` | Lemonade (локально) | + +Azure OpenAI использует deployment name в качестве ID модели: + +```bash +AZURE_OPENAI_API_KEY=... +AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai +AZURE_OPENAI_MODELS=your-deployment-name +``` + +Для подключения других OpenAI-совместимых LLM сервисов добавьте кастомный провайдер в **Настройки → Модельные провайдеры** и выберите соответствующий тип протокола. + +## Локальные модели (Ollama и Lemonade) + +Ollama и Lemonade не требуют API key; base URL локального сервиса нужно указывать в конфигурации сервера, чтобы пройти проверку SSRF: ```bash OLLAMA_BASE_URL=http://localhost:11434/v1 +# LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -В production localhost URL, переданные клиентом, блокируются, поэтому это нужно настраивать на сервере. +Для ограничения доступных моделей можно использовать `OLLAMA_MODELS` или `LEMONADE_MODELS` с белым списком моделей. -## TTS providers +## TTS провайдеры -Серверные TTS providers используют `TTS__API_KEY` и необязательный `TTS__BASE_URL`. +Серверные TTS провайдеры используют `TTS__API_KEY` и опциональный `TTS__BASE_URL`. ```bash -# Doubao TTS (Volcengine Seed-TTS, native MP3) +# Doubao TTS (Volcengine Seed-TTS, нативный MP3) TTS_DOUBAO_API_KEY=appId:accessKey -TTS_DOUBAO_BASE_URL= # необязательное переопределение +TTS_DOUBAO_BASE_URL= # опциональное переопределение # Qwen TTS TTS_QWEN_API_KEY= -TTS_QWEN_BASE_URL= # необязательное переопределение +TTS_QWEN_BASE_URL= # опциональное переопределение -# Любой OpenAI-compatible TTS endpoint +# Любой OpenAI-совместимый TTS endpoint TTS_OPENAI_API_KEY= TTS_OPENAI_BASE_URL= -# VoxCPM2 (self-hosted TTS с клонированием голоса, см. страницу VoxCPM2) +# VoxCPM2 (self-hosted TTS с клонированием голоса, см. отдельную страницу VoxCPM2) TTS_VOXCPM_BASE_URL=http://localhost:8000 ``` -Поддерживаемые TTS prefixes: `TTS_MINIMAX_`, `TTS_DOUBAO_`, `TTS_OPENAI_`, `TTS_AZURE_`, `TTS_GLM_`, `TTS_QWEN_`, `TTS_VOXCPM_` и `TTS_ELEVENLABS_`. Для локального Lemonade TTS задайте `TTS_LEMONADE_BASE_URL`; API key не нужен. +Поддерживаемые TTS префиксы: `TTS_OPENAI_`, `TTS_AZURE_`, `TTS_GLM_`, `TTS_QWEN_`, `TTS_MINIMAX_`, `TTS_DOUBAO_`, `TTS_ELEVENLABS_`, `TTS_VOXCPM_` и `TTS_LEMONADE_`. Локальные Lemonade TTS и VoxCPM2 не требуют API key. Встроенный в браузер TTS не требует серверной настройки. + +Администратор может принудительно отключить TTS провайдер на сервере, установив `TTS__ENABLED=false`. VoxCPM2 (self-hosted TTS + клонирование голоса) описан на отдельной странице [VoxCPM2](./voxcpm.mdx). -Для VoxCPM2 (self-hosted TTS с клонированием голоса) смотрите отдельную страницу [VoxCPM2](./voxcpm.mdx). +Кастомные OpenAI-совместимые TTS провайдеры можно добавить в настройках, указав Base URL, модели и голоса. Такие кастомные провайдеры сохраняются в клиентских настройках и не регистрируются через произвольные env vars `TTS_*` или YAML ID. -## ASR (speech to text) +## ASR (распознавание речи) ```bash # OpenAI Whisper ASR_OPENAI_API_KEY= -ASR_OPENAI_BASE_URL= # необязательное переопределение +ASR_OPENAI_BASE_URL= # опциональное переопределение # Qwen ASR ASR_QWEN_API_KEY= -ASR_QWEN_BASE_URL= # необязательное переопределение +ASR_QWEN_BASE_URL= # опциональное переопределение + +# Azure ASR +ASR_AZURE_API_KEY= +ASR_AZURE_BASE_URL=https://{region}.api.cognitive.microsoft.com # Lemonade ASR (локально, key не нужен) ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +Встроенный в браузер ASR не требует серверной настройки. + +Кастомные OpenAI-совместимые ASR провайдеры можно добавить в настройках, указав Base URL, модели и поддерживаемые языки. Эти настройки сохраняются в клиенте. + ## Провайдеры генерации изображений -Провайдеры изображений используют `IMAGE__API_KEY` и необязательный `IMAGE__BASE_URL`. Lemonade работает локально и не требует key: +Провайдеры изображений используют `IMAGE__API_KEY` и опциональный `IMAGE__BASE_URL`. Поддерживаемые префиксы: + +`IMAGE_OPENAI_`, `IMAGE_SEEDREAM_`, `IMAGE_QWEN_IMAGE_`, `IMAGE_NANO_BANANA_`, `IMAGE_MINIMAX_`, `IMAGE_GROK_` и `IMAGE_LEMONADE_`. + +Lemonade — локальный сервис, не требует ключа: ```bash IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -## ACCESS_CODE — пароль для всего сайта +ComfyUI Image не требует API key, по умолчанию подключается к `http://localhost:8188`. В настройках укажите ComfyUI Base URL и положите экспортированный в формате API workflow JSON в папку `public/` OpenMAIC; имя файла должно соответствовать `comfyui-*.json` или содержать `workflow`. Настройки автоматически обнаружат эти файлы и предложат их как опции workflow. При Docker-деплое нужно добавить workflow в образ или смонтировать отдельный файл в `/app/public/`. Поскольку `comfyui-image` — не серверный провайдер, в продакшене для подключения к ComfyUI на хосте нужно установить `ALLOW_LOCAL_NETWORKS=true`. + +## Провайдеры генерации видео + +Видео провайдеры используют `VIDEO__API_KEY` и опциональный `VIDEO__BASE_URL`. Поддерживаемые префиксы: -Для общих deployments (внутренние демо, классы) задайте access code, чтобы посетители вводили пароль перед входом в приложение: +`VIDEO_SEEDANCE_`, `VIDEO_KLING_`, `VIDEO_VEO_`, `VIDEO_SORA_`, `VIDEO_MINIMAX_`, `VIDEO_GROK_` и `VIDEO_HAPPYHORSE_`. + +## Разбор документов и медиа + +Формат материалов зависит от выбранного парсера. Поддерживаются текст, PDF, Office-документы, изображения и часть аудио/видео форматов; возможности зависят от провайдера. ```bash -ACCESS_CODE=your-secret-code +# MinerU self-hosted +PDF_MINERU_BASE_URL=http://localhost:8888 + +# MinerU self-hosted опциональный backend +PDF_MINERU_BACKEND=pipeline + +# MinerU Cloud +PDF_MINERU_CLOUD_API_KEY= +PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 + +# AliDocMind (использует AccessKey Alibaba Cloud, а не отдельный API key) +ALIDOCMIND_ACCESS_KEY_ID= +ALIDOCMIND_ACCESS_KEY_SECRET= +ALIDOCMIND_BASE_URL= # опциональное переопределение ``` -Посетитель вводит код один раз; он сохраняется в HTTP-only cookie. Оставьте пустым, чтобы отключить. +`unpdf` встроен в OpenMAIC и подходит для базового разбора PDF. Для Office-документов, изображений и материалов с OCR, таблицами, формулами или сложной версткой рекомендуется MinerU или AliDocMind. + +AliDocMind поддерживает PDF, DOCX, PPTX, XLSX, а также PNG, JPG/JPEG, BMP, GIF. Текущая поддержка аудио/видео через AliDocMind: видео форматы MP4, MOV, AVI, MKV, WMV; аудио MP3, WAV, AAC. M4A не поддерживается. -## Web search +## Поисковые провайдеры -Настройте Tavily, Bocha или MiniMax: +Настройте Tavily, Bocha, Brave, Baidu, SearXNG или MiniMax: ```bash TAVILY_API_KEY= -TAVILY_BASE_URL= # необязательное переопределение +TAVILY_BASE_URL= # опциональное переопределение BOCHA_API_KEY= -BOCHA_BASE_URL= # необязательное переопределение +BOCHA_BASE_URL= # опциональное переопределение + +BAIDU_API_KEY= +BAIDU_BASE_URL=https://qianfan.baidubce.com # опциональное переопределение + +# Self-hosted SearXNG, API key не нужен +SEARXNG_BASE_URL= WEB_SEARCH_MINIMAX_API_KEY= -WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # необязательное переопределение +WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # опциональное переопределение ``` -На фронтенде есть toggle для включения поиска в каждом запуске generation. +Brave и SearXNG не требуют API key. На фронтенде есть переключатель для включения поиска при каждом запуске генерации. Grok использует поиск через инструменты Grok LLM, это не отдельный поисковый провайдер. -## PDF parsing providers +## ACCESS_CODE — пароль для всего сайта -Для PDF со сложной версткой, математикой или таблицами настройте серверный parser: +Для общих деплоев (внутренние демо, классы) можно задать пароль, чтобы посетители вводили его перед входом: ```bash -# MinerU self-hosted -PDF_MINERU_BASE_URL=http://localhost:8888 +ACCESS_CODE=your-secret-code +``` -# MinerU Cloud -PDF_MINERU_CLOUD_API_KEY= -PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 +Код вводится один раз и сохраняется в HTTP-only cookie. Оставьте пустым для отключения. + +## Модель по умолчанию и маршруты моделей + +Если серверный API не получает модель от клиента, используйте `DEFAULT_MODEL` для указания модели по умолчанию. Формат: `provider:model-id`, например: + +```bash +DEFAULT_MODEL=openai:gpt-5.5 ``` -Без серверного parser OpenMAIC откатывается на `unpdf`. +Можно использовать `MODEL_ROUTES` для назначения моделей на разные этапы генерации; этапы без настройки используют клиентскую модель или `DEFAULT_MODEL`. Это JSON-объект, где ключ — этап генерации, значение — строка модели или объект с полями `model` и `thinking`. Полный список этапов и примеры — в [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example). + +## Feature flags + +Значения `true` или `1` включают функцию, остальные — выключают. Переменные `NEXT_PUBLIC_*` внедряются в клиент при сборке, для их изменения нужна пересборка: + +```bash +# MAIC Editor (Pro режим) +NEXT_PUBLIC_MAIC_EDITOR_ENABLED=true + +# Pi runtime диалог +NEXT_PUBLIC_PI_CHAT_ENABLED=true + +# Профессиональное образование (серверный флаг) +OPENMAIC_ENABLE_VOCATIONAL=true + +# Отображение UI для тестов профессионального образования +NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true + +# Включение видеоэкспорта +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true + +# Экспериментальный импорт PPTX +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true +``` -## YAML config file +Импорт PPTX пока экспериментален, результаты парсинга не интегрированы полностью в поток данных классов. Все `NEXT_PUBLIC_*` — флаги сборки, в Docker их нужно передавать как build args, нельзя просто задавать в runtime env vars. -Вместо env vars можно положить конфигурацию в `server-providers.yml` в корне проекта. Файл загружается при запуске сервера. Секции соответствуют категориям env vars: +## Другие серверные опции + +Дополнительные параметры сервера можно задать через env vars: + +```bash +# Параллельная генерация сцен; 0 или unset — последовательная +PARALLEL_SCENE_CONCURRENCY=3 + +# Разрешить доступ к localhost, внутренним сетям; только для self-hosted/внутренних деплоев +ALLOW_LOCAL_NETWORKS=true + +# Опциональный MP4 рендер-сервис +RENDER_SERVICE_URL=http://render-service:9000 + +# Логирование и режимы вывода +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` + +## Конфигурация через YAML + +Кроме env vars, можно положить конфигурацию зарегистрированных провайдеров в `server-providers.yml` в корне проекта. Файл загружается при старте сервера, структура соответствует категориям env vars: ```yaml title="server-providers.yml" providers: @@ -148,8 +256,7 @@ providers: apiKey: sk-... baseUrl: https://api.openai.com/v1 models: - - gpt-4o - - gpt-4o-mini + - gpt-5.5 anthropic: apiKey: sk-ant-... @@ -164,36 +271,23 @@ asr: pdf: mineru: baseUrl: http://localhost:8888 + alidocmind: + accessKeyId: your-access-key-id + accessKeySecret: your-access-key-secret + +image: + seedream: + apiKey: ... + +video: + seedance: + apiKey: ... web-search: tavily: apiKey: tvly-... - minimax: - apiKey: sk-... - baseUrl: https://api.minimaxi.com + searxng: + baseUrl: http://localhost:8080 ``` -Переменные окружения переопределяют совпадающие YAML fields по отдельным полям. Ключи соответствуют provider ID, например `openai`, `doubao-tts`, `openai-whisper`, `mineru`, `tavily` или `minimax`. - -## Дополнительные provider и параметры сервера - -Custom OpenAI-compatible LLM provider можно добавить в Settings. Произвольные prefixes переменных окружения и неизвестные ID в `server-providers.yml` для регистрации не поддерживаются. Custom OpenAI-compatible TTS и ASR provider также добавляются только в клиентских Settings. - -ComfyUI Image обнаруживает workflow в `public/` (например, `comfyui-*.json` или имя с `workflow`) и не требует API key. В production Docker для ComfyUI на хосте используйте `host.docker.internal:8188` и задайте `ALLOW_LOCAL_NETWORKS=true`; иначе SSRF guard отклонит переданный клиентом локальный URL. - -Разбор материалов зависит от parser и может включать текст, PDF, Office-документы, изображения и некоторые аудио/видео форматы. AliDocMind поддерживает PDF, DOCX, PPTX, XLSX; PNG, JPG/JPEG, BMP, GIF; а также MP4, MOV, AVI, MKV, WMV, MP3, WAV и AAC. - -Feature flags принимают `true` или `1`, остальные значения выключают функцию. `NEXT_PUBLIC_*` задаются во время сборки; в Docker передавайте их как build args, включая `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` и `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`. - -Azure OpenAI использует `AZURE_OPENAI_API_KEY`, resource endpoint в `AZURE_OPENAI_BASE_URL` и deployment names в `AZURE_OPENAI_MODELS`. Ollama и Lemonade — локальные provider без API key. Настройки генерации изображений/видео, custom TTS/ASR, разбора документов и media, SearXNG, а также `DEFAULT_MODEL`/`MODEL_ROUTES` описаны в `.env.example`; SearXNG управляется сервером, Brave не требует key. - -Другие параметры сервера: - -```bash -PARALLEL_SCENE_CONCURRENCY=3 # 0 или unset: последовательная генерация -ALLOW_LOCAL_NETWORKS=true # только self-hosted/внутренние сети -RENDER_SERVICE_URL=http://render-service:9000 -LOG_LEVEL=info -LOG_FORMAT=pretty -LLM_THINKING_DISABLED=false -``` +Переменные окружения по отдельным полям переопределяют соответствующие настройки в YAML. Ключи должны совпадать с зарегистрированными в коде ID провайдеров, например `openai`, `doubao-tts`, `openai-whisper`, `mineru`, `alidocmind`, `seedream`, `seedance`, `tavily` или `searxng`. Неизвестные ID нельзя использовать для регистрации кастомных LLM провайдеров. diff --git a/packages/docs/content/docs/configuration.zh-tw.mdx b/packages/docs/content/docs/configuration.zh-tw.mdx index 727a1fd24d..9f25faa86f 100644 --- a/packages/docs/content/docs/configuration.zh-tw.mdx +++ b/packages/docs/content/docs/configuration.zh-tw.mdx @@ -1,146 +1,254 @@ --- title: 設定說明 -description: LLM 供應商、TTS、ASR、存取控制和功能開關。 +description: LLM 供應商、媒體生成、文件解析、TTS、ASR、存取控制和功能開關。 --- -OpenMAIC 會在伺服器啟動時讀取環境變數。所有項目都是選填——依需求啟用即可。完整清單請見倉庫中的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。內建模型 ID 請見[支援模型](./supported-models.mdx)。 +OpenMAIC 會在伺服器啟動時讀取環境變數。所有項目都是選填,依需求啟用即可。環境變數範例請見儲存庫中的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。內建模型 ID 請見[支援模型](./supported-models.mdx)。 + +除環境變數外,也可以使用專案根目錄下的 `server-providers.yml` 設定程式碼中已註冊的伺服器端 provider。環境變數會逐欄位覆蓋 YAML 中的同名設定;自訂 OpenAI 相容 provider 只能在設定中新增,不能透過任意環境變數字首或未知 YAML provider ID 註冊。 ## LLM 供應商 -每個 provider 都使用三個環境變數:只有 API key 必填,base URL 和模型清單都是選填。 +雲端供應商通常使用三個環境變數:API key、base URL 和 model 清單。API key 通常為必填,base URL 和 model 清單則為選填;Azure OpenAI 需要設定資源 endpoint,Ollama 和 Lemonade 不需要 API key。 ```bash OPENAI_API_KEY=sk-... -OPENAI_BASE_URL= # 選填的 base URL 覆蓋 -OPENAI_MODELS= # 選填的模型白名單(逗號分隔) +OPENAI_BASE_URL= # 選填的 base URL 覆寫值 +OPENAI_MODELS= # 選填的模型白名單(以逗號分隔) +``` + +支援的 provider 字首: + +| 字首 | 供應商 | +| ------------------ | ------------------------------------ | +| `OPENAI_` | OpenAI | +| `AZURE_OPENAI_` | Azure OpenAI | +| `ANTHROPIC_` | Anthropic | +| `GOOGLE_` | Google Gemini | +| `DEEPSEEK_` | DeepSeek | +| `QWEN_` | Alibaba Qwen | +| `KIMI_` | Moonshot Kimi | +| `MINIMAX_` | MiniMax(預設用 Anthropic 相容端點) | +| `GLM_` | Zhipu GLM | +| `SILICONFLOW_` | SiliconFlow | +| `DOUBAO_` | Doubao(ByteDance) | +| `OPENROUTER_` | OpenRouter | +| `GROK_` | xAI Grok | +| `TENCENT_` | Tencent Hunyuan | +| `TENCENT_HUNYUAN_` | Tencent Hunyuan(別名) | +| `XIAOMI_` | Xiaomi MiMo | +| `MIMO_` | Xiaomi MiMo(別名) | +| `OLLAMA_` | Ollama(本機) | +| `LEMONADE_` | Lemonade(本機) | + +Azure OpenAI 使用 deployment name 作為模型 ID: + +```bash +AZURE_OPENAI_API_KEY=... +AZURE_OPENAI_BASE_URL=https://YOUR-RESOURCE.openai.azure.com/openai +AZURE_OPENAI_MODELS=your-deployment-name ``` -支援的 provider 前綴: - -| 前綴 | 供應商 | -| ------------------ | -------------------------------------- | -| `OPENAI_` | OpenAI | -| `ANTHROPIC_` | Anthropic | -| `GOOGLE_` | Google Gemini | -| `DEEPSEEK_` | DeepSeek | -| `QWEN_` | Alibaba Qwen | -| `KIMI_` | Moonshot Kimi | -| `MINIMAX_` | MiniMax(預設使用 Anthropic 相容端點) | -| `GLM_` | Zhipu GLM | -| `SILICONFLOW_` | SiliconFlow | -| `DOUBAO_` | Doubao(ByteDance) | -| `OPENROUTER_` | OpenRouter | -| `GROK_` | xAI Grok | -| `TENCENT_` | Tencent Hunyuan | -| `TENCENT_HUNYUAN_` | Tencent Hunyuan | -| `XIAOMI_` | Xiaomi MiMo | -| `MIMO_` | Xiaomi MiMo | -| `OLLAMA_` | Ollama(本機) | -| `LEMONADE_` | Lemonade(本機) | - -## 本機模型(Ollama) - -不需要 API key。把 base URL 寫在伺服器端,讓 OpenMAIC 繞過 SSRF 檢查: +如需連線其他 OpenAI 相容的 LLM 服務,請在 **設定 → 模型供應商** 中新增自訂 provider,並選擇對應的協議類型。 + +## 本機模型(Ollama 和 Lemonade) + +Ollama 和 Lemonade 不需要 API key;本機服務的 base URL 應寫在伺服器端設定中,以通過 SSRF 驗證: ```bash OLLAMA_BASE_URL=http://localhost:11434/v1 +# LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -生產環境會攔截由用戶端傳入的 localhost URL,所以必須在伺服器端設定。 +如需限制可用模型,可使用 `OLLAMA_MODELS` 或 `LEMONADE_MODELS` 指定模型白名單。 ## TTS 供應商 -伺服器端 TTS 供應商使用 `TTS__API_KEY`,可選 `TTS__BASE_URL`。 +伺服器端 TTS 供應商使用 `TTS__API_KEY`,並可選擇設定 `TTS__BASE_URL`。 ```bash # Doubao TTS(Volcengine Seed-TTS,原生 MP3) TTS_DOUBAO_API_KEY=appId:accessKey -TTS_DOUBAO_BASE_URL= # 選填覆蓋 +TTS_DOUBAO_BASE_URL= # 選填覆寫值 # Qwen TTS TTS_QWEN_API_KEY= -TTS_QWEN_BASE_URL= # 選填覆蓋 +TTS_QWEN_BASE_URL= # 選填覆寫值 # 任何 OpenAI 相容的 TTS 端點 TTS_OPENAI_API_KEY= TTS_OPENAI_BASE_URL= -# VoxCPM2(自託管 TTS,支援聲音複製,詳見 VoxCPM2 頁面) +# VoxCPM2(自託管 TTS,支援聲音複製,詳見 VoxCPM2 獨立頁面) TTS_VOXCPM_BASE_URL=http://localhost:8000 ``` -支援的 TTS 前綴包括 `TTS_MINIMAX_`、`TTS_DOUBAO_`、`TTS_OPENAI_`、`TTS_AZURE_`、`TTS_GLM_`、`TTS_QWEN_`、`TTS_VOXCPM_` 和 `TTS_ELEVENLABS_`。本機 Lemonade TTS 使用 `TTS_LEMONADE_BASE_URL`,不需要 API key。 +支援的 TTS 字首包括 `TTS_OPENAI_`、`TTS_AZURE_`、`TTS_GLM_`、`TTS_QWEN_`、`TTS_MINIMAX_`、`TTS_DOUBAO_`、`TTS_ELEVENLABS_`、`TTS_VOXCPM_` 和 `TTS_LEMONADE_`。本機 Lemonade TTS 和 VoxCPM2 不需要 API key。瀏覽器原生 TTS 不需要伺服器端設定。 + +管理員可以使用 `TTS__ENABLED=false` 在伺服器端強制關閉某個 TTS 供應商。VoxCPM2(自託管 TTS + 聲音複製)請見獨立的 [VoxCPM2](./voxcpm.mdx) 章節。 -VoxCPM2(自託管 TTS + 聲音複製)請見獨立的 [VoxCPM2](./voxcpm.mdx) 頁面。 +也可以在設定中新增自訂 OpenAI 相容 TTS provider,填寫 Base URL、模型和音色。這類自訂 provider 儲存在用戶端設定中,不透過任意 `TTS_*` 環境變數或 YAML provider ID 註冊。 ## ASR(語音轉文字) ```bash # OpenAI Whisper ASR_OPENAI_API_KEY= -ASR_OPENAI_BASE_URL= # 選填覆蓋 +ASR_OPENAI_BASE_URL= # 選填覆寫值 # Qwen ASR ASR_QWEN_API_KEY= -ASR_QWEN_BASE_URL= # 選填覆蓋 +ASR_QWEN_BASE_URL= # 選填覆寫值 + +# Azure ASR +ASR_AZURE_API_KEY= +ASR_AZURE_BASE_URL=https://{region}.api.cognitive.microsoft.com # Lemonade ASR(本機,不需要 key) ASR_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` +瀏覽器原生 ASR 不需要伺服器端設定。 + +也可以在設定中新增自訂 OpenAI 相容 ASR provider,填寫 Base URL、模型和支援語言;此設定會儲存在用戶端設定中。 + ## 圖像生成供應商 -圖像生成供應商使用 `IMAGE__API_KEY`,可選 `IMAGE__BASE_URL`。Lemonade 是本機服務,不需要 key: +圖像生成供應商使用 `IMAGE__API_KEY`,可選 `IMAGE__BASE_URL`。支援的字首包括: + +`IMAGE_OPENAI_`、`IMAGE_SEEDREAM_`、`IMAGE_QWEN_IMAGE_`、`IMAGE_NANO_BANANA_`、`IMAGE_MINIMAX_`、`IMAGE_GROK_` 和 `IMAGE_LEMONADE_`。 + +Lemonade 是本機服務,不需要 key: ```bash IMAGE_LEMONADE_BASE_URL=http://localhost:13305/v1 ``` -## ACCESS_CODE —— 全站密碼 +ComfyUI Image 不需要 API key,預設連線至 `http://localhost:8188`。在設定中填寫 ComfyUI Base URL,並將以 API 格式匯出的 workflow JSON 放入 OpenMAIC 的 `public/` 目錄;檔名使用 `comfyui-*.json` 或包含 `workflow`,設定頁會自動偵測這些檔案,並將其列為可選的 workflow。使用 Docker 部署時,還需要在建置映像前加入 workflow,或將單一 workflow 檔案掛載至容器的 `/app/public/` 目錄。由於 `comfyui-image` 不是伺服器端託管 provider,正式環境連線至主機上的 ComfyUI 時還需要設定 `ALLOW_LOCAL_NETWORKS=true`。 + +## 影片生成供應商 + +影片生成供應商使用 `VIDEO__API_KEY`,可選 `VIDEO__BASE_URL`。支援的字首包括: -對共享部署(內部 demo、課堂),可以設定存取碼,讓訪客先輸入密碼才能看到應用: +`VIDEO_SEEDANCE_`、`VIDEO_KLING_`、`VIDEO_VEO_`、`VIDEO_SORA_`、`VIDEO_MINIMAX_`、`VIDEO_GROK_` 和 `VIDEO_HAPPYHORSE_`。 + +## 文件和媒體解析 + +課程材料的實際格式取決於所選解析器。目前支援文字、PDF、Office 文件、圖片以及部分音訊與影片格式;不同 provider 支援的格式和功能各不相同。 ```bash -ACCESS_CODE=your-secret-code +# MinerU 自託管 +PDF_MINERU_BASE_URL=http://localhost:8888 + +# MinerU 自託管的可選後端 +PDF_MINERU_BACKEND=pipeline + +# MinerU Cloud +PDF_MINERU_CLOUD_API_KEY= +PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 + +# AliDocMind(使用 Alibaba Cloud AccessKey,而不是獨立的 API key) +ALIDOCMIND_ACCESS_KEY_ID= +ALIDOCMIND_ACCESS_KEY_SECRET= +ALIDOCMIND_BASE_URL= # 選填覆寫值 ``` -訪客只會被提示一次,密碼會存放在 HTTP-only cookie 中。留空則關閉。 +`unpdf` 內建於 OpenMAIC,可用於基礎 PDF 解析。Office 文件、圖片和需要 OCR、表格、公式或版面分析的材料,應選擇相容的 MinerU 或 AliDocMind provider。 + +AliDocMind 的文件解析支援 PDF、DOCX、PPTX、XLSX,以及 PNG、JPG/JPEG、BMP、GIF。目前音訊與影片材料僅支援透過 AliDocMind 解析:影片格式為 MP4、MOV、AVI、MKV、WMV,音訊格式為 MP3、WAV、AAC;不支援 M4A。 ## 聯網搜尋 -設定 Tavily、Bocha 或 MiniMax: +設定 Tavily、Bocha、Brave、Baidu、SearXNG 或 MiniMax: ```bash TAVILY_API_KEY= -TAVILY_BASE_URL= # 選填覆蓋 +TAVILY_BASE_URL= # 選填覆寫值 BOCHA_API_KEY= -BOCHA_BASE_URL= # 選填覆蓋 +BOCHA_BASE_URL= # 選填覆寫值 + +BAIDU_API_KEY= +BAIDU_BASE_URL=https://qianfan.baidubce.com # 選填覆寫值 + +# 自託管 SearXNG,不需要 API key +SEARXNG_BASE_URL= WEB_SEARCH_MINIMAX_API_KEY= -WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # 選填覆蓋 +WEB_SEARCH_MINIMAX_BASE_URL=https://api.minimaxi.com # 選填覆寫值 ``` -前端會提供一個開關,讓每次生成時選擇是否啟用搜尋。 +Brave 和 SearXNG 不需要 API key;前端可以在每次生成時選擇是否啟用搜尋。Grok 的聯網搜尋透過 Grok LLM 的搜尋工具提供,不是獨立的聯網搜尋 provider。 -## PDF 解析供應商 +## ACCESS_CODE —— 全站存取密碼 -對於版面複雜、包含公式或表格的 PDF,可以設定伺服器端解析器: +對於共享部署(內部 demo、課堂),可以設定存取碼,訪客必須先輸入密碼才能看到應用程式: ```bash -# MinerU 自託管 -PDF_MINERU_BASE_URL=http://localhost:8888 +ACCESS_CODE=your-secret-code +``` -# MinerU Cloud -PDF_MINERU_CLOUD_API_KEY= -PDF_MINERU_CLOUD_BASE_URL=https://mineru.net/api/v4 +訪客只會看到一次提示,密碼會儲存在 HTTP-only cookie 中。留空即可關閉此功能。 + +## 預設模型和模型路由 + +伺服器端 API 沒有收到用戶端模型時,需要透過 `DEFAULT_MODEL` 指定預設模型。模型寫法是 `provider:model-id`,例如: + +```bash +DEFAULT_MODEL=openai:gpt-5.5 ``` -未設定伺服器端解析器時,OpenMAIC 會回退到 `unpdf`。 +可以使用 `MODEL_ROUTES` 為不同生成階段指定模型;未設定的階段仍依用戶端模型和 `DEFAULT_MODEL` 解析。它是一個 JSON 物件,鍵為生成階段,值可以是模型字串,也可以是包含 `model` 和 `thinking` 的物件。完整的階段清單和範例請見儲存庫中的 [`.env.example`](https://github.com/THU-MAIC/OpenMAIC/blob/main/.env.example)。 + +## 功能開關 + +功能開關的值可設為 `true` 或 `1`,其他值都視為關閉。`NEXT_PUBLIC_*` 開關會在建置時編譯至用戶端,修改後需要重新建置: + +```bash +# MAIC Editor(Pro 模式) +NEXT_PUBLIC_MAIC_EDITOR_ENABLED=true + +# Pi 對話執行時 +NEXT_PUBLIC_PI_CHAT_ENABLED=true + +# 職業教育任務引擎(伺服器端開關) +OPENMAIC_ENABLE_VOCATIONAL=true + +# 顯示職業教育實驗開關 +NEXT_PUBLIC_SHOW_VOCATIONAL_TEST_UI=true + +# 顯示影片匯出入口 +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true + +# 顯示實驗性 PPTX 匯入入口 +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true +``` + +PPTX 匯入目前仍是實驗性入口,解析結果尚未完整整合至課堂資料流。以上 `NEXT_PUBLIC_*` 變數都是建置時開關;Docker 部署還需要透過 build args 傳入,不能只寫在容器執行時環境變數中。 + +## 其他伺服器端選項 + +以下伺服器端選項也可以透過環境變數設定: + +```bash +# 場景內容平行生成;0 或未設定表示依序生成 +PARALLEL_SCENE_CONCURRENCY=3 + +# 允許存取 localhost、內部網路等本機網路位址;僅用於自託管/內部網路部署 +ALLOW_LOCAL_NETWORKS=true + +# 可選的 MP4 渲染服務 +RENDER_SERVICE_URL=http://render-service:9000 + +# 日誌和推理 +LOG_LEVEL=info +LOG_FORMAT=pretty +LLM_THINKING_DISABLED=false +``` ## 使用 YAML 設定檔 -除了環境變數,你也可以把設定放在專案根目錄下的 `server-providers.yml`。伺服器啟動時會載入該檔案,區段與環境變數分類對應: +除了環境變數,也可以將程式碼中已註冊 provider 的設定放在專案根目錄下的 `server-providers.yml` 檔案中。伺服器啟動時會載入此檔案,其結構與環境變數分類相對應: ```yaml title="server-providers.yml" providers: @@ -148,8 +256,7 @@ providers: apiKey: sk-... baseUrl: https://api.openai.com/v1 models: - - gpt-4o - - gpt-4o-mini + - gpt-5.5 anthropic: apiKey: sk-ant-... @@ -164,36 +271,23 @@ asr: pdf: mineru: baseUrl: http://localhost:8888 + alidocmind: + accessKeyId: your-access-key-id + accessKeySecret: your-access-key-secret + +image: + seedream: + apiKey: ... + +video: + seedance: + apiKey: ... web-search: tavily: apiKey: tvly-... - minimax: - apiKey: sk-... - baseUrl: https://api.minimaxi.com + searxng: + baseUrl: http://localhost:8080 ``` -環境變數會逐欄位覆蓋 YAML 中對應的 provider 設定。鍵名使用 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`tavily` 或 `minimax`。 - -## 其他 provider 與服務端選項 - -自訂 OpenAI 相容的 LLM provider 可在設定中新增,不能透過任意環境變數前綴或未知的 `server-providers.yml` ID 註冊。自訂 OpenAI 相容的 TTS 與 ASR provider 也只能在用戶端設定中新增。 - -ComfyUI Image 會從 `public/` 掃描 workflow(檔名可用 `comfyui-*.json` 或包含 `workflow`),不需要 API key。Docker 生產環境連接主機 ComfyUI 時,請使用 `host.docker.internal:8188` 並設定 `ALLOW_LOCAL_NETWORKS=true`,否則 SSRF 防護會拒絕用戶端提供的本機網址。 - -文件解析支援文字、PDF、Office 文件、圖片及部分音訊/影片格式,具體取決於解析器。AliDocMind 支援 PDF、DOCX、PPTX、XLSX;PNG、JPG/JPEG、BMP、GIF;媒體則支援 MP4、MOV、AVI、MKV、WMV、MP3、WAV、AAC。 - -功能開關接受 `true` 或 `1`,其他值視為關閉。`NEXT_PUBLIC_*` 是建置時設定;Docker 部署時要以 build args 傳入,包括 `NEXT_PUBLIC_ENABLE_PPTX_IMPORT` 和 `NEXT_PUBLIC_ENABLE_VIDEO_EXPORT`。 - -Azure OpenAI 使用 `AZURE_OPENAI_API_KEY`、資源 endpoint(`AZURE_OPENAI_BASE_URL`)及 deployment name(`AZURE_OPENAI_MODELS`)。Ollama 與 Lemonade 是本機 provider,不需要 API key。圖片/影片生成、自訂 TTS/ASR、文件/媒體解析、SearXNG,以及 `DEFAULT_MODEL`/`MODEL_ROUTES` 均依 `.env.example` 的 provider 專用設定;SearXNG 只能由伺服器託管,Brave 不需要 key。 - -其他服務端選項: - -```bash -PARALLEL_SCENE_CONCURRENCY=3 # 0 或未設定:串行生成 -ALLOW_LOCAL_NETWORKS=true # 僅限自託管/內網部署 -RENDER_SERVICE_URL=http://render-service:9000 -LOG_LEVEL=info -LOG_FORMAT=pretty -LLM_THINKING_DISABLED=false -``` +環境變數會逐欄位覆蓋 YAML 中的同名 provider 設定。鍵名必須使用程式碼中已註冊的 provider ID,例如 `openai`、`doubao-tts`、`openai-whisper`、`mineru`、`alidocmind`、`seedream`、`seedance`、`tavily` 或 `searxng`;未知 ID 不能在這裡註冊為自訂 LLM provider。 diff --git a/packages/docs/content/docs/deployment.ar.mdx b/packages/docs/content/docs/deployment.ar.mdx index 03173af1d6..75d265cbbd 100644 --- a/packages/docs/content/docs/deployment.ar.mdx +++ b/packages/docs/content/docs/deployment.ar.mdx @@ -1,83 +1,116 @@ --- title: النشر -description: انشر OpenMAIC على Vercel أو Docker أو مضيفك الخاص. +description: نشر OpenMAIC إلى Vercel، Docker، أو مضيفك الخاص. --- -OpenMAIC هو تطبيق Next.js قياسي. يمكنك نشره في أي مكان يعمل فيه Next.js. +OpenMAIC هو تطبيق Next.js قياسي، حيث يمكن تشغيله في أي مكان يدعم Next.js. -## Vercel (نقرة واحدة) +## Vercel (بنقرة واحدة) -هذا هو المسار الأسرع. اضغط زر deploy في [README](https://github.com/THU-MAIC/OpenMAIC)، اعمل fork للمستودع، واملأ مفتاح LLM API واحدا على الأقل أثناء الإعداد. +أسرع مسار. اضغط على زر النشر في [README المستودع](https://github.com/THU-MAIC/OpenMAIC)، قم بعمل fork للمستودع، واملأ مفتاح API لموفر LLM واحد على الأقل حسب التعليمات. -يبني Vercel التطبيق مع كل commit ويقدّم static assets تلقائيا من edge network. +يقوم Vercel بإعادة بناء ونشر تطبيق Next.js مع كل commit. عند النشر، يجب تكوين مزود LLM واحد على الأقل في إعدادات المشروع. + +يستخدم نشر Vercel بشكل افتراضي التخزين الدائم على جانب المتصفح. إذا كنت بحاجة إلى تخزين دائم على الخادم، فاستخدم PostgreSQL خارجي وحل نشر على الخادم؛ ملف تعريف Compose `server-persistence` لا يمكن استخدامه مباشرة على Vercel. ## Docker -يتضمن المستودع `Dockerfile` جاهزا للإنتاج. ابنِ وشغّل: +يحتوي المستودع على `Dockerfile` مناسب للإنتاج. يستخدم داخل الصورة Node.js 22، قم بالبناء والتشغيل: ```bash docker build -t openmaic . -docker run -p 3000:3000 \ - -e OPENAI_API_KEY=sk-... \ - openmaic +docker run --env-file .env.local -p 3000:3000 openmaic ``` -يتم تضمين أعلام `NEXT_PUBLIC_*` في العميل أثناء بناء Docker. مررها كـ build args؛ ضبطها وقت تشغيل الحاوية فقط لا يكفي. +يوصى باستخدام تكوين Docker Compose الموجود في المستودع: ```bash -docker build \ - --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ - --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ - -t openmaic . +cp .env.example .env.local +# حرر .env.local وأدخل إعدادات مزود LLM واحد على الأقل، ثم: +docker compose up --build ``` -يشغّل ملف Compose باسم `video-export` خدمة التصيير، ويجب تفعيل علم البناء المقابل حتى يظهر مدخل التصدير في التطبيق. +يبدأ نشر Compose الافتراضي تطبيق OpenMAIC ويربط مجلد البيانات `openmaic-data`. يمكن تكوين مزودين ووظائف أخرى حسب الحاجة، راجع [شرح الإعدادات](./configuration.mdx). -عند استخدام إعداد provider من الخادم، اربط الملف إلى `/app/server-providers.yml`: +تُحقن مفاتيح التكوين `NEXT_PUBLIC_*` أثناء بناء Docker، ولا يمكن الاعتماد فقط على `.env.local` وقت التشغيل. على سبيل المثال، لتمكين تصدير الفيديو واستيراد PPTX التجريبي: -```yaml -volumes: - - ./server-providers.yml:/app/server-providers.yml:ro +```bash +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ +docker compose --profile video-export up --build ``` -داخل الحاوية، يشير `localhost` إلى حاوية OpenMAIC نفسها. للوصول إلى Ollama أو Lemonade أو VoxCPM أو ComfyUI على المضيف، استخدم `host.docker.internal`، وعلى Linux أضف عادة `extra_hosts: ["host.docker.internal:host-gateway"]`. عند استخدام ComfyUI على المضيف عبر `host.docker.internal:8188`، اضبط `ALLOW_LOCAL_NETWORKS=true` لأن `comfyui-image` ليس provider مُدارا من الخادم، وإلا سيرفض production SSRF guard العنوان. +يمكن تمرير مفاتيح وظائف العميل الأخرى بنفس الطريقة. إذا استخدمت `docker build`، فاستخدم `--build-arg` المقابلة. -للإعدادات متعددة الحاويات (مع reverse proxy أو خدمات أخرى بجانبه)، استخدم `docker-compose`: +إذا كنت تستخدم إعداد مزود من الخادم، قم بربط الملف داخل الحاوية على المسار الثابت: -```yaml title="docker-compose.yml" +```yaml services: openmaic: - image: openmaic:latest - ports: - - '3000:3000' - env_file: - - .env.local - restart: unless-stopped + volumes: + - ./server-providers.yml:/app/server-providers.yml:ro ``` -## الاستضافة الذاتية على VM +يشير `localhost` داخل حاوية Docker إلى الحاوية نفسها. إذا كانت خدمات مثل Ollama أو Lemonade أو VoxCPM أو ComfyUI تعمل على المضيف، فاستخدم `host.docker.internal`، مثل `http://host.docker.internal:11434/v1` أو `http://host.docker.internal:8188`. على Linux، عادةً ما تحتاج إلى إضافة `extra_hosts: ["host.docker.internal:host-gateway"]` لخدمة `openmaic`. ComfyUI ليست مزودًا مُدارًا من الخادم، لذا في بيئة الإنتاج يجب تعيين `ALLOW_LOCAL_NETWORKS=true` لتجنب رفض الحماية من SSRF لهذا العنوان. -ابنِ وابدأ باستخدام `pnpm`: +## الاستضافة الذاتية على جهاز افتراضي + +يحتاج المضيف إلى Node.js `20.9.0` أو أحدث، وpnpm `10.28.0`. قم بالبناء والتشغيل باستخدام `pnpm`: ```bash pnpm install pnpm build -pnpm start # يستمع على port 3000 افتراضيا +pnpm start # يستمع على المنفذ 3000 افتراضياً ``` -ضع nginx أو Caddy أمامه لإنهاء TLS. للصفوف ذات الزيارات العالية، فكّر في تشغيل عدة app instances خلف load balancer — OpenMAIC عديم الحالة افتراضيا (الحالة محفوظة في IndexedDB داخل المتصفح). +ضع nginx أو Caddy أمام التطبيق لإنهاء TLS. بشكل افتراضي، يتم حفظ حالة الدروس في IndexedDB داخل المتصفح؛ عند تمكين التخزين الدائم على الخادم، يتم حفظ بيانات التشغيل ومستندات الدروس في التخزين على الخادم وPostgreSQL. قبل نشر عدة نسخ، يجب اختيار حل التخزين الدائم المناسب. -## متغيرات البيئة +## التخزين الدائم على الخادم (PostgreSQL) + +يبدأ ملف تعريف `server-persistence` في المستودع حاويتين: OpenMAIC وPostgreSQL. واجهة برمجة التطبيقات للتخزين الدائم مضمنة في OpenMAIC ولا تحتاج إلى خدمة تخزين منفصلة. + +أضف اتصال قاعدة البيانات ورمز التطوير في `.env.local`: + +```bash +DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic +PERSISTENCE_DEV_TOKEN=openmaic-local-dev +``` + +ثم شغّل ملف التعريف: + +```bash +NEXT_PUBLIC_PERSISTENCE=1 \ +NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \ +docker compose --profile server-persistence up --build +``` + +`NEXT_PUBLIC_PERSISTENCE` و`NEXT_PUBLIC_PERSISTENCE_TOKEN` هما متغيرات بناء ويجب أن تتطابق مع إعدادات الخادم وقت التشغيل. رمز التطوير `PERSISTENCE_DEV_TOKEN` مناسب فقط للنشر المحلي أو الشبكات الموثوقة، ولا يوفر عزلاً حقيقياً للمستخدمين، ولا ينبغي استخدامه كآلية مصادقة في بيئة الإنتاج العامة. + +يتم حفظ بيانات PostgreSQL في مجلد `openmaic-postgres`. يتم تعيين كلمة مرور `PERSISTENCE_POSTGRES_PASSWORD` فقط عند التهيئة الأولى لقاعدة البيانات، ولا يتم تعديلها تلقائياً عند تغيير متغير البيئة لاحقاً. + +إذا لم يتم تعيين `NEXT_PUBLIC_PERSISTENCE`, فسيستمر التطبيق في استخدام التخزين الدائم على جانب المتصفح كما كان. + +## اختياري: تصدير فيديو MP4 + +تقوم ميزة "تصدير الفيديو" أولاً بإنشاء مشروع Hyperframes مستقل في المتصفح، ثم يستخدم خدمة `render-service` المستقلة Chromium وFFmpeg لتصيير MP4. هذه الخدمة اختيارية ولا تؤثر على إنشاء الدروس العادي. -راجع [الإعدادات](./configuration.mdx) للقائمة الكاملة. تحتاج على الأقل إلى key لموفر LLM واحد. +لتفعيل ملف التعريف `video-export`: + +```bash +docker compose --profile video-export up --build +``` + +يتيح Compose لـ OpenMAIC الاتصال بخدمة التصيير عبر `RENDER_SERVICE_URL`. إذا لم يتم تفعيل هذا الملف التعريفي أو كانت خدمة التصيير غير متاحة، يتحول التصدير إلى تنزيل مشروع ZIP للتصيير المحلي عبر CLI. تستخدم خدمة التصيير شبكة معزولة وتتطلب قدرة `NET_ADMIN` عند التشغيل؛ لمزيد من القيود وطرق النشر المستقلة، راجع [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md). + +## متغيرات البيئة -## التحكم بالوصول +للحصول على قائمة كاملة بمتغيرات البيئة وإعدادات المزودين، راجع [شرح الإعدادات](./configuration.mdx). يجب تكوين مفتاح مزود LLM واحد على الأقل. -للعروض المشتركة، اضبط `ACCESS_CODE` لحماية الموقع كله بكلمة مرور. راجع [الإعدادات](./configuration.mdx). +## التحكم في الوصول -## Profiles اختيارية +يمكن تعيين `ACCESS_CODE` لحماية العرض التوضيحي المشترك بكلمة مرور على مستوى الموقع. راجع [شرح الإعدادات → ACCESS_CODE](./configuration.mdx#access_code--كلمة-مرور-على-مستوى-الموقع). -يشغّل Compose profile `server-persistence` تطبيق OpenMAIC مع PostgreSQL. اضبط `DATABASE_URL` و`PERSISTENCE_DEV_TOKEN` وقيم البناء `NEXT_PUBLIC_PERSISTENCE` و`NEXT_PUBLIC_PERSISTENCE_TOKEN`؛ إعداد dev token مناسب للشبكات المحلية أو الموثوقة فقط. يشغّل profile `video-export` خدمة التصيير وينشئ MP4، وبدونه يعود التصدير إلى project ZIP للتصيير المحلي. راجع `render-service/README.md` للمتطلبات. +## خدمات الاستضافة الذاتية الاختيارية -راجع [VoxCPM2](./voxcpm.mdx) لإعداد TTS ذاتي الاستضافة واستنساخ الصوت. +- [VoxCPM2: استضافة ذاتية لتحويل النص إلى كلام واستنساخ الصوت →](./voxcpm.mdx) diff --git a/packages/docs/content/docs/deployment.ja.mdx b/packages/docs/content/docs/deployment.ja.mdx index 541f514816..ca50cae2d6 100644 --- a/packages/docs/content/docs/deployment.ja.mdx +++ b/packages/docs/content/docs/deployment.ja.mdx @@ -3,81 +3,114 @@ title: デプロイ description: OpenMAIC を Vercel、Docker、または自分のホストにデプロイします。 --- -OpenMAIC は標準的な Next.js アプリです。Next.js が動作する場所ならどこにでもデプロイできます。 +OpenMAIC は標準的な Next.js アプリケーションであり、Next.js が動作する環境であればどこでも動作します。 -## Vercel(ワンクリック) +## Vercel(一括デプロイ) -最短の方法です。[README](https://github.com/THU-MAIC/OpenMAIC) の deploy ボタンをクリックし、リポジトリを fork して、セットアップ中に少なくとも 1 つの LLM API key を入力します。 +最速の方法です。[リポジトリの README](https://github.com/THU-MAIC/OpenMAIC) にある Deploy ボタンをクリックし、リポジトリをフォークして、案内に従い少なくとも 1 つの LLM API キーを入力してください。 -Vercel は各コミットでビルドし、静的アセットを自動的にエッジネットワークから配信します。 +Vercel は各コミットごとに Next.js アプリを再ビルド・再デプロイします。デプロイ時にはプロジェクト設定で少なくとも 1 つの LLM プロバイダーを設定する必要があります。 + +Vercel のデプロイはデフォルトでブラウザ側の永続化を使用します。サーバー側の永続化が必要な場合は、外部の PostgreSQL とサーバー側のデプロイ方法を利用してください。`server-persistence` Compose プロファイルは Vercel では直接利用できません。 ## Docker -本番向けの `Dockerfile` が含まれています。ビルドして実行します。 +リポジトリには本番向けの `Dockerfile` が含まれています。イメージは Node.js 22 を使用しています。ビルドして実行します: ```bash docker build -t openmaic . -docker run -p 3000:3000 \ - -e OPENAI_API_KEY=sk-... \ - openmaic +docker run --env-file .env.local -p 3000:3000 openmaic ``` -`NEXT_PUBLIC_*` feature flag は Docker のビルド時にクライアントへコンパイルされます。build args として渡してください。コンテナ実行時だけ設定しても反映されません。例: +リポジトリにある Docker Compose 設定の利用を推奨します: ```bash -docker build \ - --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ - --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ - -t openmaic . +cp .env.example .env.local +# .env.local を編集し、少なくとも 1 つの LLM プロバイダーの設定を入力したら: +docker compose up --build ``` -Compose の `video-export` profile は render service を起動します。アプリに export の入口を表示するには対応する build flag も有効にしてください。 +デフォルトの Compose デプロイは OpenMAIC アプリを起動し、`openmaic-data` ボリュームをマウントします。その他のプロバイダーや機能は必要に応じて設定してください。詳細は[設定説明](./configuration.mdx)を参照してください。 -server-side provider 設定を使う場合は `/app/server-providers.yml` に mount します: +`NEXT_PUBLIC_*` の機能フラグは Docker ビルド時に注入されるため、実行時の `.env.local` に書くだけでは反映されません。例えば動画エクスポートと実験的な PPTX インポートを有効にする場合: -```yaml -volumes: - - ./server-providers.yml:/app/server-providers.yml:ro +```bash +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ +docker compose --profile video-export up --build ``` -コンテナ内の `localhost` は OpenMAIC コンテナ自身を指します。ホスト上の Ollama、Lemonade、VoxCPM、ComfyUI へ接続する場合は `host.docker.internal` を使い、Linux では通常 `extra_hosts: ["host.docker.internal:host-gateway"]` も追加します。ホストの ComfyUI (`host.docker.internal:8188`) には `ALLOW_LOCAL_NETWORKS=true` が必要です。`comfyui-image` は server-managed provider ではないため、本番の SSRF 保護がこの URL を拒否します。 +他のクライアント機能フラグも同様に渡せます。`docker build` を使う場合は対応する `--build-arg` を利用してください。 -リバースプロキシや他サービスを含むマルチコンテナ構成では `docker-compose` を使います。 +サーバー側プロバイダー設定を使う場合は、設定ファイルをコンテナ内の固定パスにマウントします: -```yaml title="docker-compose.yml" +```yaml services: openmaic: - image: openmaic:latest - ports: - - '3000:3000' - env_file: - - .env.local - restart: unless-stopped + volumes: + - ./server-providers.yml:/app/server-providers.yml:ro ``` -## VM にセルフホストする +Docker コンテナ内の `localhost` はコンテナ自身を指します。ホスト上で Ollama、Lemonade、VoxCPM、ComfyUI を動かしている場合は `host.docker.internal` を使ってください。例:`http://host.docker.internal:11434/v1` や `http://host.docker.internal:8188`。Linux の Docker では通常、`openmaic` サービスに対して `extra_hosts: ["host.docker.internal:host-gateway"]` の追加が必要です。ComfyUI は現状サーバー管理型プロバイダーではないため、本番環境では `ALLOW_LOCAL_NETWORKS=true` を設定しないと SSRF 保護によりアクセスが拒否されます。 -`pnpm` でビルドして起動します。 +## 自前の仮想マシンでのセルフホスト + +ホストには Node.js `20.9.0` 以上と pnpm `10.28.0` が必要です。`pnpm` でビルドして起動します: ```bash pnpm install pnpm build -pnpm start # 既定では port 3000 で待ち受けます +pnpm start # デフォルトでポート 3000 をリッスンします +``` + +TLS 終端は nginx や Caddy などを前段に置いてください。デフォルトでは授業の状態はブラウザの IndexedDB に保存されます。サーバー側永続化を有効にすると、実行時データや授業ドキュメントはサーバー側ストレージと PostgreSQL に保存されます。複数インスタンスでの運用を検討する場合は、適切な永続化方式を選択してください。 + +## サーバー側永続化(PostgreSQL) + +リポジトリの `server-persistence` プロファイルは OpenMAIC と PostgreSQL の 2 つのコンテナを起動します。永続化用の HTTP API は OpenMAIC に組み込まれており、追加の永続化サービスは不要です。 + +まず `.env.local` にデータベース接続情報と開発用トークンを追加します: + +```bash +DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic +PERSISTENCE_DEV_TOKEN=openmaic-local-dev +``` + +次にプロファイルを起動します: + +```bash +NEXT_PUBLIC_PERSISTENCE=1 \ +NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \ +docker compose --profile server-persistence up --build ``` -TLS 終端には前段に nginx または Caddy を置いてください。トラフィックの多い授業では、ロードバランサー配下で複数のアプリインスタンスを動かす構成を検討できます。OpenMAIC は既定でステートレスです(状態はブラウザーの IndexedDB に保存されます)。 +`NEXT_PUBLIC_PERSISTENCE` と `NEXT_PUBLIC_PERSISTENCE_TOKEN` はビルド時の変数であり、実行時のサーバー設定と一致させる必要があります。`PERSISTENCE_DEV_TOKEN` 方式はローカルまたは信頼できるネットワーク向けであり、真のユーザー分離は提供しません。公開本番環境の認証方式としては推奨されません。 + +PostgreSQL のデータは `openmaic-postgres` ボリュームに保存されます。`PERSISTENCE_POSTGRES_PASSWORD` はデータベースディレクトリ初回初期化時にのみパスワードを設定し、その後の環境変数変更では既存ユーザーのパスワードは自動的に変更されません。 + +`NEXT_PUBLIC_PERSISTENCE` を設定しなければ、従来通りブラウザ側の永続化が維持されます。 + +## オプション:MP4 動画エクスポート + +「動画エクスポート」機能は、まずブラウザで自己完結型の Hyperframes プロジェクトを生成し、独立した `render-service` が Chromium と FFmpeg を使って MP4 にレンダリングします。このサービスは任意であり、通常の授業生成には影響しません。 + +`video-export` プロファイルを有効にします: + +```bash +docker compose --profile video-export up --build +``` + +Compose は `RENDER_SERVICE_URL` を通じて OpenMAIC とレンダリングサービスを接続します。このプロファイルを有効にしないか、レンダリングサービスが利用できない場合は、エクスポートはプロジェクト ZIP のダウンロードにフォールバックし、ローカル CLI でのレンダリングを想定します。レンダリングサービスは分離されたネットワークで動作し、起動時に `NET_ADMIN` 権限が必要です。詳細や独立デプロイ方法はリポジトリの [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md) を参照してください。 ## 環境変数 -完全な一覧は[設定](./configuration.mdx)を参照してください。最低限、1 つの LLM プロバイダー key が必要です。 +完全な環境変数とプロバイダー設定は[設定説明](./configuration.mdx)を参照してください。最低でも 1 つの LLM プロバイダーのキーを設定する必要があります。 ## アクセス制御 -共有デモでは `ACCESS_CODE` を設定して、サイト全体をパスワードで保護できます。詳しくは[設定](./configuration.mdx)を参照してください。 - -## オプション profile +共有デモでは `ACCESS_CODE` を設定してサイト全体にパスワードをかけることができます。詳細は[設定説明 → ACCESS_CODE](./configuration.mdx#access_code--サイト全体のパスワード)を参照してください。 -`server-persistence` Compose profile は OpenMAIC と PostgreSQL を起動します。`DATABASE_URL`、`PERSISTENCE_DEV_TOKEN`、ビルド時の `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN` を設定してください。dev token はローカルまたは信頼できるネットワーク向けです。`video-export` profile は render service を起動して MP4 を生成します。無効時はローカル render 用の project ZIP にフォールバックします。要件は `render-service/README.md` を参照してください。 +## オプションのセルフホストサービス -セルフホスト TTS と音声クローンは [VoxCPM2](./voxcpm.mdx) を参照してください。 +- [VoxCPM2:セルフホスト TTS と音声クローン →](./voxcpm.mdx) diff --git a/packages/docs/content/docs/deployment.mdx b/packages/docs/content/docs/deployment.mdx index d1b02ab0c6..5ef237fadf 100644 --- a/packages/docs/content/docs/deployment.mdx +++ b/packages/docs/content/docs/deployment.mdx @@ -3,62 +3,60 @@ title: Deployment description: Deploy OpenMAIC to Vercel, Docker, or your own host. --- -OpenMAIC is a standard Next.js app. You can deploy it anywhere Next.js runs. +OpenMAIC is a standard Next.js application. It runs anywhere Next.js runs. ## Vercel (one click) -The fastest path. Click the deploy button in the [README](https://github.com/THU-MAIC/OpenMAIC), fork the repo, and fill in at least one LLM API key during setup. +The fastest path is the Deploy button in the [repository README](https://github.com/THU-MAIC/OpenMAIC). Fork the repository and enter an API key for at least one LLM when prompted. -Vercel builds on each commit and serves static assets from its edge network automatically. +Vercel rebuilds and deploys the Next.js application after every commit. Configure at least one LLM provider in the project settings for deployment. + +Vercel deployments use browser-side persistence by default. For server-side persistence, use an external PostgreSQL database and a server deployment; the `server-persistence` Compose profile cannot be used directly with Vercel. ## Docker -A production-ready `Dockerfile` is included. Build and run: +The repository includes a production-ready `Dockerfile`. The image uses Node.js 22 internally. Build and run it with: ```bash docker build -t openmaic . -docker run -p 3000:3000 \ - -e OPENAI_API_KEY=sk-... \ - openmaic +docker run --env-file .env.local -p 3000:3000 openmaic ``` -The `NEXT_PUBLIC_*` flags are compiled into the client during the Docker build. Pass them as build arguments; setting them only at container runtime has no effect. For example: +We recommend the repository's Docker Compose configuration: ```bash -docker build \ - --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ - --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ - -t openmaic . +cp .env.example .env.local +# Edit .env.local and configure at least one LLM provider, then: +docker compose up --build ``` -The Compose `video-export` profile starts the render service; enable the corresponding build flag to show the export entry in the app. +The default Compose deployment starts the OpenMAIC app and mounts the `openmaic-data` volume. Configure other providers and features as needed; see [Configuration](./configuration.mdx). -If you use server-side provider configuration, mount it at `/app/server-providers.yml`: +`NEXT_PUBLIC_*` feature flags are injected at Docker build time and cannot be set only in the runtime `.env.local`. For example, to enable video export and experimental PPTX import: -```yaml -volumes: - - ./server-providers.yml:/app/server-providers.yml:ro +```bash +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ +docker compose --profile video-export up --build ``` -Inside a container, `localhost` refers to the OpenMAIC container. For Ollama, Lemonade, VoxCPM, or ComfyUI running on the host, use `host.docker.internal` (and on Linux add `extra_hosts: ["host.docker.internal:host-gateway"]`). For a host-side ComfyUI at `host.docker.internal:8188`, set `ALLOW_LOCAL_NETWORKS=true` because `comfyui-image` is not server-managed and production SSRF protection otherwise rejects the URL. +Other client-side feature flags can be passed in the same way. When using `docker build`, use the corresponding `--build-arg` options instead. -For multi-container setups (with a reverse proxy or other services alongside), use `docker-compose`: +To use a server-side provider configuration, mount the file at its fixed container path: -```yaml title="docker-compose.yml" +```yaml services: openmaic: - image: openmaic:latest - ports: - - '3000:3000' - env_file: - - .env.local - restart: unless-stopped + volumes: + - ./server-providers.yml:/app/server-providers.yml:ro ``` +Inside a Docker container, `localhost` refers to the container itself. If Ollama, Lemonade, VoxCPM, or ComfyUI runs on the host, use `host.docker.internal`, for example `http://host.docker.internal:11434/v1` or `http://host.docker.internal:8188`. Linux Docker usually also requires `extra_hosts: ["host.docker.internal:host-gateway"]` on the `openmaic` service. Because ComfyUI is not currently a server-managed provider, production deployments must also set `ALLOW_LOCAL_NETWORKS=true`, or the SSRF guard will reject the address. + ## Self-host on a VM -Build and start with `pnpm`: +The host needs Node.js `20.9.0` or later and pnpm `10.28.0`. Build and start with `pnpm`: ```bash pnpm install @@ -66,18 +64,53 @@ pnpm build pnpm start # listens on port 3000 by default ``` -Put nginx or Caddy in front for TLS termination. For high-traffic classrooms, consider running multiple app instances behind a load balancer — OpenMAIC is stateless by default (state lives in the browser's IndexedDB). +Put nginx or Caddy in front for TLS termination. By default, classroom state is stored in browser IndexedDB. With server-side persistence enabled, runtime data and course documents are stored in server storage and PostgreSQL. Choose an appropriate persistence strategy before deploying multiple instances. + +## Server-side persistence (PostgreSQL) + +The repository's `server-persistence` profile starts OpenMAIC and PostgreSQL in two containers. The persistence HTTP API is embedded in OpenMAIC; no separate persistence service is required. + +First add the database connection and development token to `.env.local`: + +```bash +DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic +PERSISTENCE_DEV_TOKEN=openmaic-local-dev +``` + +Then start the profile: + +```bash +NEXT_PUBLIC_PERSISTENCE=1 \ +NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \ +docker compose --profile server-persistence up --build +``` + +`NEXT_PUBLIC_PERSISTENCE` and `NEXT_PUBLIC_PERSISTENCE_TOKEN` are build-time variables and must match the server-side runtime configuration. `PERSISTENCE_DEV_TOKEN` is suitable only for local or trusted private-network deployments. It does not provide real user isolation and must not be used directly as authentication for a public production deployment. + +PostgreSQL data is stored in the `openmaic-postgres` volume. `PERSISTENCE_POSTGRES_PASSWORD` sets the password only when the database directory is first initialized. Changing the environment variable later does not automatically change the existing database user's password. + +Leave `NEXT_PUBLIC_PERSISTENCE` unset to keep the original browser-side persistence behavior. + +## Optional: MP4 video export + +The “Export video” feature first generates a self-contained Hyperframes project in the browser, then sends it to a separate `render-service` that uses Chromium and FFmpeg to render an MP4. The service is optional and does not affect normal classroom generation. + +Enable the `video-export` profile: + +```bash +docker compose --profile video-export up --build +``` + +Compose connects OpenMAIC to the rendering service through `RENDER_SERVICE_URL`. If the profile is disabled or the rendering service is unavailable, export falls back to downloading the project ZIP for rendering with the local CLI. The rendering service uses an isolated network and requires the `NET_ADMIN` capability at startup. See [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md) for more limitations and standalone deployment instructions. ## Environment variables -See [Configuration](./configuration.mdx) for the full list. At minimum you need one LLM provider key. +See [Configuration](./configuration.mdx) for the complete environment variables and provider configuration. You must configure a key for at least one LLM provider. ## Access control -For shared demos, set `ACCESS_CODE` to gate the whole site behind a password. See [Configuration → ACCESS_CODE](./configuration.mdx#access_code--site-wide-password). - -## Optional profiles +Shared demos can use `ACCESS_CODE` to put a password gate in front of the entire site. See [Configuration → ACCESS_CODE](./configuration.mdx#access_code--site-wide-password). -The `server-persistence` Compose profile runs OpenMAIC with PostgreSQL. Set `DATABASE_URL`, `PERSISTENCE_DEV_TOKEN`, and the build-time `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN` values; the dev-token setup is for local or trusted networks. The `video-export` profile starts the render service and produces MP4; without it, export falls back to a project ZIP for local rendering. See `render-service/README.md` for its requirements. +## Optional self-hosted services -For self-hosted TTS and voice cloning, see [VoxCPM2](./voxcpm.mdx). +- [VoxCPM2: self-hosted TTS and voice cloning →](./voxcpm.mdx) diff --git a/packages/docs/content/docs/deployment.ru.mdx b/packages/docs/content/docs/deployment.ru.mdx index 0d43734b53..91372375bb 100644 --- a/packages/docs/content/docs/deployment.ru.mdx +++ b/packages/docs/content/docs/deployment.ru.mdx @@ -3,81 +3,114 @@ title: Развертывание description: Разверните OpenMAIC на Vercel, Docker или собственном хосте. --- -OpenMAIC — стандартное приложение Next.js. Его можно развернуть везде, где запускается Next.js. +OpenMAIC — это стандартное приложение Next.js, которое можно запускать везде, где поддерживается Next.js. -## Vercel (one click) +## Vercel (один клик) -Самый быстрый путь. Нажмите кнопку deploy в [README](https://github.com/THU-MAIC/OpenMAIC), fork репозиторий и укажите как минимум один LLM API key во время настройки. +Самый быстрый способ. Нажмите кнопку Deploy в [README репозитория](https://github.com/THU-MAIC/OpenMAIC), сделайте fork репозитория и введите минимум один API ключ LLM по инструкции. -Vercel собирает приложение на каждом commit и автоматически раздает статические assets через edge network. +Vercel автоматически пересобирает и разворачивает Next.js приложение при каждом коммите. Для деплоя необходимо в настройках проекта указать хотя бы одного LLM провайдера. + +По умолчанию Vercel использует браузерное хранение данных. Если нужна серверная персистентность, используйте внешний PostgreSQL и серверный способ развертывания; профиль Compose `server-persistence` не подходит для Vercel. ## Docker -В репозитории есть production-ready `Dockerfile`. Соберите и запустите: +В репозитории есть production-ready `Dockerfile`. В образе используется Node.js 22. Соберите и запустите: ```bash docker build -t openmaic . -docker run -p 3000:3000 \ - -e OPENAI_API_KEY=sk-... \ - openmaic +docker run --env-file .env.local -p 3000:3000 openmaic ``` -Флаги `NEXT_PUBLIC_*` компилируются в клиент во время сборки Docker. Передавайте их как build args: настройка только во время запуска контейнера не действует. +Рекомендуется использовать Docker Compose из репозитория: ```bash -docker build \ - --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ - --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ - -t openmaic . +cp .env.example .env.local +# Отредактируйте .env.local, указав минимум одного LLM провайдера, затем: +docker compose up --build ``` -Профиль Compose `video-export` запускает render service; соответствующий build flag также нужен, чтобы пункт экспорта отображался в приложении. +По умолчанию Compose запускает OpenMAIC и монтирует volume `openmaic-data`. Другие провайдеры и функции настраиваются по необходимости, подробности в [Конфигурации](./configuration.mdx). -Конфигурацию server-side provider монтируйте в `/app/server-providers.yml`: +Флаги `NEXT_PUBLIC_*` внедряются во время сборки Docker, их нельзя просто указать в `.env.local` при запуске. Например, чтобы включить экспорт видео и экспериментальный импорт PPTX: -```yaml -volumes: - - ./server-providers.yml:/app/server-providers.yml:ro +```bash +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ +docker compose --profile video-export up --build ``` -В контейнере `localhost` означает сам контейнер OpenMAIC. Для Ollama, Lemonade, VoxCPM или ComfyUI на хосте используйте `host.docker.internal`; в Linux обычно добавьте `extra_hosts: ["host.docker.internal:host-gateway"]`. Для ComfyUI на хосте по адресу `host.docker.internal:8188` задайте `ALLOW_LOCAL_NETWORKS=true`: `comfyui-image` не является server-managed provider, поэтому production SSRF guard иначе отклонит URL. +Другие клиентские флаги можно передавать аналогично. При использовании `docker build` применяйте соответствующие `--build-arg`. -Для multi-container setups (например, с reverse proxy или другими сервисами рядом) используйте `docker-compose`: +Для конфигурации серверных провайдеров смонтируйте файл в контейнер по фиксированному пути: -```yaml title="docker-compose.yml" +```yaml services: openmaic: - image: openmaic:latest - ports: - - '3000:3000' - env_file: - - .env.local - restart: unless-stopped + volumes: + - ./server-providers.yml:/app/server-providers.yml:ro ``` -## Self-host на VM +В Docker контейнере `localhost` указывает на сам контейнер. Если Ollama, Lemonade, VoxCPM или ComfyUI запущены на хосте, используйте `host.docker.internal`, например `http://host.docker.internal:11434/v1` или `http://host.docker.internal:8188`. В Linux обычно также нужно добавить `extra_hosts: ["host.docker.internal:host-gateway"]` для сервиса `openmaic`. ComfyUI пока не является серверным провайдером, поэтому в продакшене нужно задать `ALLOW_LOCAL_NETWORKS=true`, иначе SSRF-защита отклонит запросы к этому адресу. -Соберите и запустите через `pnpm`: +## Самостоятельный хостинг на виртуальной машине + +Требуется Node.js версии не ниже `20.9.0` и pnpm `10.28.0`. Соберите и запустите через `pnpm`: ```bash pnpm install pnpm build -pnpm start # по умолчанию слушает port 3000 +pnpm start # по умолчанию слушает порт 3000 +``` + +Рекомендуется поставить nginx или Caddy для TLS termination перед приложением. По умолчанию состояние курсов хранится в IndexedDB браузера; при включении серверной персистентности данные и документы сохраняются на сервере и в PostgreSQL. Для многократного запуска экземпляров выберите подходящую схему персистентности. + +## Серверная персистентность (PostgreSQL) + +Профиль `server-persistence` запускает OpenMAIC и PostgreSQL в двух контейнерах. HTTP API персистентности встроено в OpenMAIC, отдельный сервис не требуется. + +Добавьте в `.env.local` параметры подключения к базе и токен для разработки: + +```bash +DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic +PERSISTENCE_DEV_TOKEN=openmaic-local-dev +``` + +Запустите профиль: + +```bash +NEXT_PUBLIC_PERSISTENCE=1 \ +NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \ +docker compose --profile server-persistence up --build ``` -Поставьте nginx или Caddy перед приложением для TLS termination. Для классов с высоким трафиком можно запускать несколько app instances за load balancer — OpenMAIC по умолчанию stateless (состояние хранится в IndexedDB браузера). +`NEXT_PUBLIC_PERSISTENCE` и `NEXT_PUBLIC_PERSISTENCE_TOKEN` — переменные сборки, должны совпадать с серверной конфигурацией. Схема с `PERSISTENCE_DEV_TOKEN` подходит только для локальной или доверенной сети, не обеспечивает полноценной изоляции пользователей и не предназначена для публичного продакшена. + +Данные PostgreSQL хранятся в volume `openmaic-postgres`. Пароль `PERSISTENCE_POSTGRES_PASSWORD` задаётся только при первой инициализации базы, последующие изменения переменной не меняют пароль существующего пользователя. + +Если не задавать `NEXT_PUBLIC_PERSISTENCE`, сохраняется стандартное браузерное хранение. + +## Опционально: экспорт MP4 видео + +Функция «Экспорт видео» сначала создаёт в браузере автономный проект Hyperframes, затем отдельный `render-service` с Chromium и FFmpeg рендерит MP4. Этот сервис необязателен и не влияет на обычное создание курсов. + +Включите профиль `video-export`: + +```bash +docker compose --profile video-export up --build +``` + +Compose передаёт OpenMAIC URL рендер-сервиса через `RENDER_SERVICE_URL`. Если профиль не включён или сервис недоступен, экспорт возвращается к скачиванию ZIP проекта для локального рендеринга через CLI. Рендер-сервис работает в изолированной сети и требует capability `NET_ADMIN` при запуске; подробности и отдельные варианты развертывания — в [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md). ## Переменные окружения -Полный список смотрите в [Конфигурации](./configuration.mdx). Минимально нужен key одного LLM provider. +Полный список переменных и конфигураций провайдеров смотрите в [Конфигурации](./configuration.mdx). Необходимо указать минимум один ключ LLM провайдера. ## Контроль доступа -Для общих demo задайте `ACCESS_CODE`, чтобы закрыть весь сайт паролем. См. [Конфигурацию](./configuration.mdx). - -## Необязательные профили +Для общих демо можно задать `ACCESS_CODE`, чтобы закрыть сайт паролем. Подробнее в [Конфигурации → ACCESS_CODE](./configuration.mdx#access_code--пароль-для-всего-сайта). -Compose profile `server-persistence` запускает OpenMAIC и PostgreSQL. Задайте `DATABASE_URL`, `PERSISTENCE_DEV_TOKEN` и build-time значения `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN`; dev token предназначен для локальных или доверенных сетей. Profile `video-export` запускает render service и создаёт MP4, а без него экспорт возвращается к project ZIP для локального рендеринга. Требования см. в `render-service/README.md`. +## Опциональные самохостинг сервисы -Self-hosted TTS и клонирование голоса описаны в [VoxCPM2](./voxcpm.mdx). +- [VoxCPM2: самохостинг TTS и клонирование голоса →](./voxcpm.mdx) diff --git a/packages/docs/content/docs/deployment.zh-tw.mdx b/packages/docs/content/docs/deployment.zh-tw.mdx index 2d9bd8ebfe..342dc36ffa 100644 --- a/packages/docs/content/docs/deployment.zh-tw.mdx +++ b/packages/docs/content/docs/deployment.zh-tw.mdx @@ -1,64 +1,62 @@ --- title: 部署 -description: 將 OpenMAIC 部署到 Vercel、Docker,或你自己的主機。 +description: 部署 OpenMAIC 到 Vercel、Docker,或你自己的主機。 --- -OpenMAIC 是標準的 Next.js 應用程式。任何能執行 Next.js 的地方都可以部署。 +OpenMAIC 是一個標準的 Next.js 應用程式,任何能執行 Next.js 的環境都可以部署。 ## Vercel(一鍵) -最快的方式。點選[倉庫 README](https://github.com/THU-MAIC/OpenMAIC) 中的 Deploy 按鈕,fork 倉庫,並在設定過程中填入至少一個 LLM API key。 +最快的方式是點選[儲存庫 README](https://github.com/THU-MAIC/OpenMAIC) 中的 Deploy 按鈕,fork 儲存庫,並依照提示填入至少一個 LLM 的 API key。 -Vercel 會在每次提交時重新建置,並自動透過邊緣網路提供靜態資源。 +Vercel 會在每次提交後重新建置並部署 Next.js 應用程式。部署時需要在專案設定中設定至少一個 LLM 供應商。 + +Vercel 部署預設使用瀏覽器端持久化。若需要伺服器端持久化,請使用外部 PostgreSQL 與伺服器端部署方案;`server-persistence` Compose profile 無法直接用於 Vercel。 ## Docker -倉庫內包含可用於生產環境的 `Dockerfile`。建置並執行: +儲存庫中提供適合正式環境的 `Dockerfile`。映像內部使用 Node.js 22,建置及執行方式如下: ```bash docker build -t openmaic . -docker run -p 3000:3000 \ - -e OPENAI_API_KEY=sk-... \ - openmaic +docker run --env-file .env.local -p 3000:3000 openmaic ``` -`NEXT_PUBLIC_*` 功能開關會在 Docker 建置時編譯進用戶端,必須透過 build args 傳入,僅在容器執行時設定不會生效。例如: +建議使用儲存庫中的 Docker Compose 設定: ```bash -docker build \ - --build-arg NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ - --build-arg NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ - -t openmaic . +cp .env.example .env.local +# 編輯 .env.local,填入至少一個 LLM 供應商的設定,然後執行: +docker compose up --build ``` -Compose 的 `video-export` profile 會啟動渲染服務;同時啟用對應的建置開關,應用程式才會顯示匯出入口。 +預設 Compose 部署會啟動 OpenMAIC 應用程式,並掛載 `openmaic-data` 資料卷。其他 provider 與功能可依需求設定,詳見[設定說明](./configuration.mdx)。 -若使用服務端 provider 設定,請掛載到 `/app/server-providers.yml`: +`NEXT_PUBLIC_*` 功能開關會在 Docker 建置時編譯至用戶端,不能只寫在執行時的 `.env.local` 中。例如啟用影片匯出和實驗性 PPTX 匯入: -```yaml -volumes: - - ./server-providers.yml:/app/server-providers.yml:ro +```bash +NEXT_PUBLIC_ENABLE_VIDEO_EXPORT=true \ +NEXT_PUBLIC_ENABLE_PPTX_IMPORT=true \ +docker compose --profile video-export up --build ``` -容器內的 `localhost` 指向 OpenMAIC 容器本身。若 Ollama、Lemonade、VoxCPM 或 ComfyUI 執行在主機上,請使用 `host.docker.internal`;Linux 通常還要加入 `extra_hosts: ["host.docker.internal:host-gateway"]`。主機 ComfyUI 使用 `host.docker.internal:8188` 時,請設定 `ALLOW_LOCAL_NETWORKS=true`,因為 `comfyui-image` 不是服務端託管 provider,否則生產環境的 SSRF 防護會拒絕該網址。 +其他用戶端功能開關也可以用相同方式傳入。若使用 `docker build`,請改用對應的 `--build-arg`。 -多容器部署(例如搭配反向代理或其他服務)可使用 `docker-compose`: +如需使用伺服器端 provider 設定,把檔案掛載到容器內的固定路徑: -```yaml title="docker-compose.yml" +```yaml services: openmaic: - image: openmaic:latest - ports: - - '3000:3000' - env_file: - - .env.local - restart: unless-stopped + volumes: + - ./server-providers.yml:/app/server-providers.yml:ro ``` +Docker 容器中的 `localhost` 指向容器本身。若 Ollama、Lemonade、VoxCPM 或 ComfyUI 執行在主機上,請使用 `host.docker.internal`,例如 `http://host.docker.internal:11434/v1` 或 `http://host.docker.internal:8188`。Linux Docker 通常還需要為 `openmaic` 服務新增 `extra_hosts: ["host.docker.internal:host-gateway"]`。ComfyUI 目前不是伺服器端託管 provider,因此正式環境還必須設定 `ALLOW_LOCAL_NETWORKS=true`,否則 SSRF 防護會拒絕此位址。 + ## 自建 VM -使用 `pnpm` 建置並啟動: +主機需要 Node.js `20.9.0` 或更新版本,以及 pnpm `10.28.0`。使用 `pnpm` 建置並啟動: ```bash pnpm install @@ -66,18 +64,53 @@ pnpm build pnpm start # 預設監聽 3000 連接埠 ``` -前面可以加 nginx 或 Caddy 做 TLS 終止。高流量課堂情境可考慮在負載平衡器後面執行多個應用實例——OpenMAIC 預設是無狀態的(狀態存在瀏覽器的 IndexedDB 中)。 +可在前方使用 nginx 或 Caddy 終止 TLS。預設情況下,課堂狀態會儲存在瀏覽器的 IndexedDB 中;啟用伺服器端持久化後,執行階段資料和課程文件會儲存至伺服器儲存空間與 PostgreSQL。部署多個實例前,請先選擇合適的持久化方案。 + +## 伺服器端持久化(PostgreSQL) + +儲存庫的 `server-persistence` profile 會啟動 OpenMAIC 和 PostgreSQL 兩個容器。持久化 HTTP API 內嵌在 OpenMAIC 中,不需要額外的 persistence 服務。 + +先在 `.env.local` 中加入資料庫連線和開發token: + +```bash +DATABASE_URL=postgres://openmaic:openmaic-dev@postgres:5432/openmaic +PERSISTENCE_DEV_TOKEN=openmaic-local-dev +``` + +然後啟動 profile: + +```bash +NEXT_PUBLIC_PERSISTENCE=1 \ +NEXT_PUBLIC_PERSISTENCE_TOKEN=openmaic-local-dev \ +docker compose --profile server-persistence up --build +``` + +`NEXT_PUBLIC_PERSISTENCE` 和 `NEXT_PUBLIC_PERSISTENCE_TOKEN` 是建置時變數,必須與執行時的伺服器端設定相符。`PERSISTENCE_DEV_TOKEN` 方案只適合本機或可信任的內部網路部署,不提供真正的使用者隔離,不應直接作為公開正式環境的驗證方案。 + +PostgreSQL 資料儲存在 `openmaic-postgres` volume 中。`PERSISTENCE_POSTGRES_PASSWORD` 只會在資料庫目錄首次初始化時設定密碼,之後修改環境變數不會自動修改已有資料庫使用者密碼。 + +不設定 `NEXT_PUBLIC_PERSISTENCE` 即保持原有的瀏覽器端持久化行為。 + +## 選用:MP4 影片匯出 + +「匯出影片」功能會先在瀏覽器中生成完整的 Hyperframes 專案,再由獨立的 `render-service` 使用 Chromium 和 FFmpeg 渲染為 MP4。此服務為選用項目,不影響一般課堂生成。 + +啟用 `video-export` profile: + +```bash +docker compose --profile video-export up --build +``` + +Compose 會透過 `RENDER_SERVICE_URL` 讓 OpenMAIC 連線至渲染服務。若未啟用此 profile,或渲染服務無法使用,匯出功能會改為下載專案 ZIP,以供本機 CLI 渲染。渲染服務使用隔離網路,啟動時需要 `NET_ADMIN` capability;其他限制與獨立部署方式請見儲存庫中的 [`render-service/README.md`](https://github.com/THU-MAIC/OpenMAIC/blob/main/render-service/README.md)。 ## 環境變數 -完整清單請見[設定說明](./configuration.mdx)。至少需要一個 LLM 供應商 key。 +完整的環境變數和 provider 設定請見[設定說明](./configuration.mdx)。至少需要設定一個 LLM 供應商的 key。 ## 存取控制 -共享 demo 可以設定 `ACCESS_CODE`,讓整個站點先經過密碼驗證。請見[設定說明](./configuration.mdx)。 - -## 可選 profile +共享 demo 可以設定 `ACCESS_CODE`,為整個網站加上密碼保護。請見[設定說明 → ACCESS_CODE](./configuration.mdx#access_code--全站存取密碼)。 -`server-persistence` Compose profile 會啟動 OpenMAIC 與 PostgreSQL。設定 `DATABASE_URL`、`PERSISTENCE_DEV_TOKEN`,以及建置時的 `NEXT_PUBLIC_PERSISTENCE`/`NEXT_PUBLIC_PERSISTENCE_TOKEN`;dev token 僅適合本機或可信網路。`video-export` profile 會啟動渲染服務並輸出 MP4;未啟用時會退回下載專案 ZIP 供本機渲染。需求請見 `render-service/README.md`。 +## 選用的自託管服務 -自託管 TTS 與聲音複製請見 [VoxCPM2](./voxcpm.mdx)。 +- [VoxCPM2:自託管 TTS 與聲音複製 →](./voxcpm.mdx) diff --git a/packages/docs/content/docs/getting-started.ar.mdx b/packages/docs/content/docs/getting-started.ar.mdx index cb802ebf2d..ef084317e5 100644 --- a/packages/docs/content/docs/getting-started.ar.mdx +++ b/packages/docs/content/docs/getting-started.ar.mdx @@ -1,15 +1,15 @@ --- -title: البدء -description: ثبّت OpenMAIC وشغّله محليا خلال خمس دقائق. +title: البدء السريع +description: تشغيل OpenMAIC محليًا خلال خمس دقائق. --- -OpenMAIC هو تطبيق Next.js يمكنك تشغيله على جهازك. تحتاج إلى Node.js و pnpm ومفتاح API واحد على الأقل لموفر LLM. +OpenMAIC هو تطبيق Next.js يمكن تشغيله على جهازك الخاص. تحتاج إلى إعداد مزود LLM واحد على الأقل: عادةً ما تتطلب المزودات السحابية مفتاح API؛ أما Ollama أو Lemonade المحليان فلا يحتاجان إلى مفتاح API. -## المتطلبات +## المتطلبات المسبقة - **Node.js** 20.9.0 أو أحدث -- **pnpm** 10.28.0 (ثبّته عبر `npm install -g pnpm@10.28.0` عند الحاجة) -- مفتاح API من موفر LLM واحد على الأقل — OpenAI أو Anthropic أو Google أو DeepSeek أو Zhipu أو MiniMax أو Qwen أو Doubao أو Groq أو SiliconFlow أو Ollama محلي +- **pnpm** 10.28.0 (إذا لم يكن مثبتًا، نفذ `npm install -g pnpm@10.28.0`) +- إعداد مزود LLM واحد على الأقل؛ عادةً ما تتطلب المزودات السحابية مفتاح API، أما Ollama أو Lemonade المحليان فلا يحتاجان إلى مفتاح API ## التثبيت @@ -21,37 +21,37 @@ cd OpenMAIC pnpm install ``` -تقوم خطوة التثبيت أيضا ببناء حزمتي workspace (`mathml2omml` و `pptxgenjs`). يستغرق ذلك نحو دقيقة في أول تشغيل. +أثناء التثبيت، سيتم بناء حزم workspace اللازمة للمشروع، وقد يستغرق التثبيت الأول بعض الوقت. ## الإعداد -انسخ ملف env النموذجي واملأ موفر LLM واحدا على الأقل: +انسخ ملف البيئة النموذجي واملأ بيانات مزود LLM واحد على الأقل: ```bash cp .env.example .env.local ``` -افتح `.env.local` واضبط الموفرات التي تملك مفاتيحها. مثال: +افتح `.env.local` واملأ بيانات المزود الذي لديك مفتاح له. مثال: ```bash title=".env.local" OPENAI_API_KEY=sk-... # أو ANTHROPIC_API_KEY=sk-ant-... -# أو Ollama محلي (لا يحتاج إلى key) +# أو Ollama محلي (لا يحتاج إلى مفتاح) OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -راجع [الإعدادات](./configuration.mdx) لإعدادات providers وتوليد الصور/الفيديو وTTS وASR وتحليل المستندات والبحث على الويب والتحكم بالوصول وfeature flags. +للحصول على إعدادات كاملة لمزودات الخدمة، وتوليد الصور/الفيديو، وتحويل النص إلى كلام (TTS)، والتعرف على الكلام (ASR)، وتحليل المستندات، والبحث عبر الإنترنت، والتحكم في الوصول، وعلامات الميزات، راجع [تعليمات الإعداد](./configuration.mdx). ## التشغيل -شغّل dev server: +شغّل خادم التطوير: ```bash pnpm dev ``` -افتح [http://localhost:3000](http://localhost:3000)، وأدخل موضوعا أو ارفع مادة تعليمية ثم اضغط Generate. سيبني AI teacher صفا كاملا من عدة مشاهد. تعتمد الصيغ المدعومة على parser المختار، وتشمل عادة PDF ومستندات Office وMarkdown/النص العادي والصور وبعض الصوت/الفيديو. +افتح [http://localhost:3000](http://localhost:3000)، وسترى منشئ الدروس في OpenMAIC. أدخل موضوعًا أو ارفع مواد تعليمية، ثم اضغط على "Generate". سيقوم المعلم الذكي ببناء درس كامل متعدد المشاهد. تعتمد صيغ المواد المدعومة على المحلل المختار، وتشمل عادةً PDF، ومستندات Office، وMarkdown/نص عادي، وصور، وبعض ملفات الصوت/الفيديو؛ ويعتمد ذلك على دعم المحلل. ## بناء الإنتاج @@ -60,10 +60,10 @@ pnpm build pnpm start ``` -يمكنك أيضا النشر على Vercel أو Docker أو خادمك الخاص — راجع [النشر](./deployment.mdx). +يمكنك أيضًا النشر على Vercel أو Docker أو على خادمك الخاص — راجع [دليل النشر](./deployment.mdx). ## الخطوات التالية -- [اضبط providers و TTS و ACCESS_CODE →](./configuration.mdx) -- [انشر على Vercel أو Docker →](./deployment.mdx) -- [استكشف البنية وساهم على GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) +- [إعداد المزودات، TTS، و ACCESS_CODE →](./configuration.mdx) +- [النشر على Vercel أو Docker →](./deployment.mdx) +- للاطلاع على البنية أو المساهمة في الكود، يرجى زيارة [GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) diff --git a/packages/docs/content/docs/getting-started.ja.mdx b/packages/docs/content/docs/getting-started.ja.mdx index 6c219577fb..f71a56ef01 100644 --- a/packages/docs/content/docs/getting-started.ja.mdx +++ b/packages/docs/content/docs/getting-started.ja.mdx @@ -1,19 +1,19 @@ --- -title: はじめに -description: OpenMAIC を 5 分でローカル環境に立ち上げます。 +title: クイックスタート +description: 5分でローカルに OpenMAIC を立ち上げます。 --- -OpenMAIC は自分のマシンで実行できる Next.js アプリケーションです。Node.js、pnpm、そして少なくとも 1 つの LLM API key が必要です。 +OpenMAIC は自分のマシンで動かせる Next.js アプリケーションです。少なくとも 1 つの LLM プロバイダーを設定する必要があります。クラウドのプロバイダーは通常 API key が必要ですが、ローカルの Ollama や Lemonade は API key 不要です。 ## 前提条件 -- **Node.js** 20.9.0 以降 +- **Node.js** 20.9.0 以上 - **pnpm** 10.28.0(未インストールの場合は `npm install -g pnpm@10.28.0`) -- 少なくとも 1 つの LLM プロバイダーの API key —— OpenAI、Anthropic、Google、DeepSeek、Zhipu、MiniMax、Qwen、Doubao、Groq、SiliconFlow、またはローカル Ollama +- 少なくとも 1 つの LLM プロバイダーを設定。クラウドのプロバイダーは通常 API key が必要、ローカルの Ollama や Lemonade は API key 不要 ## インストール -リポジトリをクローンして依存関係をインストールします。 +リポジトリをクローンし、依存関係をインストールします。 ```bash git clone https://github.com/THU-MAIC/OpenMAIC.git @@ -21,7 +21,7 @@ cd OpenMAIC pnpm install ``` -インストール時には 2 つの workspace パッケージ(`mathml2omml` と `pptxgenjs`)もビルドされます。初回は 1 分ほどかかります。 +インストール中にプロジェクトで使う workspace パッケージがビルドされます。初回は少し時間がかかる場合があります。 ## 設定 @@ -31,17 +31,17 @@ pnpm install cp .env.example .env.local ``` -`.env.local` を開き、利用できる key を持つプロバイダーを設定します。例: +`.env.local` を開き、利用可能な key を持つプロバイダーを設定します。例: ```bash title=".env.local" OPENAI_API_KEY=sk-... # または ANTHROPIC_API_KEY=sk-ant-... -# またはローカル Ollama(key は不要) +# またはローカル Ollama(key 不要) OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -provider、画像/動画生成、TTS、ASR、ドキュメント解析、Web 検索、アクセス制御、feature flag の設定は[設定](./configuration.mdx)を参照してください。 +プロバイダー、画像/動画生成、TTS、ASR、ドキュメント解析、Web 検索、アクセス制御、feature flag の詳細設定は[設定説明](./configuration.mdx)を参照してください。 ## 実行 @@ -51,7 +51,7 @@ provider、画像/動画生成、TTS、ASR、ドキュメント解析、Web pnpm dev ``` -[http://localhost:3000](http://localhost:3000) を開き、トピックを入力するか学習資料をアップロードして Generate をクリックします。AI 教師が完全なマルチシーン授業を作成します。対応形式は選択した parser に依存し、通常は PDF、Office 文書、Markdown/プレーンテキスト、画像、一部の音声・動画を含みます。 +[http://localhost:3000](http://localhost:3000) を開くと OpenMAIC の授業生成ツールが表示されます。トピックを入力するか学習資料をアップロードし、「生成」をクリックすると、AI 教師が完全なマルチシーン授業を構築します。対応する資料形式は選択したパーサーに依存し、通常は PDF、Office 文書、Markdown/プレーンテキスト、画像、一部の音声・動画を含みます。 ## 本番ビルド @@ -60,10 +60,10 @@ pnpm build pnpm start ``` -Vercel、Docker、または自分のサーバーにもデプロイできます。詳しくは[デプロイ](./deployment.mdx)を参照してください。 +または Vercel、Docker、自分のサーバーにデプロイ可能です。詳しくは[デプロイガイド](./deployment.mdx)を参照してください。 ## 次のステップ -- [プロバイダー、TTS、ACCESS_CODE を設定する →](./configuration.mdx) -- [Vercel または Docker にデプロイする →](./deployment.mdx) -- [GitHub でアーキテクチャを確認し、コントリビュートする](https://github.com/THU-MAIC/OpenMAIC#-contributing) +- [プロバイダー、TTS、ACCESS_CODE の設定 →](./configuration.mdx) +- [Vercel または Docker へのデプロイ →](./deployment.mdx) +- アーキテクチャの確認やコントリビュートは [GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) をご覧ください diff --git a/packages/docs/content/docs/getting-started.mdx b/packages/docs/content/docs/getting-started.mdx index c251465c17..3e78ab45bc 100644 --- a/packages/docs/content/docs/getting-started.mdx +++ b/packages/docs/content/docs/getting-started.mdx @@ -1,15 +1,15 @@ --- -title: Getting Started -description: Install OpenMAIC and run it locally in five minutes. +title: Getting started +description: Run OpenMAIC locally in five minutes. --- -OpenMAIC is a Next.js application you can run on your own machine. You need Node.js, pnpm, and at least one LLM API key. +OpenMAIC is a Next.js application that runs on your own machine. You need to configure at least one LLM provider: cloud providers usually require an API key, while local Ollama or Lemonade does not. ## Prerequisites - **Node.js** 20.9.0 or later -- **pnpm** 10.28.0 (install with `npm install -g pnpm@10.28.0` if needed) -- At least one LLM provider. Cloud providers usually need an API key; local Ollama and Lemonade do not. +- **pnpm** 10.28.0 (if needed, run `npm install -g pnpm@10.28.0`) +- At least one LLM provider; cloud providers usually require an API key, while local Ollama or Lemonade does not ## Install @@ -21,61 +21,37 @@ cd OpenMAIC pnpm install ``` -The install step also builds the workspace packages required by the project and may take some time on the first run. +Installation builds the workspace packages required by the project, so the first install may take some time. ## Configure -Copy the sample env file and fill in at least one LLM provider: +Copy the example environment file and configure at least one LLM provider: ```bash cp .env.example .env.local ``` -Open `.env.local` and set whichever providers you have keys for. For example: +Open `.env.local` and enter credentials for a provider you use. For example: ```bash title=".env.local" OPENAI_API_KEY=sk-... # or ANTHROPIC_API_KEY=sk-ant-... -# or local Ollama (no key needed) +# or local Ollama (no key required) OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -See [Configuration](./configuration.mdx) for provider, image/video generation, TTS, ASR, document parsing, web search, access control, and feature flag settings. +See [Configuration](./configuration.mdx) for complete provider, image/video generation, TTS, ASR, document parsing, web search, access control, and feature flag configuration. ## Run -Start the dev server: +Start the development server: ```bash pnpm dev ``` -Open [http://localhost:3000](http://localhost:3000). Enter a topic or upload learning material, click Generate, and an AI teacher will build a complete multi-scene classroom. Supported formats depend on the selected parser and commonly include PDF, Office documents, Markdown/plain text, images, and some audio/video. - -## Troubleshooting - -### Dev server crashes when generating large content - -If the dev server dies while generating a large classroom (for example from a long multi-chapter outline) with an error like: - -``` -Jest worker encountered 2 child process exceptions, exceeding retry limit -``` - -this is a dev-only Next.js limitation, not a bug in OpenMAIC's runtime. In dev mode, Next forks an internal worker process for App Router dynamic routes (such as `/classroom/[id]`); when a large generation holds a big in-memory object as that worker is forked, the worker can be OOM-killed and take the dev server down with it. The "Jest worker" name is just Next's internal process pool and is unrelated to testing. - -Raise the dev heap limit, sized to your machine's RAM (don't over-set it past available memory or you trade a V8 OOM for a system-level one): - -```bash -# macOS / Linux -NODE_OPTIONS=--max-old-space-size=4096 pnpm dev - -# Windows (PowerShell) -$env:NODE_OPTIONS="--max-old-space-size=4096"; pnpm dev -``` - -Production builds are unaffected — they are prebuilt and never fork this worker. +Open [http://localhost:3000](http://localhost:3000). You should see the OpenMAIC classroom generator. Enter a topic or upload learning material, then click Generate; the AI teachers will build a complete, multi-scene classroom. Supported material formats depend on the selected parser and typically include PDF, Office documents, Markdown/plain text, images, and some audio/video formats. Consult the parser's supported formats for the exact range. ## Build for production @@ -84,10 +60,10 @@ pnpm build pnpm start ``` -Or deploy to Vercel, Docker, or your own server — see [Deployment](./deployment.mdx). +Or deploy to Vercel, Docker, or your own server—see the [Deployment guide](./deployment.mdx). ## Next steps - [Configure providers, TTS, and ACCESS_CODE →](./configuration.mdx) - [Deploy to Vercel or Docker →](./deployment.mdx) -- Explore the [architecture and contribute on GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) +- For architecture details or contribution guidance, visit [GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) diff --git a/packages/docs/content/docs/getting-started.ru.mdx b/packages/docs/content/docs/getting-started.ru.mdx index 3795120681..20c6186d61 100644 --- a/packages/docs/content/docs/getting-started.ru.mdx +++ b/packages/docs/content/docs/getting-started.ru.mdx @@ -1,15 +1,15 @@ --- -title: Начало работы -description: Установите OpenMAIC и запустите его локально за пять минут. +title: Быстрый старт +description: Запустите OpenMAIC локально за пять минут. --- -OpenMAIC — это приложение Next.js, которое можно запустить на своей машине. Вам нужны Node.js, pnpm и как минимум один API key для LLM. +OpenMAIC — это приложение на Next.js, которое можно запустить на своём компьютере. Вам нужно настроить как минимум одного LLM-провайдера: облачные провайдеры обычно требуют API key; локальные Ollama или Lemonade API key не требуют. -## Требования +## Предварительные требования -- **Node.js** 20.9.0 или новее -- **pnpm** 10.28.0 (при необходимости установите через `npm install -g pnpm@10.28.0`) -- Как минимум один LLM provider. Облачным provider обычно нужен API key; локальным Ollama и Lemonade ключ не нужен. +- **Node.js** версии 20.9.0 или выше +- **pnpm** версии 10.28.0 (если не установлен, выполните `npm install -g pnpm@10.28.0`) +- Настроить как минимум одного LLM-провайдера; облачные провайдеры обычно требуют API key, локальные Ollama или Lemonade — нет ## Установка @@ -21,37 +21,37 @@ cd OpenMAIC pnpm install ``` -На этапе установки также собираются два workspace-пакета (`mathml2omml` и `pptxgenjs`). При первом запуске это занимает около минуты. +В процессе установки будут собраны необходимые workspace-пакеты проекта, при первом запуске это может занять некоторое время. ## Настройка -Скопируйте пример env-файла и заполните как минимум одного LLM provider: +Скопируйте пример файла окружения и укажите как минимум одного LLM-провайдера: ```bash cp .env.example .env.local ``` -Откройте `.env.local` и укажите провайдеры, для которых у вас есть key. Например: +Откройте `.env.local` и заполните данные провайдера, для которого у вас есть ключ. Например: ```bash title=".env.local" OPENAI_API_KEY=sk-... # или ANTHROPIC_API_KEY=sk-ant-... -# или локальный Ollama (key не нужен) +# или локальный Ollama (ключ не требуется) OLLAMA_BASE_URL=http://localhost:11434/v1 ``` -Настройки provider, генерации изображений и видео, TTS, ASR, разбора документов, web search, контроля доступа и feature flags см. в разделе [Конфигурация](./configuration.mdx). +Полные настройки провайдеров, генерации изображений/видео, TTS, ASR, парсинга документов, веб-поиска, контроля доступа и feature flags смотрите в разделе [Конфигурация](./configuration.mdx). ## Запуск -Запустите dev server: +Запустите сервер разработки: ```bash pnpm dev ``` -Откройте [http://localhost:3000](http://localhost:3000), введите тему или загрузите учебные материалы и нажмите Generate. AI teacher соберёт полноценный classroom из нескольких сцен. Форматы зависят от выбранного parser и обычно включают PDF, Office-документы, Markdown/обычный текст, изображения и некоторые аудио/видео. +Откройте [http://localhost:3000](http://localhost:3000), вы увидите генератор классов OpenMAIC. Введите тему или загрузите учебные материалы и нажмите «Generate». AI-преподаватель создаст полноценный класс с несколькими сценами. Поддерживаемые форматы материалов зависят от выбранного парсера и обычно включают PDF, Office-документы, Markdown/обычный текст, изображения и некоторые аудио/видео; точный набор зависит от возможностей парсера. ## Production build @@ -60,10 +60,10 @@ pnpm build pnpm start ``` -Также можно развернуть OpenMAIC на Vercel, Docker или собственном сервере — см. [Развертывание](./deployment.mdx). +Также можно развернуть OpenMAIC на Vercel, Docker или собственном сервере — см. [Руководство по развертыванию](./deployment.mdx). ## Дальше -- [Настроить provider, TTS и ACCESS_CODE →](./configuration.mdx) -- [Развернуть на Vercel или Docker →](./deployment.mdx) -- [Изучить архитектуру и внести вклад на GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) +- [Настройка провайдера, TTS и ACCESS_CODE →](./configuration.mdx) +- [Развёртывание на Vercel или Docker →](./deployment.mdx) +- Хотите узнать архитектуру или внести вклад? Посетите [GitHub](https://github.com/THU-MAIC/OpenMAIC#-contributing) diff --git a/packages/docs/content/docs/getting-started.zh-tw.mdx b/packages/docs/content/docs/getting-started.zh-tw.mdx index b1e1b286c0..eed14c7997 100644 --- a/packages/docs/content/docs/getting-started.zh-tw.mdx +++ b/packages/docs/content/docs/getting-started.zh-tw.mdx @@ -3,17 +3,17 @@ title: 快速開始 description: 五分鐘內在本機跑起 OpenMAIC。 --- -OpenMAIC 是一個 Next.js 應用程式,可以在自己的機器上執行。你需要 Node.js、pnpm,以及至少一個 LLM 服務的 API key。 +OpenMAIC 是一個 Next.js 應用程式,可以在自己的機器上執行。你需要至少設定一個 LLM provider:雲端 provider 通常需要 API key;本機 Ollama 或 Lemonade 不需要 API key。 ## 前置條件 -- **Node.js** 20.9.0 或更高版本 -- **pnpm** 10.28.0(如果尚未安裝,先執行 `npm install -g pnpm@10.28.0`) -- 至少一個 LLM 供應商的 API key —— OpenAI、Anthropic、Google、DeepSeek、Zhipu、MiniMax、Qwen、Doubao、Groq、SiliconFlow,或本機 Ollama +- **Node.js** 20.9.0 或更新版本 +- **pnpm** 10.28.0(如果尚未安裝,請先執行 `npm install -g pnpm@10.28.0`) +- 至少設定一個 LLM provider;雲端 provider 通常需要 API key,本機 Ollama 或 Lemonade 不需要 API key ## 安裝 -複製倉庫並安裝依賴: +複製儲存庫並安裝相依套件: ```bash git clone https://github.com/THU-MAIC/OpenMAIC.git @@ -21,7 +21,7 @@ cd OpenMAIC pnpm install ``` -安裝過程也會建置兩個 workspace 套件(`mathml2omml` 和 `pptxgenjs`)。首次執行大約需要一分鐘。 +安裝過程中會建置專案所需的 workspace 套件,首次安裝可能需要一些時間。 ## 設定 @@ -31,7 +31,7 @@ pnpm install cp .env.example .env.local ``` -打開 `.env.local`,填入你有 key 的供應商。例如: +開啟 `.env.local`,填入你有 key 的供應商。例如: ```bash title=".env.local" OPENAI_API_KEY=sk-... @@ -51,7 +51,7 @@ OLLAMA_BASE_URL=http://localhost:11434/v1 pnpm dev ``` -打開 [http://localhost:3000](http://localhost:3000),輸入主題或上傳學習材料後點選 Generate,AI 教師就會建立一場完整的多場景課堂。支援格式取決於所選解析器,通常包括 PDF、Office 文件、Markdown/純文字、圖片及部分音訊/影片。 +開啟 [http://localhost:3000](http://localhost:3000),應該會看到 OpenMAIC 的課堂生成器。輸入主題或上傳學習材料,點選「生成」,AI 教師就會建立一場完整的多場景課堂。支援的材料格式取決於所選解析器,通常包括 PDF、Office 文件、Markdown/純文字、圖片及部分音訊/影片;實際範圍以解析器支援情況為準。 ## 生產建置 @@ -60,7 +60,7 @@ pnpm build pnpm start ``` -也可以部署到 Vercel、Docker,或你自己的伺服器上——請見[部署指南](./deployment.mdx)。 +也可以部署到 Vercel、Docker 或你自己的伺服器上——請見[部署指南](./deployment.mdx)。 ## 下一步 diff --git a/packages/docs/content/docs/supported-models.ar.mdx b/packages/docs/content/docs/supported-models.ar.mdx index 06fc324ff8..cfbb0e501d 100644 --- a/packages/docs/content/docs/supported-models.ar.mdx +++ b/packages/docs/content/docs/supported-models.ar.mdx @@ -1,86 +1,105 @@ --- title: النماذج المدعومة -description: قوائم النماذج والموفرين المدمجة في إصدار OpenMAIC مفتوح المصدر. +description: قائمة النماذج المدمجة ومزودي الخدمة في النسخة المفتوحة من OpenMAIC. --- -تسرد هذه الصفحة provider registry المدمج في إصدار OpenMAIC مفتوح المصدر. يمكن إعداد providers المدمجة من Settings أو متغيرات البيئة أو `server-providers.yml`، بينما تُضاف providers المخصصة المتوافقة مع OpenAI من Settings. يعتمد التوفر أيضا على حساب provider والمنطقة وإعدادات الخادم. +تسرد هذه الصفحة provider registry المضمن في كود نسخة OpenMAIC مفتوحة المصدر. يمكن إعداد provider المضمنة من Settings أو متغيرات البيئة أو `server-providers.yml`، أما provider المخصصة المتوافقة مع OpenAI فتُضاف من Settings. يعتمد التوفر أيضًا على حساب provider والمنطقة وإعداد الخادم، وقد تخفي النسخ المستضافة بعض النماذج المضمنة عبر قائمة سماح. ## نماذج LLM -استخدم model IDs بالشكل `provider:model-id` في `DEFAULT_MODEL` أو YAML. مثال: `openai:gpt-5.4-mini` أو `qwen:qwen3.6-flash` أو `ollama:llama3.3`. +تُكتب النماذج في `DEFAULT_MODEL` أو YAML بصيغة `provider:model-id`، مثل `openai:gpt-5.6` و`qwen:qwen3.7-plus` و`ollama:llama3.3`. -| الموفر | Provider ID | النماذج المدمجة | -| --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| المزود | معرف المزود | النماذج المدمجة | +| ---------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | -| Claude | `anthropic` | Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | -| Gemini | `google` | Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | -| GLM | `glm` | GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | -| Qwen | `qwen` | Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | +| Azure OpenAI | `azure` | لا توجد معرّفات نماذج مسبقة؛ أدخل Azure OpenAI deployment name. | +| Claude | `anthropic` | Claude Opus 4.8 (`claude-opus-4-8`)
Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | +| Gemini | `google` | Gemini 3.5 Flash (`gemini-3.5-flash`)
Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | +| GLM | `glm` | GLM-5.2 (`glm-5.2`)
GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | +| Qwen | `qwen` | Qwen3.7 Plus (`qwen3.7-plus`)
Qwen3.7 Max (`qwen3.7-max`)
Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | | DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | -| Kimi | `kimi` | Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | -| MiniMax | `minimax` | MiniMax M2.7 (`MiniMax-M2.7`) | +| Kimi | `kimi` | Kimi K2.7 Code (`kimi-k2.7-code`)
Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`)
Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | +| MiniMax | `minimax` | MiniMax M3 (`MiniMax-M3`)
MiniMax M2.7 (`MiniMax-M2.7`) | | SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | -| Doubao | `doubao` | Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | +| Doubao | `doubao` | Doubao Seed 2.1 Pro (`doubao-seed-2-1-pro-260628`)
Doubao Seed 2.1 Turbo (`doubao-seed-2-1-turbo-260628`)
Doubao Seed Evolving (`doubao-seed-evolving`)
Doubao Seed Character (`doubao-seed-character-260628`)
Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | | OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | | Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | | Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | -| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2.5 (`mimo-v2.5`) | +| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2 Pro (`mimo-v2-pro`)
MiMo V2.5 (`mimo-v2.5`)
MiMo V2 Omni (`mimo-v2-omni`)
MiMo V2 Flash (`mimo-v2-flash`) | | Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | -| Lemonade | `lemonade` | Qwen3.5 4B GGUF (`Qwen3.5-4B-GGUF`)
Qwen3 4B GGUF (`Qwen3-4B-GGUF`)
GPT-OSS 20B (`gpt-oss-20b`)
Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | +| Lemonade | `lemonade` | Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | ## نماذج توليد الصور -| الموفر | Provider ID | النماذج المدمجة | -| -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | +| المزود | معرف المزود | النماذج المدمجة | +| ------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 5.0 Lite Alias (`doubao-seedream-5-0-lite-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | | OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | | Qwen Image | `qwen-image` | Qwen Image 2.0 Pro (`qwen-image-2.0-pro`)
Qwen Image 2.0 Pro 2026-03-03 (`qwen-image-2.0-pro-2026-03-03`)
Qwen Image 2.0 (`qwen-image-2.0`)
Qwen Image 2.0 2026-03-03 (`qwen-image-2.0-2026-03-03`)
Qwen Image Max (`qwen-image-max`)
Qwen Image Max 2025-12-30 (`qwen-image-max-2025-12-30`)
Qwen Image Plus (`qwen-image-plus`)
Qwen Image Plus 2026-01-09 (`qwen-image-plus-2026-01-09`)
Qwen Image (`qwen-image`)
Z-Image Turbo (`z-image-turbo`) | | Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | | MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | | Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | +| ComfyUI Image | `comfyui-image` | لا يوجد معرّف نموذج مسبق؛ يكتشف ComfyUI workflow من `public/` ويختاره وقت التشغيل. | | Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | ## نماذج توليد الفيديو -| الموفر | Provider ID | النماذج المدمجة | -| ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedance | `seedance` | Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | +| المزود | معرف المزود | النماذج المدمجة | +| -------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedance | `seedance` | Seedance 2.0 (`doubao-seedance-2-0-260128`)
Seedance 2.0 Fast (`doubao-seedance-2-0-fast-260128`)
Seedance 2.0 Mini (`doubao-seedance-2-0-mini-260615`)
Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | | Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | | Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | -| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 2.3 Fast (`MiniMax-Hailuo-2.3-Fast`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | +| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | | Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | -| Sora | `sora` | لا توجد قائمة نماذج مدمجة بعد. registry entry محجوز، لكن generation غير متاح في adapter الحالي. | +| HappyHorse | `happyhorse` | HappyHorse 1.0 T2V (`happyhorse-1.0-t2v`) | +| Sora | `sora` | لا توجد قائمة نماذج مضمّنة بعد. إدخال registry محجوز والتوليد غير متاح في adapter الحالي. | -## نماذج TTS والواجهات الخلفية +## نماذج TTS والخوادم الخلفية -يسرد هذا الجدول model selectors و backends ذاتية الاستضافة. لا يعدد كل voice option. +يسرد هذا الجدول محددات النماذج والخوادم المستضافة ذاتيًا، دون تفصيل قائمة الأصوات لكل مزود. -| الموفر | Provider ID | النماذج أو backends | -| ------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| المزود | معرف المزود | النموذج أو الخادم الخلفي | +| ---------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | OpenAI TTS | `openai-tts` | GPT-4o Mini TTS (`gpt-4o-mini-tts`)
TTS-1 (`tts-1`)
TTS-1 HD (`tts-1-hd`) | -| Azure TTS | `azure-tts` | لا يوجد model selector. يستخدم Azure neural voices المضبوطة. | +| Azure TTS | `azure-tts` | لا يوجد محدد نموذج؛ تُستخدم Azure neural voices التي تم إعدادها. | | GLM TTS | `glm-tts` | GLM TTS (`glm-tts`) | | Qwen TTS | `qwen-tts` | Qwen3 TTS Flash (`qwen3-tts-flash`)
Qwen3 TTS Instruct Flash (`qwen3-tts-instruct-flash`)
Qwen TTS (`qwen-tts`) | | MiniMax TTS | `minimax-tts` | Speech 2.8 HD (`speech-2.8-hd`)
Speech 2.8 Turbo (`speech-2.8-turbo`)
Speech 2.6 HD (`speech-2.6-hd`)
Speech 2.6 Turbo (`speech-2.6-turbo`)
Speech 02 HD (`speech-02-hd`)
Speech 02 Turbo (`speech-02-turbo`) | -| VoxCPM2 | `voxcpm-tts` | VoxCPM2 (`voxcpm2`)
Backends: vLLM-Omni, Python API, Nano-vLLM | +| VoxCPM2 | `voxcpm-tts` | VoxCPM2 (`voxcpm2`)
الواجهات الخلفية: vLLM-Omni, Python API, Nano-vLLM | | Lemonade TTS | `lemonade-tts` | Kokoro v1 (`kokoro-v1`) | -| Doubao TTS 2.0 | `doubao-tts` | لا يوجد model selector. يستخدم voice IDs الخاصة بـ Doubao TTS 2.0. | +| Doubao TTS 2.0 | `doubao-tts` | لا يوجد محدد نموذج؛ تُستخدم معرّفات أصوات Doubao TTS 2.0. | | ElevenLabs TTS | `elevenlabs-tts` | Multilingual v2 (`eleven_multilingual_v2`)
Flash v2.5 (`eleven_flash_v2_5`)
Flash v2 (`eleven_flash_v2`) | -| Browser Native TTS | `browser-native-tts` | لا يوجد model selector. يستخدم فهرس أصوات المتصفح ونظام التشغيل. | +| Browser Native TTS | `browser-native-tts` | لا يوجد محدد نموذج؛ تُستخدم قائمة أصوات المتصفح ونظام التشغيل. | ## نماذج ASR -| الموفر | Provider ID | النماذج المدمجة | -| ------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| المزود | معرف المزود | النماذج المدمجة | +| ---------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | | Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | +| Azure STT | `azure-asr` | لا يوجد محدد نموذج؛ تُستخدم Azure Speech to Text. | | Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | -| Browser Native ASR | `browser-native` | لا يوجد model selector. يستخدم Web Speech API في المتصفح. | +| Browser Native ASR | `browser-native` | لا يوجد محدد نموذج؛ تُستخدم Web Speech API للمتصفح. | -## موفرو تحليل PDF +## مزودو تحليل المستندات -| الموفر | Provider ID | الميزات | -| ------------ | -------------- | --------------------------------------------- | -| unpdf | `unpdf` | نصوص، صور، metadata | -| MinerU | `mineru` | نصوص، صور، جداول، صيغ رياضية، layout analysis | -| MinerU Cloud | `mineru-cloud` | نصوص، صور، جداول، صيغ رياضية، layout analysis | +| المزود | معرف المزود | القدرات | +| ------------ | -------------- | ----------------------------------- | +| unpdf | `unpdf` | نصوص، صور، بيانات وصفية | +| MinerU | `mineru` | نصوص، صور، جداول، صيغ، تحليل تخطيط | +| MinerU Cloud | `mineru-cloud` | نصوص، صور، جداول، صيغ، تحليل تخطيط | +| AliDocMind | `alidocmind` | نصوص، صور، جداول، صيغ، تحليل تخطيط، OCR | + +## مزودو البحث على الويب + +مزودو البحث على الويب لا يمتلكون محددات للنماذج. يدعم SearXNG فقط التكوين المستضاف على الخادم؛ يمكن للمزودين الآخرين تكوين مفاتيح API أو عناوين URL أساسية حسب متطلباتهم. + +| المزود | معرف المزود | +| ------------ | ----------- | +| Tavily | `tavily` | +| Bocha | `bocha` | +| Brave Search | `brave` | +| Baidu | `baidu` | +| MiniMax | `minimax` | +| Doubao | `doubao` | +| SearXNG | `searxng` | diff --git a/packages/docs/content/docs/supported-models.ja.mdx b/packages/docs/content/docs/supported-models.ja.mdx index 9a3dc0c5a4..43fbfa54c4 100644 --- a/packages/docs/content/docs/supported-models.ja.mdx +++ b/packages/docs/content/docs/supported-models.ja.mdx @@ -1,86 +1,105 @@ --- -title: 対応モデル +title: サポートモデル description: オープンソース版 OpenMAIC の組み込みモデルと provider 一覧。 --- -このページでは、オープンソース版 OpenMAIC に組み込まれている provider registry を一覧します。組み込み provider は Settings、環境変数、または `server-providers.yml` で設定できます。カスタム OpenAI 互換 provider は Settings から追加します。利用可否は provider アカウント、地域、サーバー設定にも依存します。 +本ページでは、オープンソース版 OpenMAIC にコードと共に組み込まれている provider registry を一覧にしています。組み込み provider は設定、環境変数、または `server-providers.yml` で構成可能です。カスタムの OpenAI 互換 provider は設定から追加してください。利用可能なモデルは provider アカウント、地域、サーバー設定に依存します。ホスティングされたインスタンスではホワイトリストにより一部の組み込みモデルが非表示になる場合があります。 ## LLM モデル -`DEFAULT_MODEL` または YAML では、モデル ID を `provider:model-id` として指定します。例:`openai:gpt-5.4-mini`、`qwen:qwen3.6-flash`、`ollama:llama3.3`。 - -| プロバイダー | Provider ID | 組み込みモデル | -| --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | -| Claude | `anthropic` | Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | -| Gemini | `google` | Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | -| GLM | `glm` | GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | -| Qwen | `qwen` | Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | -| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | -| Kimi | `kimi` | Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | -| MiniMax | `minimax` | MiniMax M2.7 (`MiniMax-M2.7`) | -| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | -| Doubao | `doubao` | Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | -| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | -| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | -| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | -| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2.5 (`mimo-v2.5`) | -| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | -| Lemonade | `lemonade` | Qwen3.5 4B GGUF (`Qwen3.5-4B-GGUF`)
Qwen3 4B GGUF (`Qwen3-4B-GGUF`)
GPT-OSS 20B (`gpt-oss-20b`)
Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | +`DEFAULT_MODEL` または YAML 内のモデル指定は `provider:model-id` 形式です。例:`openai:gpt-5.6`、`qwen:qwen3.7-plus`、`ollama:llama3.3`。 + +| 提供元 | Provider ID | 組み込みモデル | +| --------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | +| Azure OpenAI | `azure` | 事前設定されたモデル ID はありません;Azure OpenAI の deployment name を入力してください。 | +| Claude | `anthropic` | Claude Opus 4.8 (`claude-opus-4-8`)
Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | +| Gemini | `google` | Gemini 3.5 Flash (`gemini-3.5-flash`)
Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | +| GLM | `glm` | GLM-5.2 (`glm-5.2`)
GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | +| Qwen | `qwen` | Qwen3.7 Plus (`qwen3.7-plus`)
Qwen3.7 Max (`qwen3.7-max`)
Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | +| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | +| Kimi | `kimi` | Kimi K2.7 Code (`kimi-k2.7-code`)
Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`)
Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | +| MiniMax | `minimax` | MiniMax M3 (`MiniMax-M3`)
MiniMax M2.7 (`MiniMax-M2.7`) | +| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | +| Doubao | `doubao` | Doubao Seed 2.1 Pro (`doubao-seed-2-1-pro-260628`)
Doubao Seed 2.1 Turbo (`doubao-seed-2-1-turbo-260628`)
Doubao Seed Evolving (`doubao-seed-evolving`)
Doubao Seed Character (`doubao-seed-character-260628`)
Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | +| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | +| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | +| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | +| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2 Pro (`mimo-v2-pro`)
MiMo V2.5 (`mimo-v2.5`)
MiMo V2 Omni (`mimo-v2-omni`)
MiMo V2 Flash (`mimo-v2-flash`) | +| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | +| Lemonade | `lemonade` | Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | ## 画像生成モデル -| プロバイダー | Provider ID | 組み込みモデル | -| -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | -| OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | +| 提供元 | Provider ID | 組み込みモデル | +| -------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 5.0 Lite Alias (`doubao-seedream-5-0-lite-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | +| OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | | Qwen Image | `qwen-image` | Qwen Image 2.0 Pro (`qwen-image-2.0-pro`)
Qwen Image 2.0 Pro 2026-03-03 (`qwen-image-2.0-pro-2026-03-03`)
Qwen Image 2.0 (`qwen-image-2.0`)
Qwen Image 2.0 2026-03-03 (`qwen-image-2.0-2026-03-03`)
Qwen Image Max (`qwen-image-max`)
Qwen Image Max 2025-12-30 (`qwen-image-max-2025-12-30`)
Qwen Image Plus (`qwen-image-plus`)
Qwen Image Plus 2026-01-09 (`qwen-image-plus-2026-01-09`)
Qwen Image (`qwen-image`)
Z-Image Turbo (`z-image-turbo`) | -| Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | -| MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | -| Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | -| Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | +| Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | +| MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | +| Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | +| ComfyUI Image | `comfyui-image` | 事前設定されたモデル ID はありません;実行時に `public/` から ComfyUI ワークフローを検出して選択します。 | +| Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | ## 動画生成モデル -| プロバイダー | Provider ID | 組み込みモデル | -| ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedance | `seedance` | Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | -| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | -| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | -| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 2.3 Fast (`MiniMax-Hailuo-2.3-Fast`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | -| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | -| Sora | `sora` | 組み込みモデル一覧はまだありません。registry entry は予約済みですが、現在の adapter では生成に利用できません。 | +| 提供元 | Provider ID | 組み込みモデル | +| ------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedance | `seedance` | Seedance 2.0 (`doubao-seedance-2-0-260128`)
Seedance 2.0 Fast (`doubao-seedance-2-0-fast-260128`)
Seedance 2.0 Mini (`doubao-seedance-2-0-mini-260615`)
Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | +| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | +| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | +| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | +| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | +| HappyHorse | `happyhorse` | HappyHorse 1.0 T2V (`happyhorse-1.0-t2v`) | +| Sora | `sora` | 組み込みモデルはありません。現在の registry には provider が残っていますが、現時点では adapter は生成に使用できません。 | ## TTS モデルとバックエンド -この表はモデル selector とセルフホスト backend を示します。各 voice option は網羅していません。 - -| プロバイダー | Provider ID | モデルまたはバックエンド | -| ------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI TTS | `openai-tts` | GPT-4o Mini TTS (`gpt-4o-mini-tts`)
TTS-1 (`tts-1`)
TTS-1 HD (`tts-1-hd`) | -| Azure TTS | `azure-tts` | モデル selector はありません。設定済みの Azure neural voices を使います。 | -| GLM TTS | `glm-tts` | GLM TTS (`glm-tts`) | -| Qwen TTS | `qwen-tts` | Qwen3 TTS Flash (`qwen3-tts-flash`)
Qwen3 TTS Instruct Flash (`qwen3-tts-instruct-flash`)
Qwen TTS (`qwen-tts`) | -| MiniMax TTS | `minimax-tts` | Speech 2.8 HD (`speech-2.8-hd`)
Speech 2.8 Turbo (`speech-2.8-turbo`)
Speech 2.6 HD (`speech-2.6-hd`)
Speech 2.6 Turbo (`speech-2.6-turbo`)
Speech 02 HD (`speech-02-hd`)
Speech 02 Turbo (`speech-02-turbo`) | -| VoxCPM2 | `voxcpm-tts` | VoxCPM2 (`voxcpm2`)
Backends: vLLM-Omni、Python API、Nano-vLLM | -| Lemonade TTS | `lemonade-tts` | Kokoro v1 (`kokoro-v1`) | -| Doubao TTS 2.0 | `doubao-tts` | モデル selector はありません。Doubao TTS 2.0 voice ID を使います。 | -| ElevenLabs TTS | `elevenlabs-tts` | Multilingual v2 (`eleven_multilingual_v2`)
Flash v2.5 (`eleven_flash_v2_5`)
Flash v2 (`eleven_flash_v2`) | -| ブラウザー標準 TTS | `browser-native-tts` | モデル selector はありません。ブラウザーと OS の voice catalog を使います。 | +この表はモデルセレクターとセルフホスト型バックエンドを示しており、各 provider の全音声リストは展開していません。 + +| 提供元 | Provider ID | モデルまたはバックエンド | +| -------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI TTS | `openai-tts` | GPT-4o Mini TTS (`gpt-4o-mini-tts`)
TTS-1 (`tts-1`)
TTS-1 HD (`tts-1-hd`) | +| Azure TTS | `azure-tts` | モデルセレクターはなく、設定済みの Azure Neural Voices を使用します。 | +| GLM TTS | `glm-tts` | GLM TTS (`glm-tts`) | +| Qwen TTS | `qwen-tts` | Qwen3 TTS Flash (`qwen3-tts-flash`)
Qwen3 TTS Instruct Flash (`qwen3-tts-instruct-flash`)
Qwen TTS (`qwen-tts`) | +| MiniMax TTS | `minimax-tts` | Speech 2.8 HD (`speech-2.8-hd`)
Speech 2.8 Turbo (`speech-2.8-turbo`)
Speech 2.6 HD (`speech-2.6-hd`)
Speech 2.6 Turbo (`speech-2.6-turbo`)
Speech 02 HD (`speech-02-hd`)
Speech 02 Turbo (`speech-02-turbo`) | +| VoxCPM2 | `voxcpm-tts` | VoxCPM2 (`voxcpm2`)
バックエンド:vLLM-Omni、Python API、Nano-vLLM | +| Lemonade TTS | `lemonade-tts` | Kokoro v1 (`kokoro-v1`) | +| Doubao TTS 2.0 | `doubao-tts` | モデルセレクターはなく、Doubao TTS 2.0 の音声 ID を使用します。 | +| ElevenLabs TTS | `elevenlabs-tts` | Multilingual v2 (`eleven_multilingual_v2`)
Flash v2.5 (`eleven_flash_v2_5`)
Flash v2 (`eleven_flash_v2`) | +| ブラウザネイティブ TTS | `browser-native-tts` | モデルセレクターはなく、ブラウザや OS が提供する音声リストを使用します。 | ## ASR モデル -| プロバイダー | Provider ID | 組み込みモデル | -| ------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | -| Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | -| Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | -| ブラウザー標準 ASR | `browser-native` | モデル selector はありません。ブラウザーの Web Speech API を使います。 | +| 提供元 | Provider ID | 組み込みモデル | +| -------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | +| Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | +| Azure STT | `azure-asr` | モデルセレクターはなく、Azure Speech to Text を使用します。 | +| Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | +| ブラウザネイティブ ASR | `browser-native` | モデルセレクターはなく、ブラウザの Web Speech API を使用します。 | -## PDF 解析プロバイダー +## ドキュメント解析プロバイダー -| プロバイダー | Provider ID | 機能 | -| ------------ | -------------- | ---------------------------------------- | -| unpdf | `unpdf` | テキスト、画像、metadata | +| 提供元 | Provider ID | 対応機能 | +| ------------ | -------------- | ------------------------------------- | +| unpdf | `unpdf` | テキスト、画像、メタデータ | | MinerU | `mineru` | テキスト、画像、表、数式、レイアウト解析 | | MinerU Cloud | `mineru-cloud` | テキスト、画像、表、数式、レイアウト解析 | +| AliDocMind | `alidocmind` | テキスト、画像、表、数式、レイアウト解析、OCR | + +## Web Search プロバイダー + +Web Search provider にはモデルセレクターはありません。SearXNG はサーバー側ホスティング設定のみ対応;その他の provider は各自の要件に従い API キーや Base URL を設定してください。 + +| 提供元 | Provider ID | +| ------------ | ----------- | +| Tavily | `tavily` | +| Bocha | `bocha` | +| Brave Search | `brave` | +| Baidu | `baidu` | +| MiniMax | `minimax` | +| Doubao | `doubao` | +| SearXNG | `searxng` | diff --git a/packages/docs/content/docs/supported-models.mdx b/packages/docs/content/docs/supported-models.mdx index e263b07e33..9db2c3a5a5 100644 --- a/packages/docs/content/docs/supported-models.mdx +++ b/packages/docs/content/docs/supported-models.mdx @@ -3,52 +3,55 @@ title: Supported Models description: Built-in model and provider lists for the open-source OpenMAIC edition. --- -This page lists the built-in provider registry for the open-source OpenMAIC edition. Built-in providers can be configured in Settings, environment variables, or `server-providers.yml`; add custom OpenAI-compatible providers in Settings. Availability also depends on provider accounts, region, and server configuration. +This page lists the provider registry built into the open-source OpenMAIC edition. Built-in providers can be configured through Settings, environment variables, or `server-providers.yml`; add custom OpenAI-compatible providers in Settings. Availability also depends on the provider account, region, and server configuration, and hosted instances may hide some built-in models with an allowlist. ## LLM models -Use model IDs as `provider:model-id` in `DEFAULT_MODEL` or YAML. For example: `openai:gpt-5.4-mini`, `qwen:qwen3.6-flash`, or `ollama:llama3.3`. +Use `provider:model-id` for models in `DEFAULT_MODEL` or YAML, for example `openai:gpt-5.6`, `qwen:qwen3.7-plus`, or `ollama:llama3.3`. | Provider | Provider ID | Built-in models | | --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | -| Claude | `anthropic` | Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | -| Gemini | `google` | Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | -| GLM | `glm` | GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | -| Qwen | `qwen` | Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | +| Azure OpenAI | `azure` | No preset model IDs; enter the Azure OpenAI deployment name. | +| Claude | `anthropic` | Claude Opus 4.8 (`claude-opus-4-8`)
Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | +| Gemini | `google` | Gemini 3.5 Flash (`gemini-3.5-flash`)
Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | +| GLM | `glm` | GLM-5.2 (`glm-5.2`)
GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | +| Qwen | `qwen` | Qwen3.7 Plus (`qwen3.7-plus`)
Qwen3.7 Max (`qwen3.7-max`)
Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | | DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | -| Kimi | `kimi` | Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | -| MiniMax | `minimax` | MiniMax M2.7 (`MiniMax-M2.7`) | +| Kimi | `kimi` | Kimi K2.7 Code (`kimi-k2.7-code`)
Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`)
Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | +| MiniMax | `minimax` | MiniMax M3 (`MiniMax-M3`)
MiniMax M2.7 (`MiniMax-M2.7`) | | SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | -| Doubao | `doubao` | Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | +| Doubao | `doubao` | Doubao Seed 2.1 Pro (`doubao-seed-2-1-pro-260628`)
Doubao Seed 2.1 Turbo (`doubao-seed-2-1-turbo-260628`)
Doubao Seed Evolving (`doubao-seed-evolving`)
Doubao Seed Character (`doubao-seed-character-260628`)
Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | | OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | | Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | | Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | -| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2.5 (`mimo-v2.5`) | +| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2 Pro (`mimo-v2-pro`)
MiMo V2.5 (`mimo-v2.5`)
MiMo V2 Omni (`mimo-v2-omni`)
MiMo V2 Flash (`mimo-v2-flash`) | | Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | -| Lemonade | `lemonade` | Qwen3.5 4B GGUF (`Qwen3.5-4B-GGUF`)
Qwen3 4B GGUF (`Qwen3-4B-GGUF`)
GPT-OSS 20B (`gpt-oss-20b`)
Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | +| Lemonade | `lemonade` | Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | ## Image generation models | Provider | Provider ID | Built-in models | | -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | +| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 5.0 Lite Alias (`doubao-seedream-5-0-lite-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | | OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | | Qwen Image | `qwen-image` | Qwen Image 2.0 Pro (`qwen-image-2.0-pro`)
Qwen Image 2.0 Pro 2026-03-03 (`qwen-image-2.0-pro-2026-03-03`)
Qwen Image 2.0 (`qwen-image-2.0`)
Qwen Image 2.0 2026-03-03 (`qwen-image-2.0-2026-03-03`)
Qwen Image Max (`qwen-image-max`)
Qwen Image Max 2025-12-30 (`qwen-image-max-2025-12-30`)
Qwen Image Plus (`qwen-image-plus`)
Qwen Image Plus 2026-01-09 (`qwen-image-plus-2026-01-09`)
Qwen Image (`qwen-image`)
Z-Image Turbo (`z-image-turbo`) | | Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | | MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | | Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | +| ComfyUI Image | `comfyui-image` | No preset model ID; discovers and selects ComfyUI workflows from `public/` at runtime. | | Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | ## Video generation models | Provider | Provider ID | Built-in models | | ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedance | `seedance` | Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | +| Seedance | `seedance` | Seedance 2.0 (`doubao-seedance-2-0-260128`)
Seedance 2.0 Fast (`doubao-seedance-2-0-fast-260128`)
Seedance 2.0 Mini (`doubao-seedance-2-0-mini-260615`)
Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | | Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | | Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | -| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 2.3 Fast (`MiniMax-Hailuo-2.3-Fast`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | +| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | | Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | +| HappyHorse | `happyhorse` | HappyHorse 1.0 T2V (`happyhorse-1.0-t2v`) | | Sora | `sora` | No built-in model list yet. The registry entry is reserved and generation is not available in the current adapter. | ## TTS models and backends @@ -74,13 +77,29 @@ This table lists model selectors and self-hosted backends. It does not enumerate | ------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | | Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | +| Azure STT | `azure-asr` | No model selector. Uses Azure Speech to Text. | | Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | | Browser Native ASR | `browser-native` | No model selector. Uses the browser Web Speech API. | -## PDF parsing providers +## Document parsing providers | Provider | Provider ID | Features | | ------------ | -------------- | ----------------------------------------------- | | unpdf | `unpdf` | Text, images, metadata | | MinerU | `mineru` | Text, images, tables, formulas, layout analysis | | MinerU Cloud | `mineru-cloud` | Text, images, tables, formulas, layout analysis | +| AliDocMind | `alidocmind` | Text, images, tables, formulas, layout analysis, OCR | + +## Web Search providers + +Web Search providers have no model selector. SearXNG supports server-managed configuration only; configure an API key or Base URL for other providers as required. + +| Provider | Provider ID | +| ------------ | ----------- | +| Tavily | `tavily` | +| Bocha | `bocha` | +| Brave Search | `brave` | +| Baidu | `baidu` | +| MiniMax | `minimax` | +| Doubao | `doubao` | +| SearXNG | `searxng` | diff --git a/packages/docs/content/docs/supported-models.ru.mdx b/packages/docs/content/docs/supported-models.ru.mdx index a266e00f98..a09eaa4a6c 100644 --- a/packages/docs/content/docs/supported-models.ru.mdx +++ b/packages/docs/content/docs/supported-models.ru.mdx @@ -1,86 +1,105 @@ --- title: Поддерживаемые модели -description: Встроенные списки моделей и providers для open-source edition OpenMAIC. +description: Встроенные модели и список провайдеров в открытой версии OpenMAIC. --- -На этой странице перечислен встроенный provider registry для open-source edition OpenMAIC. Встроенные provider настраиваются через Settings, переменные окружения или `server-providers.yml`; custom OpenAI-compatible provider добавляются в Settings. Доступность также зависит от аккаунта provider, региона и серверной конфигурации. +На этой странице перечислен реестр провайдеров, встроенных в открытую версию OpenMAIC вместе с кодом. Встроенные провайдеры можно настроить через настройки, переменные окружения или конфигурацию `server-providers.yml`; пользовательские провайдеры, совместимые с OpenAI, добавляются в настройках. Конкретная доступность зависит от аккаунта провайдера, региона и конфигурации сервера; в управляемых инстансах некоторые встроенные модели могут быть скрыты через белый список. ## LLM модели -Используйте model IDs как `provider:model-id` в `DEFAULT_MODEL` или YAML. Например: `openai:gpt-5.4-mini`, `qwen:qwen3.6-flash` или `ollama:llama3.3`. - -| Provider | Provider ID | Встроенные модели | -| --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | -| Claude | `anthropic` | Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | -| Gemini | `google` | Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | -| GLM | `glm` | GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | -| Qwen | `qwen` | Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | -| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | -| Kimi | `kimi` | Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | -| MiniMax | `minimax` | MiniMax M2.7 (`MiniMax-M2.7`) | -| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | -| Doubao | `doubao` | Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | -| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | -| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | -| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | -| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2.5 (`mimo-v2.5`) | -| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | -| Lemonade | `lemonade` | Qwen3.5 4B GGUF (`Qwen3.5-4B-GGUF`)
Qwen3 4B GGUF (`Qwen3-4B-GGUF`)
GPT-OSS 20B (`gpt-oss-20b`)
Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | +`DEFAULT_MODEL` или запись модели в YAML имеет формат `provider:model-id`, например `openai:gpt-5.6`, `qwen:qwen3.7-plus`, `ollama:llama3.3`. + +| Провайдер | Provider ID | Встроенные модели | +| --------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | +| Azure OpenAI | `azure` | Нет предустановленных ID моделей; укажите имя развертывания Azure OpenAI. | +| Claude | `anthropic` | Claude Opus 4.8 (`claude-opus-4-8`)
Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | +| Gemini | `google` | Gemini 3.5 Flash (`gemini-3.5-flash`)
Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | +| GLM | `glm` | GLM-5.2 (`glm-5.2`)
GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | +| Qwen | `qwen` | Qwen3.7 Plus (`qwen3.7-plus`)
Qwen3.7 Max (`qwen3.7-max`)
Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | +| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | +| Kimi | `kimi` | Kimi K2.7 Code (`kimi-k2.7-code`)
Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`)
Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | +| MiniMax | `minimax` | MiniMax M3 (`MiniMax-M3`)
MiniMax M2.7 (`MiniMax-M2.7`) | +| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | +| Doubao | `doubao` | Doubao Seed 2.1 Pro (`doubao-seed-2-1-pro-260628`)
Doubao Seed 2.1 Turbo (`doubao-seed-2-1-turbo-260628`)
Doubao Seed Evolving (`doubao-seed-evolving`)
Doubao Seed Character (`doubao-seed-character-260628`)
Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | +| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | +| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | +| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | +| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2 Pro (`mimo-v2-pro`)
MiMo V2.5 (`mimo-v2.5`)
MiMo V2 Omni (`mimo-v2-omni`)
MiMo V2 Flash (`mimo-v2-flash`) | +| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | +| Lemonade | `lemonade` | Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | ## Модели генерации изображений -| Provider | Provider ID | Встроенные модели | -| -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | -| OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | +| Провайдер | Provider ID | Встроенные модели | +| --------------------| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 5.0 Lite Alias (`doubao-seedream-5-0-lite-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | +| OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | | Qwen Image | `qwen-image` | Qwen Image 2.0 Pro (`qwen-image-2.0-pro`)
Qwen Image 2.0 Pro 2026-03-03 (`qwen-image-2.0-pro-2026-03-03`)
Qwen Image 2.0 (`qwen-image-2.0`)
Qwen Image 2.0 2026-03-03 (`qwen-image-2.0-2026-03-03`)
Qwen Image Max (`qwen-image-max`)
Qwen Image Max 2025-12-30 (`qwen-image-max-2025-12-30`)
Qwen Image Plus (`qwen-image-plus`)
Qwen Image Plus 2026-01-09 (`qwen-image-plus-2026-01-09`)
Qwen Image (`qwen-image`)
Z-Image Turbo (`z-image-turbo`) | -| Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | +| Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | | MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | | Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | +| ComfyUI Image | `comfyui-image` | Нет предустановленных ID моделей; во время работы обнаруживает и выбирает workflow ComfyUI из `public/`. | | Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | ## Модели генерации видео -| Provider | Provider ID | Встроенные модели | -| ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedance | `seedance` | Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | -| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | -| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | -| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 2.3 Fast (`MiniMax-Hailuo-2.3-Fast`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | -| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | -| Sora | `sora` | Встроенного списка моделей пока нет. Registry entry зарезервирована, но generation в текущем adapter недоступна. | - -## TTS модели и backends - -В этой таблице перечислены model selectors и self-hosted backends. Она не перечисляет все voice options. - -| Provider | Provider ID | Модели или backends | -| ------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI TTS | `openai-tts` | GPT-4o Mini TTS (`gpt-4o-mini-tts`)
TTS-1 (`tts-1`)
TTS-1 HD (`tts-1-hd`) | -| Azure TTS | `azure-tts` | Model selector отсутствует. Использует настроенные Azure neural voices. | -| GLM TTS | `glm-tts` | GLM TTS (`glm-tts`) | -| Qwen TTS | `qwen-tts` | Qwen3 TTS Flash (`qwen3-tts-flash`)
Qwen3 TTS Instruct Flash (`qwen3-tts-instruct-flash`)
Qwen TTS (`qwen-tts`) | -| MiniMax TTS | `minimax-tts` | Speech 2.8 HD (`speech-2.8-hd`)
Speech 2.8 Turbo (`speech-2.8-turbo`)
Speech 2.6 HD (`speech-2.6-hd`)
Speech 2.6 Turbo (`speech-2.6-turbo`)
Speech 02 HD (`speech-02-hd`)
Speech 02 Turbo (`speech-02-turbo`) | -| VoxCPM2 | `voxcpm-tts` | VoxCPM2 (`voxcpm2`)
Backends: vLLM-Omni, Python API, Nano-vLLM | -| Lemonade TTS | `lemonade-tts` | Kokoro v1 (`kokoro-v1`) | -| Doubao TTS 2.0 | `doubao-tts` | Model selector отсутствует. Использует voice IDs Doubao TTS 2.0. | -| ElevenLabs TTS | `elevenlabs-tts` | Multilingual v2 (`eleven_multilingual_v2`)
Flash v2.5 (`eleven_flash_v2_5`)
Flash v2 (`eleven_flash_v2`) | -| Browser Native TTS | `browser-native-tts` | Model selector отсутствует. Использует каталог голосов браузера и операционной системы. | +| Провайдер | Provider ID | Встроенные модели | +| ---------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedance | `seedance` | Seedance 2.0 (`doubao-seedance-2-0-260128`)
Seedance 2.0 Fast (`doubao-seedance-2-0-fast-260128`)
Seedance 2.0 Mini (`doubao-seedance-2-0-mini-260615`)
Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | +| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | +| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | +| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | +| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | +| HappyHorse | `happyhorse` | HappyHorse 1.0 T2V (`happyhorse-1.0-t2v`) | +| Sora | `sora` | Нет встроенного списка моделей. В текущем реестре провайдер сохранён, но адаптер пока не доступен для генерации. | + +## TTS модели и бэкенды + +В этой таблице перечислены селекторы моделей и самохостинг бэкенды, без раскрытия полного списка голосов каждого провайдера. + +| Провайдер | Provider ID | Модель или бэкенд | +| ----------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI TTS | `openai-tts` | GPT-4o Mini TTS (`gpt-4o-mini-tts`)
TTS-1 (`tts-1`)
TTS-1 HD (`tts-1-hd`) | +| Azure TTS | `azure-tts` | Нет селектора моделей, используется настроенный Azure Neural Voices. | +| GLM TTS | `glm-tts` | GLM TTS (`glm-tts`) | +| Qwen TTS | `qwen-tts` | Qwen3 TTS Flash (`qwen3-tts-flash`)
Qwen3 TTS Instruct Flash (`qwen3-tts-instruct-flash`)
Qwen TTS (`qwen-tts`) | +| MiniMax TTS | `minimax-tts` | Speech 2.8 HD (`speech-2.8-hd`)
Speech 2.8 Turbo (`speech-2.8-turbo`)
Speech 2.6 HD (`speech-2.6-hd`)
Speech 2.6 Turbo (`speech-2.6-turbo`)
Speech 02 HD (`speech-02-hd`)
Speech 02 Turbo (`speech-02-turbo`) | +| VoxCPM2 | `voxcpm-tts` | VoxCPM2 (`voxcpm2`)
Бэкенды: vLLM-Omni, Python API, Nano-vLLM | +| Lemonade TTS | `lemonade-tts` | Kokoro v1 (`kokoro-v1`) | +| Doubao TTS 2.0 | `doubao-tts` | Нет селектора моделей, используется ID голосов Doubao TTS 2.0. | +| ElevenLabs TTS | `elevenlabs-tts` | Multilingual v2 (`eleven_multilingual_v2`)
Flash v2.5 (`eleven_flash_v2_5`)
Flash v2 (`eleven_flash_v2`) | +| Браузерный нативный TTS | `browser-native-tts` | Нет селектора моделей, используется список голосов, предоставляемый браузером и операционной системой. | ## ASR модели -| Provider | Provider ID | Встроенные модели | -| ------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | -| Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | -| Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | -| Browser Native ASR | `browser-native` | Model selector отсутствует. Использует браузерный Web Speech API. | +| Провайдер | Provider ID | Встроенные модели | +| ----------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | +| Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | +| Azure STT | `azure-asr` | Нет селектора моделей, используется Azure Speech to Text. | +| Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | +| Браузерный нативный ASR | `browser-native` | Нет селектора моделей, используется браузерный Web Speech API. | + +## Провайдеры парсинга документов + +| Провайдер | Provider ID | Возможности | +| --------------- | -------------- | ------------------------------------ | +| unpdf | `unpdf` | Текст, изображения, метаданные | +| MinerU | `mineru` | Текст, изображения, таблицы, формулы, анализ макета | +| MinerU Cloud | `mineru-cloud` | Текст, изображения, таблицы, формулы, анализ макета | +| AliDocMind | `alidocmind` | Текст, изображения, таблицы, формулы, анализ макета, OCR | + +## Провайдеры веб-поиска -## PDF parsing providers +Провайдеры веб-поиска не имеют селектора моделей. SearXNG поддерживает только серверную конфигурацию; другие провайдеры требуют настройки API ключа или базового URL согласно их требованиям. -| Provider | Provider ID | Возможности | -| ------------ | -------------- | ----------------------------------------------------- | -| unpdf | `unpdf` | Текст, изображения, metadata | -| MinerU | `mineru` | Текст, изображения, таблицы, формулы, layout analysis | -| MinerU Cloud | `mineru-cloud` | Текст, изображения, таблицы, формулы, layout analysis | +| Провайдер | Provider ID | +| --------------- | ----------- | +| Tavily | `tavily` | +| Bocha | `bocha` | +| Brave Search | `brave` | +| Baidu | `baidu` | +| MiniMax | `minimax` | +| Doubao | `doubao` | +| SearXNG | `searxng` | diff --git a/packages/docs/content/docs/supported-models.zh-tw.mdx b/packages/docs/content/docs/supported-models.zh-tw.mdx index d6d416bfdf..e0be30529d 100644 --- a/packages/docs/content/docs/supported-models.zh-tw.mdx +++ b/packages/docs/content/docs/supported-models.zh-tw.mdx @@ -3,53 +3,56 @@ title: 支援模型 description: 開源版 OpenMAIC 的內建模型與 provider 清單。 --- -本頁列出開源版 OpenMAIC 隨程式碼內建的 provider registry。內建 provider 可在 Settings、環境變數或 `server-providers.yml` 中設定;自訂 OpenAI 相容 provider 請在 Settings 中新增。實際可用性也取決於 provider 帳戶、地區與伺服器設定。 +本頁列出開源版 OpenMAIC 程式碼中內建的 provider registry。內建 provider 可以透過設定、環境變數或 `server-providers.yml` 設定;自訂 OpenAI 相容 provider 請在設定中新增。實際可用性也取決於 provider 帳號、所在地區和伺服器端設定;託管實例也可能透過白名單隱藏部分內建模型。 ## LLM 模型 -在 `DEFAULT_MODEL` 或 YAML 中,模型寫法是 `provider:model-id`。例如:`openai:gpt-5.4-mini`、`qwen:qwen3.6-flash` 或 `ollama:llama3.3`。 - -| 供應商 | Provider ID | 內建模型 | -| --------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | -| Claude | `anthropic` | Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | -| Gemini | `google` | Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | -| GLM | `glm` | GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | -| Qwen | `qwen` | Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | -| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | -| Kimi | `kimi` | Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | -| MiniMax | `minimax` | MiniMax M2.7 (`MiniMax-M2.7`) | -| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | -| Doubao | `doubao` | Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | -| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | -| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | -| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | -| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2.5 (`mimo-v2.5`) | -| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | -| Lemonade | `lemonade` | Qwen3.5 4B GGUF (`Qwen3.5-4B-GGUF`)
Qwen3 4B GGUF (`Qwen3-4B-GGUF`)
GPT-OSS 20B (`gpt-oss-20b`)
Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | +`DEFAULT_MODEL` 或 YAML 中的模型寫法是 `provider:model-id`,例如 `openai:gpt-5.6`、`qwen:qwen3.7-plus`、`ollama:llama3.3`。 + +| 供應商 | Provider ID | 內建模型 | +| --------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI | `openai` | GPT-5.6 Sol (`gpt-5.6`)
GPT-5.6 Terra (`gpt-5.6-terra`)
GPT-5.6 Luna (`gpt-5.6-luna`)
GPT-5.5 (`gpt-5.5`)
GPT-5.4 Pro (`gpt-5.4-pro`)
GPT-5.4 (`gpt-5.4`)
GPT-5.4 Mini (`gpt-5.4-mini`)
GPT-5.4 Nano (`gpt-5.4-nano`) | +| Azure OpenAI | `azure` | 無預設模型 ID;填寫 Azure OpenAI deployment name。 | +| Claude | `anthropic` | Claude Opus 4.8 (`claude-opus-4-8`)
Claude Opus 4.7 (`claude-opus-4-7`)
Claude Opus 4.6 (`claude-opus-4-6`)
Claude Sonnet 4.6 (`claude-sonnet-4-6`)
Claude Sonnet 4.5 (`claude-sonnet-4-5`)
Claude Haiku 4.5 (`claude-haiku-4-5`) | +| Gemini | `google` | Gemini 3.5 Flash (`gemini-3.5-flash`)
Gemini 3.1 Pro Preview (`gemini-3.1-pro-preview`)
Gemini 3 Flash Preview (`gemini-3-flash-preview`)
Gemini 2.5 Flash (`gemini-2.5-flash`)
Gemini 2.5 Flash Lite (`gemini-2.5-flash-lite`)
Gemini 2.5 Pro (`gemini-2.5-pro`) | +| GLM | `glm` | GLM-5.2 (`glm-5.2`)
GLM-5.1 (`glm-5.1`)
GLM-5V-Turbo (`glm-5v-turbo`)
GLM-5 (`glm-5`)
GLM-4.7 (`glm-4.7`)
GLM-4.7-FlashX (`glm-4.7-flashx`)
GLM-4.7-Flash (`glm-4.7-flash`)
GLM-4.6 (`glm-4.6`)
GLM-4.6V (`glm-4.6v`)
GLM-4.6V-Flash (`glm-4.6v-flash`) | +| Qwen | `qwen` | Qwen3.7 Plus (`qwen3.7-plus`)
Qwen3.7 Max (`qwen3.7-max`)
Qwen3.6 Max Preview (`qwen3.6-max-preview`)
Qwen3.6 Plus (`qwen3.6-plus`)
Qwen3.6 Plus 2026-04-02 (`qwen3.6-plus-2026-04-02`)
Qwen3.6 Flash (`qwen3.6-flash`)
Qwen3.6 Flash 2026-04-16 (`qwen3.6-flash-2026-04-16`)
Qwen3.6 35B A3B (`qwen3.6-35b-a3b`)
Qwen3.5 Flash (`qwen3.5-flash`)
Qwen3.5 Plus (`qwen3.5-plus`)
Qwen3 Max (`qwen3-max`)
Qwen3 VL Plus (`qwen3-vl-plus`) | +| DeepSeek | `deepseek` | DeepSeek V4 Pro (`deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek-v4-flash`) | +| Kimi | `kimi` | Kimi K2.7 Code (`kimi-k2.7-code`)
Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`)
Kimi K2.6 (`kimi-k2.6`)
Kimi K2.5 (`kimi-k2.5`)
Kimi K2 Thinking (`kimi-k2-thinking`) | +| MiniMax | `minimax` | MiniMax M3 (`MiniMax-M3`)
MiniMax M2.7 (`MiniMax-M2.7`) | +| SiliconFlow | `siliconflow` | DeepSeek-V3.2 (`deepseek-ai/DeepSeek-V3.2`)
DeepSeek-R1 (`deepseek-ai/DeepSeek-R1`)
DeepSeek-R1-Distill-Qwen-7B (`deepseek-ai/DeepSeek-R1-Distill-Qwen-7B`)
Qwen3-VL-32B-Instruct (`Qwen/Qwen3-VL-32B-Instruct`)
Kimi-K2.5 (`Pro/moonshotai/Kimi-K2.5`)
GLM-4.1V-9B-Thinking (`THUDM/GLM-4.1V-9B-Thinking`)
GLM-Z1-Rumination-32B (`THUDM/GLM-Z1-Rumination-32B-0414`) | +| Doubao | `doubao` | Doubao Seed 2.1 Pro (`doubao-seed-2-1-pro-260628`)
Doubao Seed 2.1 Turbo (`doubao-seed-2-1-turbo-260628`)
Doubao Seed Evolving (`doubao-seed-evolving`)
Doubao Seed Character (`doubao-seed-character-260628`)
Doubao Seed 2.0 Pro (`doubao-seed-2-0-pro-260215`)
Doubao Seed 2.0 Lite (`doubao-seed-2-0-lite-260215`)
Doubao Seed 2.0 Mini (`doubao-seed-2-0-mini-260215`)
Doubao Seed 1.8 (`doubao-seed-1-8-251228`) | +| OpenRouter | `openrouter` | DeepSeek V4 Pro (`deepseek/deepseek-v4-pro`)
DeepSeek V4 Flash (`deepseek/deepseek-v4-flash`) | +| Grok | `grok` | Grok 4.20 Reasoning (`grok-4.20-reasoning`)
Grok 4.20 (`grok-4.20`)
Grok 4.20 Multi-Agent (`grok-4.20-multi-agent`)
Grok 4.1 Fast Reasoning (`grok-4-1-fast-reasoning`)
Grok 4.1 Fast (`grok-4-1-fast-non-reasoning`)
Grok Code Fast (`grok-code-fast-1`) | +| Tencent Hunyuan | `tencent-hunyuan` | Tencent Hy3 Preview (`hy3-preview`) | +| Xiaomi MiMo | `xiaomi` | MiMo V2.5 Pro (`mimo-v2.5-pro`)
MiMo V2 Pro (`mimo-v2-pro`)
MiMo V2.5 (`mimo-v2.5`)
MiMo V2 Omni (`mimo-v2-omni`)
MiMo V2 Flash (`mimo-v2-flash`) | +| Ollama | `ollama` | Llama 3.3 70B (`llama3.3`)
Gemma 3 12B (`gemma3`)
DeepSeek R1 (`deepseek-r1`) | +| Lemonade | `lemonade` | Gemma 4 26B A4B IT GGUF (`Gemma-4-26B-A4B-it-GGUF`) | ## 圖像生成模型 | 供應商 | Provider ID | 內建模型 | | -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | +| Seedream | `seedream` | Seedream 5.0 Lite (`doubao-seedream-5-0-260128`)
Seedream 5.0 Lite Alias (`doubao-seedream-5-0-lite-260128`)
Seedream 4.5 (`doubao-seedream-4-5-251128`)
Seedream 4.0 (`doubao-seedream-4-0-250828`)
Seedream 3.0 (`doubao-seedream-3-0-t2i-250415`) | | OpenAI Image | `openai-image` | GPT Image 2 (`gpt-image-2`)
GPT Image 2 2026-04-21 (`gpt-image-2-2026-04-21`)
GPT Image 1.5 (`gpt-image-1.5`)
GPT Image 1 (`gpt-image-1`)
GPT Image 1 Mini (`gpt-image-1-mini`)
ChatGPT Image Latest (`chatgpt-image-latest`) | | Qwen Image | `qwen-image` | Qwen Image 2.0 Pro (`qwen-image-2.0-pro`)
Qwen Image 2.0 Pro 2026-03-03 (`qwen-image-2.0-pro-2026-03-03`)
Qwen Image 2.0 (`qwen-image-2.0`)
Qwen Image 2.0 2026-03-03 (`qwen-image-2.0-2026-03-03`)
Qwen Image Max (`qwen-image-max`)
Qwen Image Max 2025-12-30 (`qwen-image-max-2025-12-30`)
Qwen Image Plus (`qwen-image-plus`)
Qwen Image Plus 2026-01-09 (`qwen-image-plus-2026-01-09`)
Qwen Image (`qwen-image`)
Z-Image Turbo (`z-image-turbo`) | | Nano Banana (Gemini) | `nano-banana` | Gemini 3.1 Flash Image (Nano Banana 2) (`gemini-3.1-flash-image-preview`)
Gemini 3 Pro Image (Nano Banana Pro) (`gemini-3-pro-image-preview`)
Gemini 2.5 Flash Image (Nano Banana) (`gemini-2.5-flash-image`) | | MiniMax Image | `minimax-image` | Image 01 (`image-01`)
Image 01 Live (`image-01-live`) | | Grok Image | `grok-image` | Grok Imagine Image (`grok-imagine-image`)
Grok Imagine Image Pro (`grok-imagine-image-pro`) | +| ComfyUI Image | `comfyui-image` | 無預設模型 ID;執行時從 `public/` 中發現並選擇 ComfyUI workflow。 | | Lemonade Image | `lemonade` | Qwen Image GGUF (`Qwen-Image-GGUF`)
Stable Diffusion (sd-cpp) (`sd-cpp`) | ## 影片生成模型 -| 供應商 | Provider ID | 內建模型 | -| ------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Seedance | `seedance` | Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | -| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | -| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | -| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 2.3 Fast (`MiniMax-Hailuo-2.3-Fast`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | -| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | -| Sora | `sora` | 暫無內建模型清單。registry 中保留了該 provider,但目前 adapter 尚不可用於生成。 | +| 供應商 | Provider ID | 內建模型 | +| ------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Seedance | `seedance` | Seedance 2.0 (`doubao-seedance-2-0-260128`)
Seedance 2.0 Fast (`doubao-seedance-2-0-fast-260128`)
Seedance 2.0 Mini (`doubao-seedance-2-0-mini-260615`)
Seedance 1.5 Pro (`doubao-seedance-1-5-pro-251215`)
Seedance 1.0 Pro (`doubao-seedance-1-0-pro-250528`)
Seedance 1.0 Pro Fast (`doubao-seedance-1-0-pro-fast-251015`)
Seedance 1.0 Lite T2V (`doubao-seedance-1-0-lite-t2v-250428`) | +| Kling | `kling` | Kling V2.6 (`kling-v2-6`)
Kling V1.6 (`kling-v1-6`) | +| Veo | `veo` | Veo 3.1 Fast (`veo-3.1-fast-generate-001`)
Veo 3.1 (`veo-3.1-generate-001`)
Veo 3.0 Fast (`veo-3.0-fast-generate-001`)
Veo 3.0 (`veo-3.0-generate-001`)
Veo 2.0 (`veo-2.0-generate-001`) | +| MiniMax Video | `minimax-video` | Hailuo 2.3 (`MiniMax-Hailuo-2.3`)
Hailuo 02 (`MiniMax-Hailuo-02`)
T2V-01 Director (`T2V-01-Director`)
T2V-01 (`T2V-01`) | +| Grok Video | `grok-video` | Grok Imagine Video (`grok-imagine-video`) | +| HappyHorse | `happyhorse` | HappyHorse 1.0 T2V (`happyhorse-1.0-t2v`) | +| Sora | `sora` | 目前沒有內建模型清單。registry 中保留了此 provider,但目前的 adapter 尚無法用於生成。 | ## TTS 模型與後端 @@ -58,7 +61,7 @@ description: 開源版 OpenMAIC 的內建模型與 provider 清單。 | 供應商 | Provider ID | 模型或後端 | | -------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | OpenAI TTS | `openai-tts` | GPT-4o Mini TTS (`gpt-4o-mini-tts`)
TTS-1 (`tts-1`)
TTS-1 HD (`tts-1-hd`) | -| Azure TTS | `azure-tts` | 無模型選擇器,使用已設定的 Azure neural voices。 | +| Azure TTS | `azure-tts` | 無模型選擇器,使用已設定的 Azure Neural Voices。 | | GLM TTS | `glm-tts` | GLM TTS (`glm-tts`) | | Qwen TTS | `qwen-tts` | Qwen3 TTS Flash (`qwen3-tts-flash`)
Qwen3 TTS Instruct Flash (`qwen3-tts-instruct-flash`)
Qwen TTS (`qwen-tts`) | | MiniMax TTS | `minimax-tts` | Speech 2.8 HD (`speech-2.8-hd`)
Speech 2.8 Turbo (`speech-2.8-turbo`)
Speech 2.6 HD (`speech-2.6-hd`)
Speech 2.6 Turbo (`speech-2.6-turbo`)
Speech 02 HD (`speech-02-hd`)
Speech 02 Turbo (`speech-02-turbo`) | @@ -66,7 +69,7 @@ description: 開源版 OpenMAIC 的內建模型與 provider 清單。 | Lemonade TTS | `lemonade-tts` | Kokoro v1 (`kokoro-v1`) | | Doubao TTS 2.0 | `doubao-tts` | 無模型選擇器,使用 Doubao TTS 2.0 音色 ID。 | | ElevenLabs TTS | `elevenlabs-tts` | Multilingual v2 (`eleven_multilingual_v2`)
Flash v2.5 (`eleven_flash_v2_5`)
Flash v2 (`eleven_flash_v2`) | -| 瀏覽器原生 TTS | `browser-native-tts` | 無模型選擇器,使用瀏覽器與作業系統提供的音色清單。 | +| 瀏覽器原生 TTS | `browser-native-tts` | 無模型選擇器,使用瀏覽器和作業系統提供的音色清單。 | ## ASR 模型 @@ -74,13 +77,29 @@ description: 開源版 OpenMAIC 的內建模型與 provider 清單。 | -------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | OpenAI Whisper | `openai-whisper` | GPT-4o Mini Transcribe (`gpt-4o-mini-transcribe`)
GPT-4o Transcribe (`gpt-4o-transcribe`)
Whisper-1 (`whisper-1`) | | Qwen ASR | `qwen-asr` | Qwen3 ASR Flash (`qwen3-asr-flash`) | +| Azure STT | `azure-asr` | 無模型選擇器,使用 Azure Speech to Text。 | | Lemonade ASR | `lemonade-asr` | Whisper Base (`Whisper-Base`)
Whisper Large v3 (`Whisper-Large-v3`)
Whisper Large v3 Turbo (`Whisper-Large-v3-Turbo`)
Whisper Medium (`Whisper-Medium`)
Whisper Small (`Whisper-Small`)
Whisper Tiny (`Whisper-Tiny`) | | 瀏覽器原生 ASR | `browser-native` | 無模型選擇器,使用瀏覽器 Web Speech API。 | -## PDF 解析供應商 +## 文件解析供應商 + +| 供應商 | Provider ID | 能力 | +| ------------ | -------------- | ------------------------------------- | +| unpdf | `unpdf` | 文字、圖片、後設資料 | +| MinerU | `mineru` | 文字、圖片、表格、公式、版面分析 | +| MinerU Cloud | `mineru-cloud` | 文字、圖片、表格、公式、版面分析 | +| AliDocMind | `alidocmind` | 文字、圖片、表格、公式、版面分析、OCR | + +## Web Search 供應商 + +Web Search provider 沒有模型選擇器。SearXNG 僅支援伺服器端託管設定;其他 provider 可依各自需求設定 API key 或 Base URL。 -| 供應商 | Provider ID | 能力 | -| ------------ | -------------- | -------------------------------- | -| unpdf | `unpdf` | 文字、圖片、metadata | -| MinerU | `mineru` | 文字、圖片、表格、公式、版面分析 | -| MinerU Cloud | `mineru-cloud` | 文字、圖片、表格、公式、版面分析 | +| 供應商 | Provider ID | +| ------------ | ----------- | +| Tavily | `tavily` | +| Bocha | `bocha` | +| Brave Search | `brave` | +| Baidu | `baidu` | +| MiniMax | `minimax` | +| Doubao | `doubao` | +| SearXNG | `searxng` | diff --git a/packages/docs/content/docs/voxcpm.ar.mdx b/packages/docs/content/docs/voxcpm.ar.mdx index 182aabef51..393067c9d7 100644 --- a/packages/docs/content/docs/voxcpm.ar.mdx +++ b/packages/docs/content/docs/voxcpm.ar.mdx @@ -1,80 +1,80 @@ --- title: VoxCPM2 -description: TTS ذاتي الاستضافة مع استنساخ الصوت. Backends والإعداد وإدارة الأصوات. +description: تحويل النص إلى كلام ذاتي الاستضافة مع استنساخ الصوت. اختيار الخلفية، التكوين وإدارة الأصوات. --- -[VoxCPM2](https://github.com/OpenBMB/VoxCPM) هو نموذج TTS مفتوح المصدر من OpenBMB يدعم استنساخ الصوت. يأتي OpenMAIC مع adapter؛ شغّل VoxCPM على عتادك وسيتصل به OpenMAIC. +[VoxCPM2](https://github.com/OpenBMB/VoxCPM) هو نموذج تحويل النص إلى كلام مفتوح المصدر من OpenBMB يدعم استنساخ الصوت. يأتي OpenMAIC مزودًا بمحول؛ شغّل VoxCPM على جهازك ليتصل به OpenMAIC. ## متى تستخدم VoxCPM2 -- تريد TTS حتميا ومجانيا بلا تسعير لكل حرف. -- تريد استنساخ الصوت بحيث يحصل كل agent على صوته من مقطع مرجعي قصير. -- تعمل on-prem أو في بيئة air-gapped. +- إذا كنت تريد تحويل نص إلى كلام مستقر ومجاني بدون احتساب لكل حرف. +- إذا كنت تريد استنساخ الصوت (حيث يستخدم كل وكيل مقطعًا صوتيًا قصيرًا لإنشاء صوته الخاص). +- إذا كنت تعمل في بيئة محلية أو معزولة عن الإنترنت. -إذا كنت تريد صوتا افتراضيا فقط، فالموفران المدمجان **Doubao** أو **OpenAI-compatible** أبسط. راجع [الإعدادات → موفرو TTS](./configuration.mdx). +إذا كنت تريد صوتًا افتراضيًا فقط، فإن الموفرين المدمجين **Doubao** أو **OpenAI-compatible** أبسط. راجع [الإعدادات → موفرو تحويل النص إلى كلام](./configuration.mdx#موفرو-tts). -## 1. شغّل VoxCPM backend +## 1. شغّل خلفية VoxCPM -يدعم OpenMAIC ثلاثة أساليب نشر. تتحدث الثلاثة مع OpenMAIC adapter نفسه؛ ما عليك إلا تبديل backend في Settings. +يدعم OpenMAIC ثلاثة أشكال نشر. الثلاثة تستخدم نفس محول OpenMAIC، كل ما عليك هو تبديل نوع الخلفية في الإعدادات. -| Backend | Endpoint | متى تستخدمه | -| -------------- | ------------------ | ---------------------------------------------------- | -| **vLLM-Omni** | `/v1/audio/speech` | OpenAI-compatible speech endpoint، مثالي لخوادم GPU. | -| **Python API** | `/tts/upload` | VoxCPM Python runtime الرسمي عبر FastAPI. | -| **Nano-vLLM** | `/generate` | نشر Nano-vLLM FastAPI خفيف للأجهزة الأصغر. | +| الخلفية | نقطة النهاية | حالات الاستخدام | +| -------------- | ------------------ | ---------------------------------------------- | +| **vLLM-Omni** | `/v1/audio/speech` | نقطة نهاية صوت متوافقة مع OpenAI، مناسبة لخوادم GPU. | +| **Python API** | `/tts/upload` | بيئة تشغيل Python الرسمية لـ VoxCPM (تعتمد على FastAPI). | +| **Nano-vLLM** | `/generate` | نشر خفيف لـ Nano-vLLM FastAPI، مناسب للأجهزة الصغيرة. | -تعليمات إعداد كل backend موجودة في [مستودع VoxCPM](https://github.com/OpenBMB/VoxCPM). تشغيل محلي نموذجي: +تعليمات تشغيل كل خلفية موجودة في [مستودع VoxCPM](https://github.com/OpenBMB/VoxCPM). مثال تشغيل محلي سريع نموذجي: ```bash -# vLLM-Omni example +# مثال vLLM-Omni pip install vllm python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 -# endpoint at http://localhost:8000/v1 +# نقطة النهاية على http://localhost:8000/v1 ``` -## 2. وجّه OpenMAIC إليه +## 2. اجعل OpenMAIC يتصل بها -هناك طريقتان. اختر واحدة. +اختر إحدى الطريقتين. -### A. لكل مستخدم (Settings UI بلا تغيير في الخادم) +### A. لكل مستخدم (واجهة الإعدادات بدون تعديل الخادم) -افتح **Settings → Text-to-Speech → VoxCPM2**، اختر backend، والصق Base URL. تؤكد معاينة Request URL أن OpenMAIC سيضرب endpoint الصحيح. +افتح **الإعدادات → تحويل النص إلى كلام → VoxCPM2**، اختر نوع الخلفية، والصق عنوان Base URL. ستعرض معاينة Request URL العنوان الفعلي الذي سيطلبه OpenMAIC. -هذا المسار مناسب للاختبار الفردي و per-browser overrides. لا يؤثر على المستخدمين الآخرين. +هذه الطريقة مناسبة للاختبار الفردي أو لتجاوز الإعدادات حسب المتصفح، ولا تؤثر على المستخدمين الآخرين. -### B. على الخادم (env var، افتراضي للجميع) +### B. على مستوى الخادم (متغير بيئة، افتراضي للجميع) -اضبط التالي في `.env.local` أو YAML config. لا تحتاج إلى API key. +أضف السطر التالي في `.env.local` أو ملف تكوين YAML. لا تحتاج إلى مفتاح API. ```bash TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -القيمة الافتراضية على الخادم تملأ Settings UI للمستخدمين الجدد. عندما يكون provider مُدارا من الخادم، لا يمكن للعميل تجاوز هذه الإعدادات. +الإعداد على الخادم يُوزع للمستخدمين؛ إذا كان الموفر مدارًا من الخادم، لا يمكن للعملاء تجاوز هذه الإعدادات. ## 3. إدارة الأصوات -يملك VoxCPM2 ثلاثة voice modes، كلها ضمن **Settings → Text-to-Speech → VoxCPM2 → VoxCPM Voices**. +يحتوي VoxCPM2 على ثلاثة أوضاع صوتية، كلها ضمن **الإعدادات → تحويل النص إلى كلام → VoxCPM2 → أصوات VoxCPM**. -### Auto Voice (افتراضي) +### الصوت التلقائي (افتراضي) -ينشئ OpenMAIC voice prompt من persona الخاصة بكل agent وقت synthesis. لا يحتاج إلى إعداد، وهذا ما يحدث إن لم تغيّر شيئا. +يقوم OpenMAIC بإنشاء موجه صوتي ديناميكي بناءً على شخصية كل وكيل أثناء التوليد. لا يحتاج إلى إعداد، وهذا هو الوضع الافتراضي إذا لم تغير شيئًا. -### Prompt voice +### صوت الموجه -صف الصوت بلغة طبيعية. تصبح النتيجة صوتا قابلا لإعادة الاستخدام ويمكن إسناده إلى أي agent. +وصف الصوت بلغة طبيعية. النتيجة صوت قابل لإعادة الاستخدام ويمكن تعيينه لأي وكيل. > _مثال: "صوت معلمة دافئ، هادئ ومشجع، متوسط الطبقة، نطق واضح."_ -### Clone voice +### استنساخ الصوت -ارفع مقطع صوت مرجعي قصير (≤ 60 ثانية، ≤ 10 MB) أو سجّل واحدا في المتصفح. يُخزّن المقطع في IndexedDB ويُرسل إلى VoxCPM backend عند كل synthesis. +ارفع مقطع صوتي مرجعي قصير (≤ 60 ثانية، ≤ 10 ميجابايت) أو سجّل مقطعًا في المتصفح. يُخزن المقطع في IndexedDB ويُرسل إلى خلفية VoxCPM عند كل توليد. -## استكشاف الأخطاء +## استكشاف الأخطاء الشائعة -| العَرَض | السبب المحتمل | -| ------------------------------- | ------------------------------------------------------------------------------ | -| 404 في معاينة Request URL | تم اختيار backend خاطئ. راجع جدول endpoints في الخطوة 1. | -| أول clone request يتوقف نحو 30s | cold-start في backend. الطلبات التالية تعيد استخدام warm runtime. | -| ينقطع الصوت في منتصف الجملة | حد output token في backend. ارفع `--max-tokens` أو ما يكافئه في VoxCPM config. | -| 401 / 403 | ضبطت `TTS_VOXCPM_API_KEY` لـ backend لا يتوقعه. اتركه فارغا. | +| الظاهرة | السبب المحتمل | +| ---------------------------- | --------------------------------------------------------------------------- | +| معاينة Request URL تُرجع 404 | تم اختيار نوع خلفية خاطئ. راجع جدول نقاط النهاية في الخطوة 1. | +| أول طلب استنساخ يستغرق ~30 ثانية | بدء بارد للخلفية. الطلبات التالية تستخدم بيئة تشغيل دافئة. | +| الصوت ينقطع في منتصف الجملة | حد عدد رموز الإخراج في الخلفية. زد قيمة `--max-tokens` أو ما يعادلها في تكوين VoxCPM. | +| 401 / 403 | ضبطت `TTS_VOXCPM_API_KEY` لخلفية لا تتطلب مفتاحًا. اتركها فارغة. | diff --git a/packages/docs/content/docs/voxcpm.ja.mdx b/packages/docs/content/docs/voxcpm.ja.mdx index b76921674e..faf2249ed7 100644 --- a/packages/docs/content/docs/voxcpm.ja.mdx +++ b/packages/docs/content/docs/voxcpm.ja.mdx @@ -1,80 +1,80 @@ --- title: VoxCPM2 -description: 音声クローン対応のセルフホスト TTS。バックエンド、設定、音声管理。 +description: 自ホスト TTS と音声クローン。バックエンド選択、設定、音声管理。 --- -[VoxCPM2](https://github.com/OpenBMB/VoxCPM) は OpenBMB による、音声クローン対応のオープンソース TTS モデルです。OpenMAIC には adapter が含まれているため、自分のハードウェアで VoxCPM を実行すれば OpenMAIC から接続できます。 +[VoxCPM2](https://github.com/OpenBMB/VoxCPM) は OpenBMB が公開する音声クローン対応のオープンソース TTS モデルです。OpenMAIC にはアダプターが組み込まれているため、自分の環境で VoxCPM を動かせばすぐに連携できます。 -## VoxCPM2 を使う場面 +## VoxCPM2 を使うタイミング -- 文字数課金のない、決定的で無料の TTS が必要。 -- 各 agent に短い参照クリップから固有の声を持たせる音声クローンを使いたい。 -- オンプレミスまたは閉域環境で実行している。 +- 安定的で無料、文字数課金なしの TTS が欲しいとき。 +- 各エージェントに短いサンプル音声から固有の声を持たせる音声クローンを使いたいとき。 +- オンプレミスやオフライン環境で運用しているとき。 -単に既定の声が必要なだけなら、組み込みの **Doubao** または **OpenAI 互換** プロバイダーの方が簡単です。[設定 → TTS プロバイダー](./configuration.mdx#tts-プロバイダー)を参照してください。 +単にデフォルトの声が欲しいだけなら、組み込みの **Doubao** または **OpenAI 互換** プロバイダーのほうが簡単です。[設定 → TTS プロバイダー](./configuration.mdx#tts-プロバイダー)を参照してください。 -## 1. VoxCPM backend を起動する +## 1. VoxCPM バックエンドを起動する -OpenMAIC は 3 つのデプロイ方式に対応しています。3 つとも同じ OpenMAIC adapter を使い、Settings で backend を切り替えるだけです。 +OpenMAIC は 3 種類のデプロイ形態に対応しています。いずれも同じ OpenMAIC アダプターを使い、設定画面でバックエンドを切り替えるだけです。 -| Backend | Endpoint | 使いどころ | -| -------------- | ------------------ | ----------------------------------------------------------- | -| **vLLM-Omni** | `/v1/audio/speech` | OpenAI 互換の speech endpoint。GPU サーバーに適しています。 | -| **Python API** | `/tts/upload` | FastAPI 経由の公式 VoxCPM Python runtime。 | -| **Nano-vLLM** | `/generate` | 小さめのマシン向けの軽量 Nano-vLLM FastAPI デプロイ。 | +| バックエンド | エンドポイント | 適用シーン | +| -------------- | ------------------ | ---------------------------------------------- | +| **vLLM-Omni** | `/v1/audio/speech` | OpenAI 互換の音声エンドポイント。GPU サーバー向け。 | +| **Python API** | `/tts/upload` | VoxCPM 公式 Python ランタイム(FastAPI ベース)。 | +| **Nano-vLLM** | `/generate` | 軽量な Nano-vLLM FastAPI デプロイ、小規模マシン向け。 | -各 backend のセットアップ手順は [VoxCPM リポジトリ](https://github.com/OpenBMB/VoxCPM)にあります。典型的なローカル quick-start: +各バックエンドの起動方法は [VoxCPM リポジトリ](https://github.com/OpenBMB/VoxCPM)に記載されています。典型的なローカルでのクイックスタート例: ```bash -# vLLM-Omni example +# vLLM-Omni の例 pip install vllm python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 -# endpoint at http://localhost:8000/v1 +# エンドポイントは http://localhost:8000/v1 ``` ## 2. OpenMAIC から接続する -方法は 2 つです。どちらかを選んでください。 +方法は 2 通りあります。どちらかを選んでください。 -### A. ユーザー単位(Settings UI、サーバー変更なし) +### A. ユーザー単位(設定 UI、サーバー側変更なし) -**Settings → Text-to-Speech → VoxCPM2** を開き、backend を選んで Base URL を貼り付けます。Request URL preview で、OpenMAIC が正しい endpoint に接続することを確認できます。 +**設定 → テキスト読み上げ → VoxCPM2** を開き、バックエンドを選択して Base URL を貼り付けます。Request URL プレビューで OpenMAIC が正しいエンドポイントに接続しているか確認できます。 -この方法は個人テストやブラウザー単位の上書きに向いています。他のユーザーには影響しません。 +この方法は個人テストやブラウザ単位の上書きに適しており、他ユーザーには影響しません。 -### B. サーバー側(環境変数、全員の既定値) +### B. サーバー側既定(環境変数、全ユーザー共通) -`.env.local`(または YAML config)に次を設定します。API key は不要です。 +`.env.local` または YAML 設定に以下を追加します。API キーは不要です。 ```bash TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -サーバー側の既定値は、初回ユーザーの Settings UI を初期化します。provider がサーバー管理の場合、クライアントからこれらの設定を上書きできません。 +サーバー側の既定値は初回ユーザーの設定 UI に反映されます。プロバイダーがサーバー管理の場合、クライアント側からこれらの設定を上書きできません。 ## 3. 音声管理 -VoxCPM2 には 3 つの音声モードがあり、すべて **Settings → Text-to-Speech → VoxCPM2 → VoxCPM Voices** にあります。 +VoxCPM2 には 3 種類の音声モードがあり、すべて **設定 → テキスト読み上げ → VoxCPM2 → VoxCPM 音声** にあります。 ### Auto Voice(既定) -OpenMAIC は合成時に各 agent の persona から voice prompt を生成します。設定は不要で、何も変更しなければこの挙動になります。 +OpenMAIC は合成時に各エージェントのペルソナから voice prompt を自動生成します。設定不要で、何も変更しなければこの動作になります。 -### Prompt voice +### Prompt voice(プロンプト音声) -自然言語で声を記述します。結果は再利用でき、任意の agent に割り当てられます。 +自然言語で声の特徴を記述します。生成した音声は再利用可能で、任意のエージェントに割り当てられます。 -> _例:「温かい女性教師の声。落ち着いて励ます調子、中音域、明瞭な発音。」_ +> _例:「温かみのある女性教師の声。落ち着いて励ます調子、中音域、明瞭な発音。」_ -### Clone voice +### Clone voice(クローン音声) -短い参照音声クリップ(60 秒以下、10 MB 以下)をアップロードするか、ブラウザーで録音します。クリップは IndexedDB に保存され、合成のたびに VoxCPM backend へ送信されます。 +60 秒以下、10 MB 以下の短い参照音声クリップをアップロードするか、ブラウザで録音します。クリップは IndexedDB に保存され、合成時に VoxCPM バックエンドへ送信されます。 ## トラブルシューティング | 症状 | 考えられる原因 | | ------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| Request URL preview が 404 | 選択した backend が間違っています。手順 1 の endpoint 表を確認してください。 | -| 初回の clone request が約 30 秒止まる | backend の cold-start です。以降の clone は warm runtime を再利用します。 | -| 音声が文の途中で切れる | backend の出力 token limit が原因です。`--max-tokens` または VoxCPM config の相当項目を引き上げてください。 | -| 401 / 403 | key を想定していない backend に `TTS_VOXCPM_API_KEY` を設定しています。空にしてください。 | +| Request URL プレビューが 404 | 選択したバックエンドが間違っています。手順 1 のエンドポイント表を確認してください。 | +| 初回のクローンリクエストが約 30 秒止まる | バックエンドのコールドスタートです。以降のクローンはウォームランタイムを再利用します。 | +| 音声が文の途中で途切れる | バックエンドの出力トークン制限が原因です。`--max-tokens` または VoxCPM 設定の該当項目を増やしてください。 | +| 401 / 403 エラー | キー不要のバックエンドに `TTS_VOXCPM_API_KEY` を設定しています。空にしてください。 | diff --git a/packages/docs/content/docs/voxcpm.mdx b/packages/docs/content/docs/voxcpm.mdx index be39c83e80..ccb0deeb8c 100644 --- a/packages/docs/content/docs/voxcpm.mdx +++ b/packages/docs/content/docs/voxcpm.mdx @@ -1,29 +1,29 @@ --- title: VoxCPM2 -description: Self-hosted TTS with voice cloning. Backends, configuration, and voice management. +description: Self-hosted TTS and voice cloning. Backend selection, configuration, and voice management. --- -[VoxCPM2](https://github.com/OpenBMB/VoxCPM) is an open-source TTS model from OpenBMB with voice cloning. OpenMAIC ships an adapter; run VoxCPM on your own hardware and OpenMAIC will talk to it. +[VoxCPM2](https://github.com/OpenBMB/VoxCPM) is an open-source TTS model from OpenBMB with voice cloning support. OpenMAIC includes an adapter, so you only need to run VoxCPM on your own machine and connect it. ## When to use VoxCPM2 -- You want deterministic, free TTS with no per-character billing. -- You want voice cloning, where each agent gets its own voice from a short reference clip. -- You're running on-prem or in an air-gapped environment. +- You want stable, free TTS with no per-character charges. +- You want voice cloning, with each Agent using a short sample to generate its own voice. +- You deploy locally or in an offline environment. -If you just want a default voice, the built-in **Doubao** or **OpenAI-compatible** providers are simpler. See [Configuration → TTS providers](./configuration.mdx#tts-providers). +If you only need one default voice, the built-in **Doubao** or **OpenAI-compatible** provider is simpler. See [Configuration → TTS providers](./configuration.mdx#tts-providers). ## 1. Run a VoxCPM backend -OpenMAIC supports three deployment styles. All three speak the same OpenMAIC adapter; you only toggle the backend in Settings. +OpenMAIC supports three deployment modes. All three use the same OpenMAIC adapter; select the corresponding backend type in Settings. -| Backend | Endpoint | When to use | -| -------------- | ------------------ | ----------------------------------------------------------- | -| **vLLM-Omni** | `/v1/audio/speech` | OpenAI-compatible speech endpoint, ideal for GPU servers. | -| **Python API** | `/tts/upload` | Official VoxCPM Python runtime via FastAPI. | -| **Nano-vLLM** | `/generate` | Lightweight Nano-vLLM FastAPI deployment for smaller boxes. | +| Backend | Endpoint | Best for | +| -------------- | ------------------ | --------------------------------------------- | +| **vLLM-Omni** | `/v1/audio/speech` | OpenAI-compatible speech endpoint for GPU servers. | +| **Python API** | `/tts/upload` | Official VoxCPM Python runtime based on FastAPI. | +| **Nano-vLLM** | `/generate` | Lightweight Nano-vLLM FastAPI deployment for smaller machines. | -Setup instructions for each backend live in the [VoxCPM repo](https://github.com/OpenBMB/VoxCPM). A typical local quick-start: +See the [VoxCPM repository](https://github.com/OpenBMB/VoxCPM) for startup instructions for each backend. A typical local quick start: ```bash # vLLM-Omni example @@ -34,47 +34,47 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 ## 2. Point OpenMAIC at it -Two ways. Pick one. +Choose one of the following methods. ### A. Per-user (Settings UI, no server change) -Open **Settings → Text-to-Speech → VoxCPM2**, pick the backend, and paste your Base URL. The Request URL preview confirms OpenMAIC will hit the right endpoint. +Open **Settings → Text to speech → VoxCPM2**, choose the backend type, and paste the Base URL. The Request URL preview below shows the actual address OpenMAIC will call. -This path is best for individual testing and per-browser overrides. It does not affect other users. +This is suitable for personal testing and per-browser overrides, and does not affect other users. -### B. Server-side (env var, default for everyone) +### B. Server default (environment variable, shared by everyone) -Set the following in `.env.local` (or your YAML config). No API key is required. +Add the following line to `.env.local` or the YAML configuration. No API key is required. ```bash TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -The server-side default seeds the Settings UI for first-time users. When the provider is server-managed, clients cannot override these settings. +Server configuration is sent to users. If the provider is server-managed, clients cannot override these settings. ## 3. Voice management -VoxCPM2 has three voice modes, all under **Settings → Text-to-Speech → VoxCPM2 → VoxCPM Voices**. +VoxCPM2 has three voice modes under **Settings → Text to speech → VoxCPM2 → VoxCPM voices**. ### Auto Voice (default) -OpenMAIC generates a voice prompt from each agent's persona at synthesis time. No setup required. This is what you get if you don't change anything. +During synthesis, OpenMAIC dynamically generates a voice prompt from each Agent's persona. No configuration is required; this is what you get by doing nothing. ### Prompt voice -Describe the voice in natural language. The result is a reusable voice that any agent can be assigned to. +Describe a voice in natural language. Once generated, it can be reused and assigned to any Agent. -> _Example: "Warm female teacher voice, calm and encouraging, mid-pitch, clear articulation."_ +> _Example: “A warm female teacher voice, calm and encouraging, mid-range, with clear articulation.”_ ### Clone voice -Upload a short reference audio clip (≤ 60 seconds, ≤ 10 MB) or record one in the browser. The clip is stored in IndexedDB and sent to your VoxCPM backend on each synthesis. +Upload a short reference audio clip (≤ 60 seconds, ≤ 10 MB), or record one directly in the browser. The audio is stored in IndexedDB and sent to the backend with each synthesis request. ## Troubleshooting -| Symptom | Likely cause | -| ------------------------------ | ------------------------------------------------------------------------------------------------ | -| 404 on the Request URL preview | Wrong backend selected. Check the endpoint table in step 1. | -| First clone request hangs ~30s | Cold-start on the backend. Subsequent clones reuse the warm runtime. | -| Audio cuts off mid-sentence | Output token limit on the backend. Raise `--max-tokens` or the equivalent in your VoxCPM config. | -| 401 / 403 | You set `TTS_VOXCPM_API_KEY` for a backend that doesn't expect one. Leave it empty. | +| Symptom | Likely cause | +| ------------------------------- | -------------------------------------------------------------------------- | +| Request URL preview returns 404 | The wrong backend type is selected; compare it with the endpoint table in step 1. | +| First clone request takes ~30s | The backend is cold-starting; later clones reuse the warm runtime. | +| Audio stops partway through | The backend output token limit is too low; increase `--max-tokens` or the corresponding VoxCPM setting. | +| 401 / 403 | `TTS_VOXCPM_API_KEY` was set for a backend that does not require a key; leave it empty. | diff --git a/packages/docs/content/docs/voxcpm.ru.mdx b/packages/docs/content/docs/voxcpm.ru.mdx index 7002cda158..2c1fc2e8dd 100644 --- a/packages/docs/content/docs/voxcpm.ru.mdx +++ b/packages/docs/content/docs/voxcpm.ru.mdx @@ -1,80 +1,80 @@ --- title: VoxCPM2 -description: Self-hosted TTS с клонированием голоса. Backends, конфигурация и управление голосами. +description: Самостоятельный TTS с клонированием голоса. Выбор backend, настройка и управление голосами. --- -[VoxCPM2](https://github.com/OpenBMB/VoxCPM) — open-source TTS model от OpenBMB с клонированием голоса. OpenMAIC поставляется с adapter; запустите VoxCPM на своем hardware, и OpenMAIC сможет к нему обращаться. +[VoxCPM2](https://github.com/OpenBMB/VoxCPM) — это open-source TTS-модель от OpenBMB с поддержкой клонирования голоса. OpenMAIC поставляется с адаптером, который позволяет запускать VoxCPM на собственном оборудовании и интегрировать его. ## Когда использовать VoxCPM2 -- Нужен deterministic и бесплатный TTS без оплаты за символы. -- Нужно клонирование голоса, чтобы каждый agent получал собственный голос из короткого reference clip. -- Вы запускаете систему on-prem или в air-gapped environment. +- Если нужен стабильный и бесплатный TTS без оплаты за количество символов. +- Если требуется клонирование голоса (каждому агенту присваивается уникальный голос на основе короткого эталонного аудиоклипа). +- Если система разворачивается локально или в изолированной среде. -Если нужен просто default voice, встроенные providers **Doubao** или **OpenAI-compatible** проще. См. [Конфигурация → TTS providers](./configuration.mdx). +Если нужен просто стандартный голос, проще использовать встроенных провайдеров **Doubao** или **OpenAI-совместимых**. См. [Конфигурация → TTS провайдеры](./configuration.mdx#tts-провайдеры). -## 1. Запустите VoxCPM backend +## 1. Запустите backend VoxCPM -OpenMAIC поддерживает три варианта deployment. Все три используют один и тот же OpenMAIC adapter; нужно лишь выбрать backend в Settings. +OpenMAIC поддерживает три варианта развертывания. Все они используют один и тот же адаптер OpenMAIC, достаточно выбрать нужный backend в настройках. -| Backend | Endpoint | Когда использовать | -| -------------- | ------------------ | ---------------------------------------------------------- | -| **vLLM-Omni** | `/v1/audio/speech` | OpenAI-compatible speech endpoint, удобен для GPU servers. | -| **Python API** | `/tts/upload` | Официальный VoxCPM Python runtime через FastAPI. | -| **Nano-vLLM** | `/generate` | Легкий Nano-vLLM FastAPI deployment для небольших машин. | +| Backend | Endpoint | Когда использовать | +| -------------- | ------------------ | -------------------------------------------------- | +| **vLLM-Omni** | `/v1/audio/speech` | OpenAI-совместимый голосовой endpoint, подходит для GPU-серверов. | +| **Python API** | `/tts/upload` | Официальный Python runtime VoxCPM на базе FastAPI. | +| **Nano-vLLM** | `/generate` | Легковесный FastAPI backend Nano-vLLM, для маломощных машин. | -Инструкции по настройке каждого backend есть в [репозитории VoxCPM](https://github.com/OpenBMB/VoxCPM). Типичный локальный quick-start: +Инструкции по запуску каждого backend есть в [репозитории VoxCPM](https://github.com/OpenBMB/VoxCPM). Пример быстрого локального старта: ```bash -# vLLM-Omni example +# Пример vLLM-Omni pip install vllm python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 -# endpoint at http://localhost:8000/v1 +# endpoint будет доступен по адресу http://localhost:8000/v1 ``` -## 2. Направьте OpenMAIC на backend +## 2. Настройте OpenMAIC для работы с backend -Есть два способа. Выберите один. +Есть два варианта, выберите один. -### A. Для одного пользователя (Settings UI, без изменений сервера) +### A. Для одного пользователя (через UI настроек, без изменений на сервере) -Откройте **Settings → Text-to-Speech → VoxCPM2**, выберите backend и вставьте Base URL. Request URL preview подтвердит, что OpenMAIC обращается к правильному endpoint. +Откройте **Настройки → Текст-в-речь → VoxCPM2**, выберите тип backend и вставьте Base URL. Внизу появится превью Request URL, показывающее, куда OpenMAIC будет отправлять запросы. -Этот путь удобен для индивидуального тестирования и per-browser overrides. Он не влияет на других пользователей. +Этот способ удобен для личного тестирования и переопределения настроек в браузере, не влияя на других пользователей. -### B. На стороне сервера (env var, значение по умолчанию для всех) +### B. На стороне сервера (переменная окружения, значение по умолчанию для всех) -Добавьте следующее в `.env.local` или YAML config. API key не нужен. +Добавьте в `.env.local` или YAML-конфигурацию следующую строку. API ключ не требуется. ```bash TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -Серверное значение по умолчанию заполняет Settings UI для новых пользователей. Если provider управляется сервером, клиент не может переопределить эти настройки. +Серверная настройка будет использоваться по умолчанию для всех пользователей. Если провайдер управляется сервером, клиенты не смогут переопределить эти параметры. ## 3. Управление голосами -У VoxCPM2 есть три voice modes, все находятся в **Settings → Text-to-Speech → VoxCPM2 → VoxCPM Voices**. +VoxCPM2 поддерживает три режима голосов, все они доступны в **Настройки → Текст-в-речь → VoxCPM2 → VoxCPM Voices**. ### Auto Voice (по умолчанию) -OpenMAIC генерирует voice prompt из persona каждого agent во время synthesis. Настройка не требуется. Это поведение используется, если ничего не менять. +OpenMAIC во время синтеза динамически генерирует voice prompt на основе персонажа каждого агента. Настройка не требуется — это поведение по умолчанию. ### Prompt voice -Опишите голос естественным языком. Результат можно переиспользовать и назначать любому agent. +Опишите голос с помощью естественного языка. Полученный голос можно сохранить и назначать любому агенту. -> _Пример: «Теплый женский голос учителя, спокойный и поддерживающий, средняя высота, четкая артикуляция.»_ +> _Пример: «Тёплый женский голос учителя, спокойный и поддерживающий, средний диапазон, чёткая артикуляция.»_ ### Clone voice -Загрузите короткий reference audio clip (≤ 60 секунд, ≤ 10 MB) или запишите его в браузере. Clip хранится в IndexedDB и отправляется на ваш VoxCPM backend при каждом synthesis. +Загрузите короткий эталонный аудиоклип (≤ 60 секунд, ≤ 10 МБ) или запишите его прямо в браузере. Клип хранится в IndexedDB и отправляется на backend VoxCPM при каждом синтезе. -## Troubleshooting +## Часто возникающие проблемы -| Симптом | Вероятная причина | -| ------------------------------- | ------------------------------------------------------------------------------------------------------ | -| 404 в Request URL preview | Выбран неправильный backend. Проверьте таблицу endpoint в шаге 1. | -| Первый clone request висит ~30s | Cold-start на backend. Последующие clone requests используют warm runtime. | -| Audio обрывается посреди фразы | Лимит output tokens на backend. Увеличьте `--max-tokens` или соответствующий параметр в VoxCPM config. | -| 401 / 403 | Вы задали `TTS_VOXCPM_API_KEY` для backend, который его не ожидает. Оставьте пустым. | +| Симптом | Возможная причина | +| ------------------------------- | ---------------------------------------------------------------------------------------------------- | +| Превью Request URL возвращает 404 | Выбран неправильный backend. Проверьте таблицу endpoint в шаге 1. | +| Первый запрос клонирования занимает ~30 секунд | Backend холодно стартует, последующие запросы используют уже разогретый runtime. | +| Аудио обрывается посреди фразы | Ограничение на количество выходных токенов на backend. Увеличьте параметр `--max-tokens` или соответствующую настройку в VoxCPM. | +| 401 / 403 | Вы указали `TTS_VOXCPM_API_KEY` для backend, который не требует ключа. Оставьте значение пустым. | diff --git a/packages/docs/content/docs/voxcpm.zh-tw.mdx b/packages/docs/content/docs/voxcpm.zh-tw.mdx index 11d59e0571..4d591e152d 100644 --- a/packages/docs/content/docs/voxcpm.zh-tw.mdx +++ b/packages/docs/content/docs/voxcpm.zh-tw.mdx @@ -1,29 +1,29 @@ --- title: VoxCPM2 -description: 自託管 TTS 與聲音複製。後端選型、設定和聲音管理。 +description: 自託管 TTS 與聲音複製。後端選擇、設定和聲音管理。 --- -[VoxCPM2](https://github.com/OpenBMB/VoxCPM) 是 OpenBMB 開源的 TTS 模型,支援聲音複製。OpenMAIC 內建適配器,把 VoxCPM 跑在自己的硬體上即可對接。 +[VoxCPM2](https://github.com/OpenBMB/VoxCPM) 是 OpenBMB 開源的 TTS 模型,支援聲音複製。OpenMAIC 內建適配器,只要在自己的機器上執行 VoxCPM 即可對接。 ## 什麼時候使用 VoxCPM2 - 想要穩定、免費的 TTS,沒有字元計費。 -- 想要聲音複製,讓每個 agent 都能從一段短參考音訊取得自己的音色。 +- 想要聲音複製(每個 Agent 都能從一段短參考音訊生成自己的音色)。 - 在本機部署或離線環境中執行。 -如果只是想要一個預設音色,內建的 **Doubao** 或 **OpenAI 相容** 供應商會更簡單。請見[設定 → TTS 供應商](./configuration.mdx#tts-供應商)。 +如果只需要一個預設音色,使用內建的 **Doubao** 或 **OpenAI 相容** 供應商會更簡單。請見[設定 → TTS 供應商](./configuration.mdx#tts-供應商)。 ## 1. 啟動 VoxCPM 後端 -OpenMAIC 支援三種部署形態。三種都使用同一個 OpenMAIC 適配器,你只需要在 Settings 中切換後端類型。 +OpenMAIC 支援三種部署形態,三種都使用同一個 OpenMAIC 適配器。你只需要在設定中切換對應的後端類型即可。 -| 後端 | 端點 | 適用場景 | -| -------------- | ------------------ | --------------------------------------------- | -| **vLLM-Omni** | `/v1/audio/speech` | OpenAI 相容的語音端點,適合 GPU 伺服器。 | -| **Python API** | `/tts/upload` | VoxCPM 官方 Python runtime(透過 FastAPI)。 | +| 後端 | 端點 | 適用場景 | +| -------------- | ------------------ | -------------------------------------------- | +| **vLLM-Omni** | `/v1/audio/speech` | OpenAI 相容的語音端點,適合 GPU 伺服器。 | +| **Python API** | `/tts/upload` | VoxCPM 官方 Python runtime(透過 FastAPI)。 | | **Nano-vLLM** | `/generate` | 輕量的 Nano-vLLM FastAPI 部署,適合小型機器。 | -每種後端的具體啟動方式請見 [VoxCPM 倉庫](https://github.com/OpenBMB/VoxCPM)。典型的本機快速啟動如下: +每種後端的啟動方式請見 [VoxCPM 儲存庫](https://github.com/OpenBMB/VoxCPM)。典型的本機快速啟動方式如下: ```bash # vLLM-Omni 範例 @@ -34,47 +34,47 @@ python -m vllm_omni.server --model openbmb/VoxCPM2 --port 8000 ## 2. 讓 OpenMAIC 對接它 -兩種方式,選一種即可。 +請選擇下列其中一種方式。 -### A. 單一使用者(Settings UI,不改伺服器) +### A. 單一使用者(設定 UI,不修改伺服器) -打開 **Settings → Text-to-Speech → VoxCPM2**,選擇後端類型並貼上 Base URL。Request URL 預覽會確認 OpenMAIC 將呼叫正確端點。 +開啟 **設定 → 語音合成 → VoxCPM2**,選擇後端類型並貼上 Base URL。下方的 Request URL 預覽會顯示 OpenMAIC 實際呼叫的位址。 -這條路適合個人測試和每個瀏覽器各自覆蓋設定,不會影響其他使用者。 +此方式適合個人測試,也能讓每個瀏覽器各自覆寫設定,不會影響其他使用者。 ### B. 伺服器端預設(環境變數,所有人共用) -在 `.env.local`(或 YAML 設定)中加入下列內容。不需要 API key。 +在 `.env.local` 或 YAML 設定中加入下列內容,不需要 API key。 ```bash TTS_VOXCPM_BASE_URL=http://localhost:8000/v1 ``` -伺服器端預設值會作為新使用者首次進入 Settings UI 時的初始值。若 provider 由伺服器託管,用戶端無法覆蓋這些設定。 +伺服器端設定會傳送給使用者;如果 provider 由伺服器端託管,用戶端便無法覆寫這些設定。 ## 3. 聲音管理 -VoxCPM2 有三種聲音模式,全部都在 **Settings → Text-to-Speech → VoxCPM2 → VoxCPM Voices** 下。 +VoxCPM2 有三種聲音模式,全部位於 **設定 → 語音合成 → VoxCPM2 → VoxCPM 音色**。 ### Auto Voice(預設) -OpenMAIC 會在合成時根據每個 agent 的人設動態生成 voice prompt。無需設定;不改任何東西就是這個效果。 +OpenMAIC 會在合成時根據每個 Agent 的人設動態生成 voice prompt。無需任何設定;不變更任何項目就是此模式。 -### Prompt voice +### Prompt voice(提示詞音色) -用自然語言描述聲音。生成結果可以重複使用,並分配給任意 agent。 +使用自然語言描述音色。生成後可以重複使用,並分配給任意 Agent。 > _範例:「溫暖的女老師聲音,平穩而鼓勵,中音域,吐字清晰。」_ -### Clone voice +### Clone voice(聲音複製) -上傳一段短參考音訊(≤ 60 秒,≤ 10 MB),或直接在瀏覽器中錄音。音訊會存放在 IndexedDB 中,並在每次合成時送到你的 VoxCPM 後端。 +上傳一段短參考音訊(≤ 60 秒,≤ 10 MB),或直接在瀏覽器中錄音。音訊會儲存在 IndexedDB 中,並在每次合成時傳送至後端。 ## 疑難排解 -| 現象 | 可能原因 | -| -------------------------- | ----------------------------------------------------------------- | -| Request URL 預覽返回 404 | 後端類型選錯了,請對照第 1 步的端點表。 | -| 第一次複製請求等待約 30 秒 | 後端冷啟動;後續複製會重用已暖機的 runtime。 | -| 音訊說到一半就中斷 | 後端輸出 token 數受限,調高 `--max-tokens` 或 VoxCPM 的對應設定。 | -| 401 / 403 | 為不需要 key 的後端設定了 `TTS_VOXCPM_API_KEY`,留空即可。 | +| 現象 | 可能原因 | +| ------------------------ | --------------------------------------------------------------- | +| Request URL 預覽回傳 404 | 後端類型選錯了,請對照第 1 步的端點表。 | +| 第一次複製請求要等 ~30s | 後端冷啟動;後續複製會重用已暖機的 runtime。 | +| 音訊說到一半就中斷 | 後端輸出 token 數受限,請調高 `--max-tokens` 或對應的 VoxCPM 設定。 | +| 401 / 403 | 為不需要 key 的後端設定了 `TTS_VOXCPM_API_KEY`,留空即可。 |