你在 Midscene 编写的自然语言参数,最终都会变成提示词(Prompt)发送给大语言模型。以下是一些可以帮助提升效果的提示词工程(Prompt Engineering)技巧。
由于 AI 常常会“幻想”,调优的目标是在多次运行中获得模型的稳定响应。大多数情况下,通过使用良好的提示,LLM 的响应效果可以变得更好。
提供详细描述和示例一直是非常有用的提示词技巧。
例如: 错误示例 ❌: "搜'耳机'"
正确示例 ✅: "找到搜索框(搜索框的上方应该有区域切换按钮,如 '国内', '国际'),输入'耳机',敲回车"
错误示例 ❌: "断言:外卖服务正在正常运行"
正确示例 ✅: "断言:界面上有个“外卖服务”的板块,并且标识着“正常”"
使用 .ai
每次只做一件事。尽管 Midscene 有自动重规划能力,但仍应保持指令简洁。否则,LLM 的输出可能会变得混乱。指令的长度对 token 消耗的影响几乎可以忽略不计。
错误示例 ❌: "点击登录按钮,然后点击注册按钮,在表单中输入'test@test.com'作为邮箱,'test'作为密码,然后点击注册按钮"
正确示例 ✅: 将任务分解为三个步骤:
"点击登录按钮" "点击注册按钮" "在表单中输入'test@test.com'作为邮箱,'test'作为密码,然后点击注册按钮"
这条指令可能会导致点击失败:
⚠️ 点击 Range 浮层中的 "include" 选项
查看运行报告后,你会发现 AI 可能倾向于先去打开浮层、然后再寻找 include 选项。如果此时浮层已经打开,可以尝试:
✅ 浮层已经展开,请点击 "include" 选项
另一个例子:
这条指令可能会在有很多 "Add" 按钮的页面中失败,或者按钮是一个图标按钮、缺少文本时:
⚠️ 点击 "Add" 按钮
你可以尝试:
✅ 点击页面右上角的 "Add" 按钮,它是一个带有 "+" 图标的按钮,位于 "range" 下拉菜单的右侧
如果按钮尺寸太大,AI 可能误判按钮的可点击范围:
⚠️ 点击 "用户注册" 菜单
你可以尝试:
✅ 点击左侧菜单中的 "用户注册" 文字
例如:
正确示例 ✅:string,文本的颜色,返回:蓝色 / 红色 / 黄色 / 绿色 / 白色 / 黑色 / 其他
错误示例 ❌:string,文本颜色的十六进制值
错误示例 ❌:[number, number],主按钮的 [x, y] 坐标
测试报告里有每个步骤的详细信息。如果你想结合报告里的 UI 状态重新运行 Prompt,你可以启动本地 Playground Server,然后点击“Send to Playground”。
启动本地 Playground Server:
所有传递给 LLM 的数据都是截图和元素坐标。DOM和浏览器 对 LLM 来说几乎是不可见的。因此,务必确保你想提取的信息都在截图中有所体现且能被 LLM “看到”。
正确示例 ✅:标题是蓝色的
错误实例 ❌:标题有个 test-id-size
属性
错误实例 ❌:浏览器有两个 tab 开着
错误实例 ❌:异步请求已经结束了
LLM 可能会表现出错误的行为。更好的做法是运行操作后检查其结果。
例如,你可以在插入记录后检查待办应用的列表内容。
由于大多数 AI 模型可以理解多种语言,所以请随意用你喜欢的语言撰写提示指令。即使提示语言与页面语言不同,通常也是可行的。