4.1 基础动作集:制式装备盘点


文档摘要

4.1 基础动作集:制式装备盘点 本节摘要:内置动作覆盖六类操作:导航类、点击类、输入类、滚动类、标签页类、提取类。本节不逐个背 API,而是按"哪类仗用哪类装备"组织,重点讲参数怎么喂才不易被模型理解偏,以及动作空间裁剪这个常被忽略的免费午餐。 装备多不是好事 第 3 章说过:动作空间越大,模型选错的面越大。所以本节的立场先立住——制式装备要按需上膛。框架默认把全套动作登记进军械库,模型每拍都"看得见"它们;一个只做页面读取的任务,喂它开新标签页的动作,等于给哨兵发火箭筒,走火概率直线上升。先盘点,再学裁剪。 图:基础动作集按任务类型分类的射程图 图:基础动作集按任务类型分类的射程图 喂参数的功夫 内置动作本身没什么玄机,玄机在模型怎么理解你的意图。

4.1 基础动作集:制式装备盘点

本节摘要:内置动作覆盖六类操作:导航类、点击类、输入类、滚动类、标签页类、提取类。本节不逐个背 API,而是按"哪类仗用哪类装备"组织,重点讲参数怎么喂才不易被模型理解偏,以及动作空间裁剪这个常被忽略的免费午餐。

装备多不是好事

第 3 章说过:动作空间越大,模型选错的面越大。所以本节的立场先立住——制式装备要按需上膛。框架默认把全套动作登记进军械库,模型每拍都"看得见"它们;一个只做页面读取的任务,喂它开新标签页的动作,等于给哨兵发火箭筒,走火概率直线上升。先盘点,再学裁剪。

图:基础动作集按任务类型分类的射程图

图:基础动作集按任务类型分类的射程图

喂参数的功夫

内置动作本身没什么玄机,玄机在模型怎么理解你的意图。同一个点击任务,两种任务单写法效果天差地别:

# 写法一:意图含糊,模型自由发挥空间大 task_vague = "去示例商城把商品加到购物车" # 风险:可能点错"收藏"、"立即购买",也可能把同类商品全加一遍 # 写法二:目标锁定加边界声明,复核拍好判、决策拍好选 task_clear = ( "在商品列表页找到名称为'某某旗舰款'的商品卡片," "点击卡片上的'加入购物车'按钮(不是'立即购买')," "全程不要提交订单" )

写法二里有两处值得抄走的手法:反例排除(不是立即购买)和禁区声明(不要提交订单)。前者替决策拍排除了最易混淆的近邻选项,后者给复核拍立了硬红线。参数喂得好,步数省一半——这不是修辞,是可以拿轨迹长度验证的。

标签页类动作单独提一句:它是比价、跨站核对类任务的刚需,也是失控重灾区——模型开了新页忘了切回,后面所有编号全对不上。用这类任务时,任务单里显式写出"核对完新页后切回原页",比事后排错划算得多。

一次巡逻任务看装备协同

一个短任务串起导航、点击、输入、提取四类:

from browser_use import Agent, Browser from langchain_openai import ChatOpenAI agent = Agent( task=( "打开演示商城,搜索'机械键盘'," "把结果第一页最便宜的一款的名称和价格报出来," "不要点击进入商品详情页" ), llm=ChatOpenAI(model="gpt-4o", temperature=0.1), browser=Browser(), ) result = agent.run(max_steps=12) print(result)

预期输出示意(轨迹节选):

Step 1: 📄 开启页面 演示商城首页 Step 2: 🖱️ 点击元素 索引 3 搜索框 Step 3: ⌨️ 输入文本 机械键盘 Step 4: 🖱️ 点击元素 索引 6 搜索按钮 Step 5: 📊 提取:比较第一页各商品价格 Step 6: ✅ 完成 最终答复: 名称 素盾K87 价格 99 元

注意第 5 步:比价没有产生新点击——模型在观察拍把第一页的情报直接比完了。让模型多"看"少"动",是控制步数成本的第一个直觉。

什么时候制式装备不够用

三种信号说明该去 4.3 领扩容权了:业务动作框架不可能内置(查你司内部接口);需要在复核链路加程序化校验;高危操作想卡一道人工确认。反之,凡是"普通网页操作"能表达的,都别急着自定义——自定义动作放错位置(该喂任务单的写成动作)是另一种常见过度设计。

参数速查表:每件装备的易错点

动作 参数要点 最常见易错
导航 地址要完整可直达 只给站名不给路径,模型自己猜入口
点击 用反例排除近邻按钮 页面有"登录/注册"近邻时不写排除项
输入 说明是替换还是追加 输入框有默认值时没说清,出现拼接文本
滚动 说明滚到哪、等什么 懒加载页没写"等新内容出现"
标签页 写明何时切回 开新页核对完不切回,后面全乱
提取 指明范围与格式 没说范围,把导航广告也算进结果

一个滚动加载的完整例子

懒加载列表是最容易翻车的场景,完整任务单这样写:

agent = Agent( task=( "打开评论列表页,向下滚动直到连续两次不再出现新评论," "然后提取全部评论的用户名与评分;" "只滚动和阅读,不要点击任何评论" ), llm=llm, browser=Browser(), ) result = agent.run(max_steps=16) # 滚动多轮,预算要相应放宽 print(result)

预期轨迹里会看到多拍"滚动加等待"之后才进入提取拍——滚动是手段,情报变全才是目的。如果滚动三轮后提取数仍明显偏少,回 3.1 查简报:多半是列表套了内部滚动条,外层滚动够不着,此时改用"滚动页面主列表区域"的措辞。这个例子也说明预算要按机械动作放量:滚动型任务的步数天然比普通任务高,给足预算不是浪费。

制式装备的边界案例两则

**边界一:文件下载。**点击"下载报表"按钮之后发生的事(浏览器下载管理、文件落盘)属于浏览器内核行为,不是模型的决策范围。任务单的正确写法是到"触发下载"为止,落盘后的处理交给代码——模型负责"让下载发生",不负责"管理文件"。

**边界二:弹窗与对话框。**页面的原生对话框(确认、提示)与页面内自绘弹窗是两种东西:原生对话框由内核层接管,框架通常有默认处理策略;自绘弹窗就是普通页面元素,走正常的观察与点击。分不清时先看现象:模型日志里"点了没反应"的多半是原生对话框——这时不是改任务单,而是查框架的对话框处理配置。两则边界合起来给出一条例:凡是"浏览器自己会做的事",别写进任务单指望模型管,任务单只管模型该管的决策。

一组实战对照:同一个任务的两个版本

# 版本A:只说目标,模型自由发挥 task_a = "去文档站把入门指南的内容拿回来" # 版本B:锁定路径与产出,装备各就各位 task_b = ( "打开文档站,点击左侧目录中的'入门指南'," "提取正文的前三个小节标题与首段文字," "不要点击任何'下一页'" )

实测中版本 A 常见两种走偏:点进视频教程、把整站目录抄回来。版本 B 的轨迹稳定在四到六拍。这个对照是 4.1 的全部要义:制式装备不缺威力,缺的是你给的明确射界

制式装备盘完。下一节把观察拍的花活讲透:让模型把"看见"的变成带字段约束的结构化数据。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U