File size: 7,923 Bytes
892e231
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
---
license: other
language:
- zh
- en
base_model:
- THUDM/glm-4v-9b
pipeline_tag: image-text-to-text
library_name: transformers
---

# CogAgent

## 关于模型

`cogagent-9b-20241220` 是 我们基于 [GLM-4V-9B](https://huggingface.co/THUDM/glm-4v-9b) 训练得到的一个专门用于 Agent任务的模型。
`cogagent-9b-20241220` 是一款较为先进的智能体模型,它具备强大的跨平台兼容性,能够实现对多种计算设备上的图形界面进行自动化的操作。
无论是Windows、macOS还是Android系统,`cogagent-9b-20241220` 都能够接收用户指令,自动获取设备屏幕截图,经过模型推理后执行自动化设备操作。

## 运行模型

请前往我们的[github](https://github.com/THUDM/CogAgent) 查看具体的运行示例。

## 输入和输出

cogagent-9b-20241220是一个Agent类执行模型而非对话模型,不支持连续对话,但是但支持连续的执行历史。
这里展示了用户应该怎么整理自己的输入格式化的传入给模型。并获得模型规则的回复。

### 用户输入部分

1. `task` 字段

   用户输入的任务描述,类似文本格式的prompt,该输入可以指导 CogAgent1.5 模型完成用户任务指令。请保证简洁明了。

2. `platform` 字段

   CogAgent1.5 支持在多个平台上执行可操作Agent功能, 我们支持的带有图形界面的操作系统有三个系统,
    - Windows 10,11,请使用 `WIN` 字段。
    - Mac 14,15,请使用 `MAC` 字段。
    - Android 13,14,15 以及其他GUI和UI操作方式几乎相同的安卓UI发行版,请使用 `Mobile` 字段。

   如果您使用的是其他系统,效果可能不佳,但可以尝试使用 `Mobile` 字段用于手机设备,`WIN` 字段用于Windows设备,`MAC`
   字段用于Mac设备。

3. `format` 字段

   用户希望 CogAgent1.5 返回何种格式的数据, 这里有以下几种选项:
    - `Answer in Action-Operation-Sensitive format.`: 本仓库中demo默认使用的返回方式,返回模型的行为,对应的操作,以及对应的敏感程度。
    - `Answer in Status-Plan-Action-Operation format.`: 返回模型的装题,行为,以及相应的操作。
    - `Answer in Status-Action-Operation-Sensitive format.`: 返回模型的状态,行为,对应的操作,以及对应的敏感程度。
    - `Answer in Status-Action-Operation format.`: 返回模型的状态,行为。
    - `Answer in Action-Operation format.` 返回模型的行为,对应的操作。

4. `history` 字段

   拼接顺序和结果应该如下所示:
   ```
   query = f'{task}{history}{platform}{format}'
   ```

### 模型返回部分

1. 敏感操作: 包括 `<<敏感操作>> <<一般操作>>` 几种类型,只有要求返回`Sensitive`的时候返回。
2. `Plan`, `Agent`, `Status`, `Action` 字段: 用于描述模型的行为和操作。只有要求返回对应字段的时候返回,例如带有`Action`则返回
   `Action`字段内容。
3. 常规回答部分,这部分回答会在格式化回答之前,表示综述。
4. `Grounded Operation` 字段:
   用于描述模型的具体操作,包括操作的位置,类型,以及具体的操作内容。其中 `box` 代表执行区域的坐标,`element_type` 代表执行的元素类型,
   `element_info` 代表执行的元素描述。这些信息被一个 `操作指令` 操作所包裹。这些指令包括:
    - `CLICK`: 点击操作,模拟鼠标点击或者手指触摸。
    - `LONGPRESS`: 长案操作。仅在 `Mobile` 模式下支持。

### 例子

用户的任务是希望帮忙将所有邮件标记为已读,用户使用的是 Mac系统,希望返回的是Action-Operation-Sensitive格式。
正确拼接后的提示词应该为:

```
Task: 帮我将所有的邮件标注为已读
(Platform: Mac)
(Answer in Action-Operation-Sensitive format.)
```

接着,这里展现了不同格式要求下的返回结果:


<details>
<summary>Answer in Action-Operation-Sensitive format</summary>

```
Action: 点击页面顶部工具栏中的“全部标为已读”按钮,将所有邮件标记为已读。
Grounded Operation: CLICK(box=[[219,186,311,207]], element_type='可点击文本', element_info='全部标为已读')
<<一般操作>>
```

</details>

<details>
<summary>Answer in Status-Plan-Action-Operation format</summary>

```
Status: None
Plan: None.
Action: 点击收件箱页面顶部中间的“全部标记为已读”按钮,将所有邮件标记为已读。
Grounded Operation: CLICK(box=[[219,186,311,207]], element_type='可点击文本', element_info='全部标为已读')
```

</details>

<details>
<summary>Answer in Status-Action-Operation-Sensitive format</summary>

```
Status: 当前处于邮箱界面[[0, 2, 998, 905]],左侧是邮箱分类[[1, 216, 144, 570]],中间是收件箱[[144, 216, 998, 903]],已经点击“全部标为已读”按钮[[223, 178, 311, 210]]。
Action: 点击页面顶部工具栏中的“全部标为已读”按钮,将所有邮件标记为已读。
Grounded Operation: CLICK(box=[[219,186,311,207]], element_type='可点击文本', element_info='全部标为已读')
<<一般操作>>
```

</details>

<details>
<summary>Answer in Status-Action-Operation format</summary>

```
Status: None
Action: 在收件箱页面顶部,点击“全部标记为已读”按钮,将所有邮件标记为已读。
Grounded Operation: CLICK(box=[[219,186,311,207]], element_type='可点击文本', element_info='全部标为已读')
```

</details>

<details>
<summary>Answer in Action-Operation format</summary>

```
Action: 在左侧邮件列表中,右键单击第一封邮件,以打开操作菜单。
Grounded Operation: RIGHT_CLICK(box=[[154,275,343,341]], element_info='[AXCell]')
```

</details>

### 注意事项

1. 该模型不是对话模型,不支持连续对话,请发送具体指令,并参考我们提供的历史拼接方式进行拼接。
2. 该模型必须要有图片传入,纯文字对话无法实现GUI Agent任务。
3. 该模型输出有严格的格式要求,请严格按照我们的要求进行解析。输出格式为 STR 格式,不支持输出JSON 格式。


## 先前的工作

在2023年11月,我们发布了CogAgent的第一代模型,现在,你可以在 [CogVLM&CogAgent官方仓库](https://github.com/THUDM/CogVLM)
找到相关代码和权重地址。

<div align="center">
    <img src=assets/cogagent_function_cn.jpg width=70% />
</div>

<table>
  <tr>
    <td>
      <h2> CogVLM </h2>
      <p> 📖  Paper: <a href="https://arxiv.org/abs/2311.03079">CogVLM: Visual Expert for Pretrained Language Models</a></p>
      <p><b>CogVLM</b> 是一个强大的开源视觉语言模型(VLM)。CogVLM-17B拥有100亿的视觉参数和70亿的语言参数,支持490*490分辨率的图像理解和多轮对话。</p>
      <p><b>CogVLM-17B 17B在10个经典的跨模态基准测试中取得了最先进的性能</b>包括NoCaps, Flicker30k captioning, RefCOCO, RefCOCO+, RefCOCOg, Visual7W, GQA, ScienceQA, VizWiz VQA 和 TDIUC 基准测试。</p>
    </td>
    <td>
      <h2> CogAgent </h2>
      <p> 📖  Paper: <a href="https://arxiv.org/abs/2312.08914">CogAgent: A Visual Language Model for GUI Agents </a></p>
      <p><b>CogAgent</b> 是一个基于CogVLM改进的开源视觉语言模型。CogAgent-18B拥有110亿的视觉参数和70亿的语言参数, <b>支持1120*1120分辨率的图像理解。在CogVLM的能力之上,它进一步拥有了GUI图像Agent的能力。</b></p>
      <p> <b>CogAgent-18B 在9个经典的跨模态基准测试中实现了最先进的通用性能,</b>包括 VQAv2, OK-VQ, TextVQA, ST-VQA, ChartQA, infoVQA, DocVQA, MM-Vet, 和 POPE 测试基准。它在包括AITW和Mind2Web在内的GUI操作数据集上显著超越了现有的模型。</p>
    </td>
  </tr>
</table>

## 协议

模型权重的使用请遵循 [Model License](LICENSE)。