找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2039

积分

0

好友

285

主题
发表于 2025-12-30 02:39:01 | 查看: 24| 回复: 0

随着Open-AutoGLM等项目引发关注,移动端的Phone Agent已经展现出巨大潜力。如果将视角扩展到桌面端,浏览器无疑是PC上最通用的操作入口。基于此背景,本文探讨如何利用开源库browser-use,构建一个能够理解并自动执行用户指令的Browser Agent。

从Open-AutoGLM的架构中,我们可以获得清晰的参考。其核心分为三层:面向用户的Agent客户端、负责推理与决策的AI模型、以及最终的执行层(如ADB)。沿着这一思路,我们发现开源项目browser-use提供了一个现成的、专注于浏览器自动化的Agent框架。它采用“Agent + LLM + CDP(Chrome DevTools Protocol)”的组合方案,能够通过AI模型理解任务意图,并直接控制浏览器完成操作。

架构演进:从单模型到分层规划

browser-use官方示例展示的最简架构是“browser-use + 多模态LLM”,即将整个推理与决策过程完全交给多模态模型。然而,在实际应用时,尤其是在国内可用模型生态下,这一架构遇到了挑战。当时对browser-use适配较好的多模态模型(如qwen-vl-max),在复杂任务中容易出现推理路径发散、产生幻觉以及长任务一致性差的问题。

为解决这一问题,我们调整了架构,在前端增加了一个更擅长规划和逻辑拆解的文本模型。最终架构演进为:GLM-4.6(规划层) + qwen-vl-max(多模态执行层) + browser-use(执行框架)。规划层的核心职责是对用户的自然语言问题进行重写与结构化,生成目标明确、步骤清晰的任务描述。

例如,对于用户指令“在淘票票网站搜索‘movie movie’影院,查找‘疯狂动物城2’明晚的场次信息”,规划模型会将其转化为更规范的Agent任务。实践表明,引入规划层后,任务执行步骤从原先不稳定的16步以上,显著优化到10-14步内稳定完成,一致性得到了大幅提升。这本质上是将复杂的任务理解与规划前移,交由更专业的模型处理。

核心代码实现

项目的代码结构非常清晰,核心调用流程主要分为三步,体现了模块化设计思想。

1. 规划模型改写用户任务
首先,使用GLM-4.6模型对原始用户问题进行规划与重写,生成标准化的任务描述。这里启用了深度思考(Chain-of-Thought)模式,以得到更可靠的规划结果。

# 使用GLM-4.6进行问题改写,启用深度思考模式
response = glm_client.chat.completions.create(
    model="glm-4.6",
    messages=[
        {"role": "user", "content": rewrite_prompt}
    ],
    thinking={
        "type": "enabled",    # 启用深度思考模式
    },
    max_tokens=4000,          # 增加输出长度以支持更详细的规划
    temperature=0.8           # 稍微增加创造性
)

2. 初始化多模态模型
接着,初始化用于驱动browser-use Agent的多模态大模型。我们接入阿里云的qwen-vl-max模型。

vision_llm = ChatOpenAI(
    model='qwen-vl-max',
    api_key=alibaba_api_key,
    base_url='https://dashscope.aliyuncs.com/compatible-mode/v1'
)

3. 创建并运行Agent
最后,使用规划后的任务和多模态模型创建browser-use的Agent实例,并开始执行。通过合理设置参数(如最大步骤数、禁用内置的Judge模块),可以有效控制执行流程,避免陷入死循环。

# 创建Agent并执行搜索
agent = Agent(
    task=task,
    llm=vision_llm,
    use_vision=True,
    max_actions_per_step=1,
    # 限制最大步骤数,避免无限循环
    max_steps=30,  # 增加步骤数应对复杂的日期选择
    # 禁用Judge,避免Judge与Agent冲突
    use_judge=False,
    # 使用单一页面,避免开新标签页
    browser_profile=None,  # 使用默认配置,避免新标签页
)

browser-use框架的设计哲学非常清晰:将复杂性留给AI模型,框架自身保持轻量与专注。这种设计带来了工程实现的简洁性,但也意味着Agent的最终效果高度依赖底层模型的能力。在我们的实践中,增加规划模型主要提升了任务执行的一致性,而执行效率的显著提升则有赖于多模态模型自身能力的持续进化。

反思与优化方向

回顾整个项目,当前的“双模型”架构虽解决了初期的不稳定问题,但也存在过度设计的嫌疑。主要问题在于规划模型与多模态模型在“理解与规划”职能上存在重叠,且在某些场景下,使用成本较高的多模态模型的必要性可以重新评估。

一个更精简且高效的优化思路是:不做通用的全能Agent,而是针对特定高频任务(如查电影票、查天气)开发专用Agent。其架构可以简化为:特定任务提示词(包含详细的DOM结构引导) + 纯文本大模型 + browser-use。browser-use能够提供页面的DOM信息,纯文本大模型足以理解和操作结构化元素,其效果在定向任务中可能不逊于视觉识别。如果需要支持多种任务,只需在Agent前端增加一个轻量级的意图识别路由即可。

这种定向优化的架构不仅能大幅降低模型调用成本,还能使Agent的行为更加精准和可靠。对于想要深入探索AI Agent与自动化实践的开发者,可以将你的项目和经验分享到云栈社区人工智能板块,与更多同行交流像browser-use这类开源实战项目的应用心得。




上一篇:ThinkPHP漏洞检测与利用工具GUI:支持5.x/6.x版本一键GetShell
下一篇:Ueditor任意文件上传漏洞应急响应实录:攻击与防御策略
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 09:07 , Processed in 0.280257 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表