文档

安全发布工作流变更

在不影响生产环境的情况下编辑和测试 Draft;准备好后,再发布不可变的 Live 版本。

概述

工作流发布会把“你正在修改的配置”和“用户正在使用的配置”分开。

  • Draft(草稿) 是工作流可编辑的版本。
  • Live(线上) 是生产请求当前使用的已发布版本。
  • Revision(修订版本) 是过去某次发布留下的不可变记录。

保存编辑只会更新 Draft,不会改变生产环境。要改变生产环境,请先审核 Draft,再选择 Publish

TEXT
1 Draft Live

应用仍然使用相同的工作流名称发起调用。发布改变的是该名称背后的 Live 版本,不需要修改应用中的 API 调用。

Draft、Live 与 History

在控制台中打开一个工作流,通过编辑器顶部的版本选择器查看当前状态。

区域含义
Draft已保存但尚未进入生产环境的修改。
Live新生产请求当前使用的修订版本。
History过去已发布的版本;可以查看、恢复到 Draft 或回滚到其中一个版本。

如果表单中还有未保存的修改,先点击 Save draft。当 Draft 已保存且与 Live 不同时,拥有发布权限的用户就可以选择 Publish

如果不想保留已保存的 Draft,可以在版本选择器中选择 Discard draft。这会让 Draft 回到当前 Live 版本,但不会改变 Live。

发布前

发布前,请确认:

  1. 工作流处于 Production 模式。Test Mode 中的工作流不能发布。
  2. 所选 provider 和模型在当前项目中可用。
  3. 如果使用了结构化输出,它仍符合应用预期的响应格式。
  4. 如果后端流水线会调用其他工作流,目标工作流已经至少发布过一次,且仍处于启用状态。
  5. 同一项目中的后端流水线链接不能形成循环依赖
  6. 已保存需要审核的编辑。

测试 Draft 或历史版本

使用 Playground 测试你真正准备使用的配置。选择工作流后,在 Run 下选择模式:

模式运行内容
AutoDraft 存在未发布修改时运行 Draft;否则运行 Live。
Draft已保存但尚未发布的 Draft。
Live生产环境当前使用的版本。
Historical你选择的某个历史 Revision。

要测试新的提示词、模型、schema 或流水线变更时,使用 Draft。要以生产版本作为基线时,使用 Live。想比较旧版本而不影响生产环境时,使用 Historical。

对于异步 Playground 请求,ModelRiver 会让请求在排队和后续流水线回调期间一直使用开始时选定的配置。之后再编辑或发布工作流,也不会让正在进行的测试悄悄切换到其他版本。

审核变更

在版本选择器的 Draft 区域中点击 changes from LiveDiff vs Live 对话框提供两种视图:

  • Workflow:并排比较已发布的工作流路径和新的 Draft。
  • JSON:显示准确的字段级变更。

不要只检查原本打算修改的字段。还应确认模型和回退链路、系统指令、结构化输出、缓存或 session 设置,以及后端流水线步骤。

如果 Draft 与 Live 没有差异,就没有新的内容需要发布。

发布新的 Live 版本

  1. 保存 Draft,并查看 changes from Live
  2. 在工作流编辑器中选择 Publish
  3. 查看当前 Live 版本、Draft 的修订版本号和变更数量。
  4. 阅读所有提示,并为后端流水线工作流查看依赖闭包。
  5. 可选填写发布备注,然后选择 Publish 确认。

新 Revision 会成为 Live,供新的生产请求使用。此前的 Revision 仍会保留在 History 中。

理解发布提示

提示通常不会阻止发布,但会指出值得审核的行为:

提示需要考虑的内容
某个回调目标有更新的 Live 版本判断父工作流现在是否应该采用这个依赖。
已启用响应缓存现有缓存响应可能在过期前仍被返回。
已启用 Session memory已存在的 session 会保留此前的记忆;新的 Live 流量使用已发布配置。
某个回调 pin 使用旧版本确认继续使用这个旧依赖是有意为之。

调用其他工作流时

如果一个工作流在后端流水线步骤中调用另一个工作流,发布时会记录目标工作流当时的 Live 版本。这称为依赖 pin。

例如,order_review 调用 fraud_check 时,发布 order_review 会记录它审核过的准确 fraud_check 版本。之后即使 fraud_check 发布新版本,已经发布的 order_review 行为也不会被悄悄改变。

当依赖向前发布时,父工作流的 Draft 可以在审核时显示这一变化。只有当你希望采用新依赖时,再发布父工作流。

回滚或恢复

两个操作都从 History 开始,但适合不同情况:

操作适用场景会改变什么
Rollback当前 Live 版本需要停止服务新的生产请求。将 Live 移到选定的早期 Revision;当前 Draft 不会被发布。
Restore as draft想重新使用或调整某个旧版本,再决定是否发布。选定 Revision 会替换当前 Draft;Live 不会改变。

生产环境需要立即恢复时,使用 Rollback。旧版本适合作为新修改起点时,使用 Restore。恢复会替换当前 Draft,因此确认前请先保存或丢弃仍然需要的 Draft 工作。

如果被恢复的 Revision 使用了结构化输出,且原始结构的 schema 与示例仍匹配,ModelRiver 会重新关联该结构。若该结构已被编辑或删除,则会克隆一个带唯一名称的结构,避免影响其他工作流。

两种操作都不会删除修订历史。

命名、删除与导入

  • 工作流创建后不能修改名称。名称是应用在 API 中使用的稳定地址。
  • Delete(删除) 会停用工作流。修订历史保留在该记录上。
  • 删除后可以用相同名称创建新工作流。生产环境会将名称解析到新的活跃工作流。
  • Import(导入)Create(创建) 都会根据带入的配置生成初始 Live 修订版本(通常为 R1)。导入不会复制源项目的修订版本号。

权限

  • 组织所有者和管理员可以发布及回滚工作流。
  • 编辑者及以上可以保存 Draft、丢弃 Draft,以及将历史 Revision 恢复到 Draft。
  • 受保护项目中,编辑者权限可能受限;所有者和管理员始终拥有完整权限。

如果你看不到其他团队成员能看到的操作,请检查自己的组织角色和项目保护设置。

常见问题

保存 Draft 会改变生产环境吗?

不会。生产环境会继续使用 Live,直到你发布或回滚。

可以在发布前测试一个版本吗?

可以。保存 Draft 后,在 Playground 中选择 Draft

发布时,已经在运行的请求会怎样?

它会继续使用请求开始时选定的配置。发布只会改变新请求使用的版本。

可以在生产 API 中固定某个 Revision 吗?

不可以。生产 API 密钥始终对工作流名称执行 Live 修订版本。无法选择历史 Revision,也无法通过请求头在生产环境覆盖 Live。

响应中可能包含修订版本元数据(例如 x-modelriver-revisionx-modelriver-configuration-source: live),便于在日志中关联实际运行的版本。

可以回到旧版本而不丢失新版本吗?

可以。Rollback 会把 Live 移到旧 Revision,但不会删除之后的版本。你可以随时在 History 中查看或恢复它们。

下一步