智能体版本控制
使用分支、版本和流量部署,安全地试验智能体配置
智能体版本控制让你能够试验智能体的不同配置,而不会影响生产环境设置。创建隔离分支、测试更改,并通过按流量百分比部署逐步发布更新。
想进行 A/B 测试?请参阅 实验,了解针对线上流量测试智能体更改的推荐工作流程。
概览
版本控制系统提供:
- 任意时点智能体配置的不可变快照
- 用于在上线前测试更改的隔离分支
- 将更改逐步发布给一定比例用户的流量拆分
- 将任意分支的更改引入其他任意分支的合并
- 将 main 分支最新更改拉取到分支中的变基
为智能体启用版本控制后,便无法禁用。请在为现有智能体启用版本控制前慎重考虑。
核心概念
版本
版本是智能体在特定时间点的配置不可变快照。每个版本都有唯一 ID(格式:agtvrsn_xxxx),其中包含:
conversation_config- 系统提示词、LLM 设置、音色配置、工具、知识库platform_settings- 已版本化的设置子集,包括评估、组件、数据收集和安全设置workflow- 包含节点和边的完整工作流程定义
保存已启用版本控制的智能体更改时,会自动创建版本。版本创建后无法修改。
分支
分支是具名开发线,类似于 git 分支。你可以在隔离环境中处理更改,然后再合并回 main 分支。
- 每个已版本化的智能体都有一个不可删除或归档的 Main 分支
- 可从任意现有分支的任意版本创建额外分支,不限于 main
- 分支可合并到任意其他分支,非 main 分支可变基到 main 以拉取其最新更改
- 每个分支包含:id(
agtbrch_xxxx)、名称、描述和版本列表 - 分支名称可包含:字母、数字和
() [] {} - / .(最多 140 个字符)
流量部署
可按百分比将流量拆分到多个分支,实现逐步发布和 A/B 测试。
- 百分比总和必须始终恰好为 100%
- 流量路由基于对话 ID,具有确定性(同一用户始终会路由到同一分支)
- 只有流量为 0% 的未归档分支可以归档
草稿
未保存的更改会存储为草稿,让你无需立即创建新版本即可处理更改。
- 草稿按用户和分支区分(每位团队成员都有自己的草稿)
- 提交新版本时会自动丢弃草稿
- 合并到分支时也会丢弃草稿
启用版本控制
版本控制为选择性功能,必须手动启用。你可以在创建新智能体时启用,也可以为现有智能体启用。
启用后无法禁用版本控制。这将永久更改智能体。
创建智能体时启用
通过控制台启用
通过 API 启用
在控制台中打开智能体,前往 设置 并启用版本控制。启用后,版本控制标签页将可用于管理分支、草稿、版本和流量部署。
为现有智能体启用
通过控制台启用
通过 API 启用
在控制台中打开智能体,前往 设置,然后开启版本控制。
启用版本控制后,将创建初始的 “Main” 分支,其中第一个版本包含当前智能体配置。
使用分支
创建分支
可从任意分支的任意版本创建分支,不限于 main。你还可以选择包含将应用于新分支初始版本的配置更改。
列出分支
获取分支详情
提交更改
更新已启用版本控制的智能体时,请指定 branch_id,以便在该分支上创建新版本。
通过控制台更新
通过 CLI 更新
通过 API 更新
打开智能体的 版本控制标签页,切换到目标分支,编辑配置并保存,即可创建新版本。
系统会在指定分支上自动创建新版本,并丢弃该用户在该分支上的所有现有草稿。
部署流量
使用 deployments 端点在各分支间分配流量。这支持逐步发布和 A/B 测试。
流量路由基于对话 ID,具有确定性,确保同一用户跨会话时始终访问同一分支。
合并分支
当你满意某个分支上的更改后,可将其合并到另一分支。任意未归档分支都可以合并到任意其他未归档分支,不限于合并到 main。
如需在合并前审核分支更改,或要访问你没有写入权限的分支,请创建合并提案,而非直接合并。
合并会:
- 在目标分支上创建一个包含源分支配置的新版本
- 可选择归档源分支(默认行为)
- 自动将流量从源分支转移到目标分支
如果源分支是从目标分支创建的(且没有超出目标分支的新提交),合并会因 no_new_changes_to_merge 失败;如果已合并到该目标分支,则会因 branch_already_merged 失败。
解决合并冲突
如果源分支和目标分支在分叉后都更改了某项设置,默认保留更新较晚的分支中的值。设置 force=True 可始终改用源分支的值,不受时间戳影响。
提交合并前,可预览合并结果,包括所有会被覆盖的字段:
将分支变基到 main
变基会将 main 分支的最新更改拉取到另一分支,类似 git rebase。这样可让长期存在的分支保持与 main 同步,同时暂不将该分支自身的更改合并回去。
变基会:
- 在该分支上创建一个包含 main 最新更改的新版本
- 保留分支自身的更改:如果某项设置在该分支和 main 中都被编辑,始终保留分支中的值
- 如果分支已包含 main 的所有更改,则因
branch_already_up_to_date失败
只有非 main 分支可以变基,且只能变基到 main。对 main 分支本身变基会返回 cannot_rebase_main 错误。
提交变基前可预览其结果:
归档分支
归档不再需要的分支,帮助保持分支列表整洁。
无法归档已分配流量的分支。归档前请移除所有流量。
可通过设置 archived=False 取消归档分支。
复制已版本化的智能体
复制智能体会创建一个新智能体,其中包含源智能体每个未归档分支的副本,而不只是 main 分支。
在复制的智能体中:
- main 分支基于源智能体 main 分支上的最新版本创建
- 每个其他未归档分支都会以相同名称和描述重新创建,并从该分支上的最新版本开始
- 每个分支都只有一个版本,因为不会复制版本历史记录
- 不会复制已归档分支和草稿
- 不会复制流量部署,因此所有流量都会进入 main 分支,直到你向其他分支部署流量
副本中的分支和版本 ID 均为新 ID,因此请更新所有对源智能体 ID 的引用。
获取特定版本
你可以获取智能体的特定版本或分支最新版本。
获取特定版本的智能体
获取分支最新版本的智能体
包含草稿更改
设置参考
已版本化设置
这些设置可以因版本和分支而异:
智能体级设置
这些设置属于智能体而非某个版本,因此所有分支共享:
智能体级设置只能在 main 分支上更改。在其他分支中,控制台会将其显示为只读;向非 main 分支发布版本时,对这些设置的任何更改都会被丢弃。之后将该分支合并到 main 也不会应用这些更改。请切换到 main 分支进行更改;在该分支发布后,更改将应用到所有分支。