大体流程是这样:首先会给模型一个任务要求,然后模型会给出执行步骤(也就是cot),然后把当前的截图和子任务发给模型,模型判断这一步要做什么(点击哪里之类的)然后会对是否成功做一个判断。子任务成功后就进入下一个子任务。
数据集包含两种信息:截图和json文件。截图相当于我们的benchmark的轨迹截图,但这个截图是包含了模型做出错误动作之后的截图的。json文件包含了prompt,当前任务,LLM给出的回答,执行的具体操作之类的信息。
json文件中每个字段的含义:
- session_id:Session ID
- task_prompt:任务总体的目标
- task_prompt_en:任务总体的目标(En)
- task_prompt_zh:任务总体的目标(Zh)
- send_prompt:发送给模型的完整提示词
- send_prompt_en:发送给模型的完整提示词(En)
- send_prompt_zh:发送给模型的完整提示词(Zh)
- LLM_response:模型给出的原始回复文本,即RLHF中的 reject response
- LLM_response_editer:人工修正后的回复文本,即RLHF中的 choice response
- LLM_response_editer_en:人工修正后的回复文本(En)
- LLM_response_editer_zh:人工修正后的回复文本(Zh)
- video_height,video_width:图像的高度和宽度
- saved_image_name:截图文件名,在每个session的images文件夹下
- actions:从 LLM_response_editer 中解析出的动作序列
screenAgent这个项目主要其实是设计了一个流程,这个工作可以交给各种各样的多模态模型。
为了引导 VLM Agent 与计算机屏幕进行持续的交互,我们构建了一个包含“计划-执行-反思”的运行流程。在计划阶段,Agent 被要求将用户任务拆解为子任务。在执行阶段,Agent 将观察屏幕截图,给出执行子任务的具体鼠标和键盘动作。控制器将执行这些动作,并将执行结果反馈给 Agent。在反思阶段,Agent 将观察执行结果,并判定当前的状态,选择继续执行、重试或调整计划。这一流程将持续进行,直到任务完成。