莫方教程网

专业程序员编程教程与实战案例分享

Web Agent技术揭秘:如何让DeepSeek接管与控制你的浏览器?

Web Agent是这样一种特殊的智能体:它借助AI自动控制你的浏览器,并完成你“交代”的任务。比如帮你挑选一部最新的iPhone或者到旅行网站预订机票。这样的智能数字助手,无论是对生活还是工作,未来无疑都具有重大的意义。当前有大量的研究正针对这种Agent展开,本文就来聊聊其最新进展及DeepSeek的应用。

  • Web Agent是什么?
  • Web Agent的工作原理
  • Web Agent的实现技术
  • 介绍两个Web Agent框架
  • 实现基于DeepSeek的Web Agent并测试

01

Web Agent是什么

Web Agent是一种工作在UI层的AI智能体。在当前语境下,你可以认为它就是由大模型所驱动(LLM/VLM,大语言模型/多模态的视觉语言模型),能够自主的理解任务、推理并模拟人类在浏览器中的操作,最终完成任务目标。比如一个简单的任务:

“到Apple公司网站上了解最新的iPhone16e的价格信息"

这样一个任务需要Web Agent自动完成如下任务步骤:

如果你了解RPA(机器人流程自动化),可以把Web Agent看作是一种大模型驱动的更灵活的RPA机器人。

02

Web Agent的工作原理

Web Agent的工作过程与原理看下图,如果你熟悉ReAct范式的Agent应该会似曾相识,即通过Thought(思考)->Action(行动)->Observation(观察)这样的推理循环来逐步完成任务,在过程中会不断的动态调整自己的行为。

但Web Agent与我们熟知的ReAct Agent的差异主要在于:

  • Observation:ReAct Agent需要观察的对象更多是前置任务已经获得的数据,比如API调用结果;而Web gent需要观察的对象则为屏幕上呈现出的页面内容,更不可预期且结构更复杂。
  • Thought:ReAct Agent推理的下一步一般为LLM调用或者工具使用;而Web Agent的下一步则为交互动作,如点击按钮、输入文字、打开网址等。
  • Action:Web Agent可以使用的工具并非简单的函数或者Restful API,而是浏览器。为了控制浏览器,通常会借助前端的自动化框架,比如Selenium、Playwright。

其他的一些差异总结:

03

Web Agent的实现技术

针对Web Agent上述的能力要求,你需要有不同于传统Agent的解决方案:

Observation

这是Web Agent的“眼睛”。其作用是把看到的屏幕内容(WebUI)转化为可以让“大脑”(LLM/VLM)用来推理出预期操作的结构化信息。

为什么简单的多模态模型的推理是不够的?

你可能会想到直接把屏幕动态截图让VLM来推理行动,但这是不够的。因为Agent需要推理的下一步动作,不能仅仅是简单的语言描述。如:

“点击屏幕右边的搜索按钮进入下一步”,

而是可以让浏览器接口来执行的更精准的结构化信息,如:

{ "description":"启动搜索",

"type":"click",

"position":{"xpath":"按钮的xpath路径"}

}

而这里的很多信息比如元素位置,是直接的屏幕截图无法提供的。

目前可以看到两种解决方案:

  • 【深层的页面解析】:借助Playwright或者Selenium的浏览器控制API提取页面的DOM与HTML内容,经过解析处理后,对页面的不同节点进行组织与“标识”,最终构造一个详细的页面结构信息,交给推理模块使用。
  • 为了协助后续的大模型更精准的推理,可以同时把界面截图作为辅助信息传入(需要多模态模型)。以下是一个动态标识过的页面:

  • 【纯视觉识别与定位】直接通过计算机视觉AI模型来识别页面截图上的元素与内容,做图像分类、目标检测、相对定位、文本识别等,从而形成供后续推理使用的结构化信息,通常包含识别出的元素坐标、文字描述、作用等。这种方案常用到的一些视觉模型比如:YOLO、DeepLab、CLIP以及OCR模型等。

Thought

推理是大模型发挥作用的地方。其目的是根据观察到的结果(Observation提供的结构化页面信息),来推理出下一步交互动作。这通常也有两种选择:

  • 普通模型LLM:根据纯文本的结构化信息推理。
  • 多模态模型VLM:输入UI截图协助,获得更精准的推理结果。

Action

Web Agent的动作执行是借助浏览器来实现自动化的web访问与操作,通常借助一些浏览器控制工具(常被用于自动化测试):

  • Selenium:最广泛使用的浏览器自动化工具之一,可以精确控制浏览器行为,模拟用户点击、表单、滚动等操作。
  • Playwright:微软开发的被广泛使用的自动化测试框架。支持多种浏览器与多操作系统,支持复杂的页面操作。

04

介绍两个Web Agent框架

如果你需要尝试构建一个Web Agent,这里首先介绍两个工具:

