揭秘AI自动化框架Browser-use(三):Browser-use控制浏览器的核心机制

1. 概述

在Browser-use框架中,核心任务是使大模型能够像人类一样操作浏览器。本文深入探讨大模型如何实际控制浏览器,重点解析从模型输出到浏览器动作执行的完整流程。

上一篇(公众号首发)-Browser-use AI自动化框架深度解析(二):提示词构造机制

2. 系统架构与数据流

在这里插入图片描述

Browser-use采用标准的Agent-Environment交互范式,以闭环反馈机制实现大模型与浏览器的交互:

┌────────────┐    状态提示词    ┌───────────┐
│            │ ───────────────> │           │
│  浏览器环境  │                 │   大模型   │
│            │ <───────────────  │           │
└────────────┘    结构化动作    └───────────┘

2.1 核心交互流程

  1. 状态获取:框架捕获当前浏览器状态,包括DOM结构、可交互元素和页面元数据
  2. 状态表示:将状态转换为结构化提示词注入大模型上下文
  3. 决策生成:大模型分析状态并生成结构化的动作计划
  4. 动作执行:框架解析动作计划并在浏览器中执行相应操作
  5. 结果反馈:执行结果和新状态反馈回大模型,进入下一轮迭代

这种基于状态-动作-反馈的迭代模式支持大模型进行多步骤任务规划和执行。

3. 大模型输出设计

大模型需要生成特定格式的JSON结构以实现对浏览器的控制,主要通过工具调用(Tool Calling)机制实现。

3.1 结构化输出示例

{
   
  "current_state": {
   
    "evaluation_previous_goal": "成功打开了百度首页",
    "memory": "我正在执行搜索四川十大景点的任务。已完成第1步:打开百度首页。",
    "next_goal": "在搜索框中输入'四川十大景点'"
  },
  "action": [
    {
   
      "input_text": {
   
        "index": 5,
        "text": "四川十大景点"
      }
    },
    {
   
      "click_element": {
   
        "index": 6
      }
    }
  ]
}

3.2 输出结构解析

  1. current_state:任务状态信息

    • evaluation_previous_goal:上一步骤完成状态的评估
    • memory:工作记忆,存储任务关键信息
    • next_goal:规划的下一步目标
  2. action:动作序列

    • 支持单步多动作执行
    • 每个动作以键值对形式表示,键为动作名称,值为参数对象
      这种设计不仅规范了输出格式,还通过 memory 字段为大模型提供了上下文记忆能力,从而支持复杂任务的分解与执行。

3.3 Pydantic模型定义

Browser-use使用Pydantic模型定义输出结构,确保类型安全和参数验证:

def _setup_action_models(self):
    class CurrentState(BaseModel):
        evaluation_previous_goal: str = Field(
            ..., 
            description="评估上一步目标的完成情况"
        )
        memory: str = Field(
            ..., 
            description="记录重要信息,用于跟踪进度"
        )
        next_goal: str = Field(
            ..., 
            description="下一步要完成的具体目标"
        )

    class AgentOutput(BaseModel):
        current_state: CurrentState = Field(
            ..., 
            description="当前状态评估和下一步计划"
        )
        action: List[Dict[str, Dict[str, Any]]] = Field(
            ..., 
            description="要执行的动作列表"
        )

    self.CurrentState = CurrentState
    self.AgentOutput = AgentOutput

这些模型不仅用于验证输出合规性,还作为函数调用的JSON Schema,指导大模型生成规范化输出。

4. 工具调用机制

4.1 多模型适配策略

Browser-use支持多种工具调用方式,以适配不同的模型能力边界:

def _set_tool_calling_method(self) -> Optional[ToolCallingMethod]:
    """Set tool calling method based on model and provided setting"""
    if self.settings.tool_calling_method == 'auto':
        if 'gpt-' in self.model_name or 'claude-3' in self.model_name:
            return 'function_calling'
        elif 'Qwen' in self.model_name or 'deepseek' in self.model_name:
            return 'raw'
        else:
            return None
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值