概述
工作流可移植性让你可以在项目之间迁移配置,而无需手动重新创建。导入会从版本化 JSON 文档创建结构化输出、工作流和后端管道关联;导出会从已有资源生成可移植的 JSON 文档。
导入仅作用于当前在控制台中打开的项目,并且是原子操作:只要任一项校验失败或与目标项目冲突,ModelRiver 就不会创建任何资源。
权限
- 组织所有者和管理员可以预览和导入配置。
- 有项目访问权限的用户可以导出单个工作流或结构化输出。
导出配置
在单个资源行的菜单中选择 Export(导出) 即可导出。
导出工作流
- 打开项目的 Workflows(工作流)。
- 打开要迁移的工作流所在行的菜单。
- 选择 Export(导出)。
下载文件会包含所选工作流、它所关联的结构化输出,以及其后端管道事件所需的所有目标工作流。目标工作流的依赖会递归包含在内,因此生成的文件可以作为一个包导入。
导出结构化输出
- 打开项目的 Structured Outputs(结构化输出)。
- 打开要导出的结构化输出所在行的菜单。
- 选择 Export(导出)。
此下载文件仅包含该结构化输出,不包含可能使用它的工作流。
导入配置
你可以从 Workflows(工作流) 或 Structured Outputs(结构化输出) 打开同一个导入流程。
- 在控制台中打开目标项目。
- 选择 Import(导入)。
- 选择 JSON 文件,或将 JSON 粘贴到编辑器。
- 查看实时预览、警告和字段级错误。
- 选择 Import(导入),核对资源数量后确认。
预览是权威检查:在确认前,它会检查目标项目、已连接的提供商、模型可用性、配额、重复名称、Schema 和跨资源引用。导入成功后,相关列表会自动刷新。
可下载示例
下载完整的版本 1 示例。它包含两个测试模式工作流、两个结构化输出、一个备用模型、客户字段以及一个三步后端管道。
示例使用 test_mode: true,因此无需提供商凭据即可通过验证。在生产中使用工作流前,请关闭测试模式,并选择已在目标项目中连接且可用的提供商/模型组合。
版本 1 格式
每个文件都是 JSON 对象,并且只包含以下顶级字段:
| 字段 | 必填 | 说明 |
|---|---|---|
version | 是 | 必须为 1。 |
structures | 是 | 结构化输出定义数组。 |
workflows | 是 | 工作流定义数组。 |
结构化输出
每个结构化输出都需要 name、example 和 schema;description 是可选项。
| 字段 | 说明 |
|---|---|
name | 由工作流的 structure 字段引用的名称。 |
description | 可选的人类可读说明。 |
example | 用于测试模式的 JSON 示例数据;必须通过 Schema 校验。 |
schema | 接受 example 的受支持 JSON Schema 对象。 |
工作流
只有 name 始终必填。省略的可选字段会使用控制台的常规默认值。
| 字段 | 说明 |
|---|---|
name、description | 工作流标识和可选说明。 |
provider、model | 当 test_mode 为 false 时必填;提供商必须已在目标项目连接,模型必须可用。 |
backups | 可选备用数组;每项包含 provider 和 model。 |
request_type | 请求类型,默认为 chat。 |
system_instructions | 可选工作流指令。 |
structure | 同一导入文件中结构化输出的可选名称。 |
customer_fields | 作为客户数据返回的可选业务标识。 |
test_mode | 为 true 时不会调用提供商,因此会跳过提供商/模型可用性检查。 |
delay_response、cache_window_seconds | 可选的响应延迟和缓存设置。 |
backend_pipeline | 包含 enabled 和有序 events 的对象。 |
每个事件都需要 name,并且可包含 target_workflow。目标工作流是一个关联的 AI 步骤,必须是同一文件中的另一个工作流。请在管道的开始和结束使用未关联的后端事件,仅在中间事件中使用关联目标工作流。
引用、名称与拆分文件
导入时会规范化名称和引用。请使用清晰且唯一的 snake_case 名称,并确保文件中的引用名称一致。
- 工作流的
structure必须位于同一个文件中。 - 事件的
target_workflow必须位于同一个文件中,且不能指向自身。 - 目标项目不会覆盖、合并、跳过、重命名或复用已有的工作流或结构化输出名称。名称冲突会回滚整个导入。
如果文件过大,只能按相互独立的依赖组拆分。每个导入的工作流仍需要在自己的文件中包含其关联结构化输出和所有引用的目标工作流。
验证与限制
导入仅接受 JSON 格式版本 1。未知字段、无效类型、规范化后的重复名称、无法解析的引用、不受支持的模型和无效 Schema 都会在创建资源前被拒绝。
当前版本 1 的限制包括:
| 限制 | 最大值 |
|---|---|
| 导入文件大小 | 8 MiB |
| 每次导入的工作流 | 100 |
| 每次导入的结构化输出 | 100 |
| 每个工作流的管道事件 | 6 |
| 每个工作流的备用项 | 2 |
结构化输出示例必须满足其 JSON Schema。安全 Schema 配置支持本地 JSON Pointer 引用,但拒绝外部或递归引用,以及 pattern 和 patternProperties 等正则表达式关键字。
空文件("structures": [] 且 "workflows": [])可以预览,但不能导入。
故障排除
| 问题 | 处理方法 |
|---|---|
| 名称已被占用 | 在 JSON 中重命名该项,或导入到不存在该规范化名称的项目。 |
| 提供商未连接或模型不可用 | 在目标项目中连接提供商、选择可用模型,或在准备阶段使用测试模式。 |
| 无法解析结构化输出或目标工作流 | 将被引用资源加入同一文件,并检查规范化后的名称。 |
| 示例不匹配 Schema | 修改示例或 Schema,直到预览成功。 |
| 文件超过限制 | 仅拆分相互独立的工作流组,并保持所有依赖在一起。 |
安全与共享
导出文件不会包含提供商凭据、API 密钥、预算、日志或运行时请求数据。但它们仍可能包含敏感的系统指令、Schema 示例、说明和客户字段名称。
请将导出文件视为可能敏感的配置:将其存储在经过批准的位置、共享前进行审查,并且不要提交到公开仓库。