OmniParser

微软推出的一个纯视觉方案的屏幕解析工具,帮助把UI屏幕转化为结构化的格式。其核心是一个微调过的视觉模型(不是语言模型),训练数据集来自一些热门的网页截图及其标注信息。

OmniParser的输出是一个经过标注的新图片与结构化的描述:

结构化的描述信息如下:

但是注意OmniParser只是提供了上述“Observation”部分的解决方案,并不是端到端的Agent开发框架,推理与行动需要自行实现,不过在最新的V2版本中提供了Agent例子与工具。

Browser-use

一个端到端的构建Web Agent的框架。其在WebVoyager的基准测试中取得了最好的性能(WebVoyager本身也是一个Web Agent开发框架,但自带了可用于基准测试的任务数据)。官方公布Browser-use的任务准确率对比结果如下:

Browser-use采用的技术栈为:

  • Observation:页面解析+截图辅助的非视觉方案。
  • Thought:建议采用gpt-4o作为主模型,目前也支持DeepSeek等模型。
  • Action:微软Playwright作为浏览器控制框架。

05

实现基于DeepSeek的Web Agent

实现Web Agent

我们来构建一个采用DeepSeek模型的Web Agent,基于Browser-use可以非常快速的实现这个Agent:

from langchain_openai import ChatOpenAI
from browser_use import Agent
from dotenv import load_dotenv
from browser_use import Agent
from pydantic import SecretStr

load_dotenv()

import asyncio

llm_deepseekv3 = ChatOpenAI(base_url='https://api.deepseek.com/v1',model="deepseek-chat",api_key=SecretStr('sk-*'))

async def main():
    agent = Agent(
        task="Learn about the latest price information for the iPhone 16e on Apple's website.",
        llm=llm_deepseekv3,
        use_vision=False
    )
    result = await agent.run()

    print ("\n===============Final Result===============\n")
    print(result.final_result())

asyncio.run(main())

一个最基本的Web Agent创建就是这么简单!

简单测试

首先看下运行的效果,可以看到Agent会自动打开浏览器窗口,然后去完成这里的简单任务。在任务执行过程中,可以看到每打开一个页面,页面元素随后会被标记(如下面视频中展示的带有不同颜色与数字的小box),这是一个结构化信息转换过程。随后大模型会推理下一个步骤,直到任务完成。

我们在后台跟踪LLM的输出,可以看到每一个步骤(step)的过程,比如Step 2:

这个输出中可以看到:

  • 大模型会根据结构化的页面信息,推理出下一步的目标(goal)与动作(action),及必要的参数。
  • 随后框架会解析推理结果,比如这里知道下一步需要“点击index为17的元素”,以了解更多的信息。

经过多次这样的迭代,最后成功获得了输出:

其他模型测试

我们对一些其他模型进行尝试,结果如下:

  • gpt-4o/gpt-4o-mini:成功
  • moonshot-v1-32k: 成功
  • deepseek-r1满血版: 由于速度过慢,未测试成功
  • ollama的部分开源模型:基本全部失败

观测到的一些结果与我们的判断包括:

  • Web Agent对大模型推理与结构化输出能力要求很高,低参数的开源模型,如果不经过针对性的微调,很难直接胜任
  • 作为主推理的deepseek-v3相比deepseek-r1要更适合
  • 对复杂流程的任务能力还不足,很容易失败
  • 对网站访问的一些特殊情形支持不足,比如弹窗
  • 暂时还不支持自动化流程中的人工参与,比如输入验证码

关于deepseek-r1的特殊应用

直接使用deepseek-r1未能成功测试,但Browser-use框架支持一个特性,即允许在主推理模型之外设定一个辅助规划的大模型(Planner_llm)。其作用是在必要的时机(可以设置,比如每3步让Planner_llm参与)充当”参谋”,即根据当前状态分析并给出后续的计划建议,这个计划会被主模型用来参考,以推理真正的行动步骤:

...
planner_llm = ChatOllama(model="deepseek-r1")

async def main():
    agent = Agent(
        ...
        planner_llm=planner_llm,
        planner_interval=3,
        
    )
...

我们让ollama中的deepseek-r1帮助规划,最终也可以测试成功。如果你感兴趣,可以使用browser-use自带的评估程序,来评估增加Planner_llm后是否能够带来复杂任务准确性的提升。

以上我们详细阐述了Web Agent的技术原理,以及一些实现方法,并借助开源框架构建了基于DeepSeek的测试Web Agent。Web Agent是一种有着极高推理能力要求的智能体,在当前条件下,必须承认无论是端到端的性能表现,还是面对复杂任务的稳定性,都还有着巨大的提升空间。期待未来随着多模态大模型及推理模型的不断演进与增强,这些存在的问题都会得到完美的解决。

私信“交流”

一起探讨AI大模型的应用实践

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言