跳转到内容

正在加载搜索…

English

观测与画面

本页是多模态优先这条原则落到调用上的参考:一次观测里有什么、系统的哪个部分读什么,以及模型怎样取得画面。

每个环境都用同一个调用 observe 作答,返回几种形式的输入:

形式 例子
文本 任务指令、终端的输出、文件的内容、窗口的大纲
结构 状态:窗口及其元素的角色、名称和值;机器人的关节、夹爪和位姿
图像 截图、游戏画出的画面、带标定信息的摄像头视图

每种形式都按环境报告的样子到达:截图是图像,单元格的值是一个值,命令的输出是文本。

系统的各个部分需要不同的输入,各取所需。

  • 模型每一轮读到的是文本:任务指令、状态、程序打印的内容和每一步的结果。只有它的程序去看的时候,图才会到它面前。看不看、多久看一次、一张图在视野里留多久,都由模型决定。
  • 程序直接处理文本和结构:读取一个元素的值,或者解析一条命令的输出。当图像才是最好的依据时,程序可以就它向视觉模型提问,或者让视觉模型指出其中的某个东西,再根据答案继续。
  • 反应规则按控制频率在观测上运行,依据的是测量值,不调用模型。
  • 学习型策略通过环境的适配器,以原生形式接收摄像头视图和机器人状态。
  • 验证器判断一个说法时,拿到的证据与模型能拿到的一样:状态、环境报告的元素或页面文本,以及画面。

三个调用在所有环境里都一样,模型用它们取得画面:

调用
look(camera=None, region=None) 把一个画面或其中一部分,连同这个程序的结果一起放进下一轮。点一下再看,是一次模型调用
watch(cameras=None) 从现在起每个程序的结果都带上画面,直到 unwatch()
look(keep=3)、look(pin="before")、unpin("before") 一张图默认只在下一次回复里可见;模型可以保留最近几个程序的画面,或把某一张钉住

从表格里读一个合计不需要图:单元格的值就在窗口的元素里。检查页面渲染成什么样需要图:程序在改完之后看一次。游戏和运动的场景靠看而不是靠读,所以模型在那里自己打开 watch()。结构和文本也是这样按需取用:elements()、read_page()、读文件。

不能读图的模型,在文本和结构够用的地方照常工作。模型列表记录每个模型能否读图;不能读图的模型不会收到图,它去看的时候,由你指定的视觉模型把画面描述给它(模型和 provider)。

评测规则规定了固定观测的,在自己的配置里声明:runtime.cameras 写明哪些画面每一轮都带上。

从表格单元格里读出的合计,或者一条命令退出时的文本,便宜而且准确。画布、游戏和真实场景,则通过图像来了解。模型和它写的程序逐步选择,每种形式对它们始终可用。

在哪里工作也是如此。对话从你选的环境开始,也可以不用环境;某一步需要别的环境时再取用:项目任务要看页面效果,就在问过你之后取用浏览器(环境)。

同一个控制循环因此可以用于彼此几乎没有共同点的环境。桌面、网站、游戏和机器人,报告的内容不同,动作不同,节奏也不同。每个环境在它的环境定义里说明一次自己报告什么,agent 的 skill 无需修改就能在上面工作。