工作原理
四张图看懂 SIDERIUS
每张图只讲一件事。后半页再把模块、连线、适配器、汇总器、分发器、路由和循环逐个讲细。
一圈就是一次研究迭代
左右滑动可以看到整张图。
不管谁来调用,能力模块都一样
左右滑动可以看到整张图。
人、固定工作流或语言模型编排器决定调用顺序;每个能力模块保留自己的推理和工具。
来源(图中文字为英文):SIDERIUS 论文 (opens in a new tab) 编排设置(英文) (opens in a new tab)
没有哪个数字能身兼所有角色
左右滑动可以看到整张图。
只有科学选择这一项给结果排名;有效性和好坏分开检查。
来源(图中文字为英文):SIDERIUS 论文 (opens in a new tab) 目标和指标(英文) (opens in a new tab)
每个位置都是同一份带类型的约定
左右滑动可以看到整张图。
人和智能体可以互换:给任何一步出主意、亲自坐上某一步的位置,或者只单独用一个模块。
来源(图中文字为英文):SIDERIUS 文档 (opens in a new tab)
讲细一点
工作流是怎么拼起来的
从单个模块讲到连线,再到适配器、汇总器、分发器,最后是路由和循环。
能力模块:每个只干一件事
能力模块就是一个只干一件事的智能体。它接收一种输入,发出一种结果。
一共六个。每个模块只能看到交给它的输入,也只能交出约定好的那种结果,所以你可以换掉其中任何一个:换个模型、换成人来做,或者只单独用它一个。训练、打分和健康检查不在任何模块手里,由 SIDERIUS 自己完成。
| 模块 | 接收 | 发出 |
|---|---|---|
| Interpret results | Run summaries | Results analysis |
| Literature review | Search evidence | Paper findings |
| Propose model | Results analysis、Paper findings 或 Design brief | Model plan |
| Implement | Model plan | Model code |
| Validate | Model plan + Model code | Code verdict |
| Train & tune | Code verdict + Model plan + Training settings | Training report |
每个模块的设置也各管各的:用哪个语言模型,在 LLM 配置文件里按模块分别设;时间和显存预算设在 Train & tune 上;建议写在各自的建议框里。1.1.0 没有几个模块共用的总预算。
连接口:带类型的连线
每个输入和输出都有类型,比如 Model plan、Code verdict。只有同类型的输出和输入才能连在一起。
以前:两个步骤之间传的是一堆文件,传错了往往要等跑到一半才发现。现在:每个插口都标明了类型,在 SIDERIUS 1.1.0 的控制台里,你拖出一根线时,只有类型对得上的插口会亮。结果:连错的线在运行之前就被拒绝,提示会写清两边的类型,比如 “Propose model sends Model plan; this input receives Design brief.”
插口的值有三种来源:
- 别的模块产出的:比如 Model plan、Code verdict。
- 你提供的资源:比如 Storage folder(输出写到哪)、Data folder(数据在哪)。用模板时,运行会替你准备好。
- 你给的设置:比如 Expert advice、Training settings、Parameter rules。
实心插口是输出或必需的输入;空心的是可选输入,没接时会折叠起来。
适配器:收拢、挑选、分发
适配器是夹在模块之间的小步骤,按固定规则整理结果。它从不调用语言模型。
每个适配器都按同样的三步走:
- 收拢:把能用的结果收进来。没通过 Validate 的代码、健康检查判为无效的训练结果,在这一步就被挡在外面。
- 挑选:全部保留、只要第一个合格的,或者排好序取前几个。
- 分发:把选出来的东西交给下游,可以是一份,也可以分成好几份(见下面的“分发器”)。
顺序永远按你声明的顺序来,不看哪个先跑完,所以同样的输入总得到同样的选择。每个适配器都会记下收到了什么、选了什么、为什么。
举个例子:First passing selection 收拢两份实现的 Code verdict,挑第一个通过的,只把那一份交给 Train & tune。在 SIDERIUS 1.1.0 里,适配器由编程助手写进工作流源文件,控制台还不能在画布上搭。
汇总器:多个合成一个
汇总器是一种适配器,它的活是把几个结果合成一份,交给下一个模块。
以前:几份文献调研各说各的,一个 Propose model 只能接一份。加上汇总器: Collect reviews 按你声明的顺序把它们收在一起,每份标上来源模块的名字。之后:一个提案能同时读到所有调研,并知道每条出自哪份。
汇总器只合并,不打分,也不改写内容。用语言模型来汇总的方式(按评分细则排序、辩论后由评审裁决、由评审合并)仍是即将推出。
分发器:一个分成多个
适配器最后的分发这一步,决定发出几份。分发器把一份输入分成好几条分支。
| 分发方式 | 做什么 | 1.1.0 能不能跑 |
|---|---|---|
| single | 只发一份 | 能 |
| split-items | 把一个结果里的列表拆开,每条分支拿一条,其余内容不变 | 能,用在 Split findings |
| per-item | 选出来的第 1 个给分支 1,第 2 个给分支 2,依此类推 | 能声明,还没有工作流形状会执行它 |
| replicate | 把同一份内容复制给好几条分支 | 能声明,还没有工作流形状会执行它 |
- 份数有上限:分成几份由你设,最少 1 份(replicate 最少 2 份),最多 64 份。超过 64 在声明时就会被拒绝,不会等到运行时。
- 不够时:选 skip,多出来的分支被跳过,其余照跑;选 fail,这一步直接失败。
- 太多时:要拆的条目比分支多,这一步失败,从不悄悄截断。
路由和循环
路由让工作流的一部分只在条件成立时才跑。循环让整个工作流一轮一轮地重跑,直到碰上上限或停止条件。
路由
路由看前面某个结果,按顺序检查几种情况,第一个满足的生效;没设默认分支时,一个都不满足就什么也不跑。没被选中的分支不花一分钱,监控页会把它显示为跳过。在 1.1.0 里,路由只用在 Implement 和 Validate 上,条件是 Code verdict 是否通过,并配合 First passing selection;由编程助手写进源文件,从命令行运行。
循环
每跑完一轮(控制台叫一个 body),Training report 送回 Interpret results,下一轮从上一轮的结果出发。循环在这几种情况下结束:
| 结束条件 | 什么时候停 | 在哪里设 |
|---|---|---|
| Final iteration | 跑满这么多轮 | SIDERIUS 1.1.0 控制台的 Research loop 面板 |
| Metric threshold | 最好的有效正式分数达到阈值 | Research loop 面板 |
| No improvement | 连续若干轮没刷新最好分数 | Research loop 面板 |
| Judge | 前两种都没触发时,让语言模型读你用大白话写的标准,判断要不要停 | 工作流源文件,交给编程助手;控制台还没有编辑器 |
评审停止(Judge)的规则:只在前两种确定性条件都没触发时才问它;最后一轮从不问;至少跑满你设的轮数(默认 1)才开始问。调用失败时,你可以选让循环以失败结束(默认),或者把这次算作弃权、继续跑。它需要你在 LLM 配置文件里给评审指定模型,并设定最多调用几次。
运行中,监控页的 Stop at next boundary 和 Pause at next boundary 会等当前这一轮跑完再停或暂停;循环因停止条件结束时,页面会写明原因。