WebVoyager

GitHub
1.1k 117 中等 1 次阅读 昨天Apache-2.0语言模型Agent其他
AI 解读 由 AI 自动生成,仅供参考

WebVoyager 是一款基于大型多模态模型(LMM)打造的智能网页代理工具,旨在让 AI 像人类一样直接操作真实网站,端到端地执行用户指令。它解决了传统自动化脚本难以应对动态网页、复杂交互及视觉信息理解的痛点,能够自主规划导航路径,结合文本与屏幕截图完成从搜索、比价到预订等多样化任务。

该项目不仅提供了完整的代码实现,还构建了一个基于 Selenium 的在线浏览环境,并开源了包含 643 个覆盖 15 个主流网站的任务数据集,支持研究人员进行标准化评估与扩展。其独特亮点在于引入了通用的规划策略来处理复杂的网页导航,并利用 GPT-4V 建立了自动化的效果评估协议,大幅降低了测试门槛。

WebVoyager 非常适合 AI 研究人员探索多模态智能体在现实场景中的应用,也适合开发者将其作为基础框架,构建定制化的网页自动化服务或数据采集工具。对于希望深入理解大模型如何与现实世界数字界面交互的技术爱好者而言,这是一个极具参考价值的开源项目。通过简单的环境配置,用户即可在本地复现论文成果,体验 AI 自主浏览网页的强大能力。

使用场景

某电商数据分析师需要每日从多个竞品网站(如亚马逊、eBay)抓取特定商品的价格波动、库存状态及用户最新评价,以生成市场动态报告。

没有 WebVoyager 时

  • 维护成本高昂:传统爬虫脚本依赖固定的 HTML 结构,一旦网站更新布局或增加反爬机制,脚本立即失效,需开发人员频繁手动修复代码。
  • 难以处理复杂交互:面对需要登录、弹窗验证、动态加载或视觉判断(如识别“售罄”按钮颜色)的场景,纯文本爬虫束手无策,往往需要人工介入操作。
  • 多站点适配困难:针对不同网站需编写独立的解析逻辑,缺乏统一的智能规划能力,导致跨平台数据采集流程割裂且效率低下。
  • 实时性差:由于调试和修复耗时,数据获取往往滞后,无法支持实时的价格策略调整。

使用 WebVoyager 后

  • 自适应网页变化:WebVoyager 利用多模态大模型直接“看”懂网页视觉信息与文本内容,即使页面布局微调,也能自动定位目标元素,大幅降低维护频率。
  • 端到端自主交互:它能像真人一样操作浏览器,自主完成登录、关闭广告弹窗、滚动加载及基于视觉特征的判断,无需硬编码复杂的交互逻辑。
  • 通用任务规划:只需输入自然语言指令(如“查询某商品在亚马逊和 eBay 的当前最低价”),WebVoyager 即可自动规划路径并在不同网站间切换执行,实现一站式采集。
  • 高效实时响应:自动化流程显著缩短数据获取周期,确保分析师能即时获得最新的市场情报,快速制定竞争策略。

WebVoyager 将繁琐脆弱的规则式爬虫升级为具备视觉理解与自主规划能力的智能代理,让跨网站复杂数据采集变得像对话一样简单可靠。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明 (基于 OpenAI API 运行,本地无需 GPU)

内存

未说明

依赖
notes1. 必须安装 Chrome 浏览器;在 Linux 服务器上推荐安装 chromium。使用最新版 Selenium 无需单独安装 ChromeDriver。 2. 项目依赖 OpenAI API (如 gpt-4-vision-preview),需配置有效的 API Key。 3. 支持无头模式 (headless) 运行,适合 Linux 服务器部署以节省资源。 4. 部分任务涉及时间敏感信息(如订票),运行前可能需要手动更新日期。
python3.10+
selenium>=4.15.2
openai (通过 API Key 调用)
WebVoyager hero image

快速开始

WebVoyager
基于大型多模态模型构建端到端网络智能体

许可证 Python 3.10+ Selenium

简介

本仓库包含我们论文 WebVoyager 的数据与实现。WebVoyager 是一款创新的大型多模态模型(LMM)驱动的网络智能体,能够通过与真实世界网站交互,端到端地完成用户指令。

  • 多模态网络智能体。我们实现了集成文本和视觉信息的 WebVoyager,以端到端的方式解决网络任务,并引入了一种用于导航的通用规划方法。
  • 在线环境。我们使用 Selenium 构建了一个在线网页浏览环境。
  • 多样化的网络任务 我们提供了一系列围绕常用网站的任务,并介绍了一种扩展这些任务的方法。
  • 评估工具 我们提出了一种基于 GPT-4V 的自动化评估协议。

环境搭建

我们使用 Selenium 来构建在线网页浏览环境。

  • 请确保已安装 Chrome 浏览器。(使用最新版本的 Selenium 时,无需单独安装 ChromeDriver。)
  • 如果您选择在 Linux 服务器上运行代码,建议安装 Chromium 浏览器。(例如,对于 CentOS:yum install chromium-browser
  • 为 WebVoyager 创建一个 conda 环境并安装依赖项。
    conda create -n webvoyager python=3.10
    conda activate webvoyager
    pip install -r requirements.txt
    

数据

概述

为了测试 WebVoyager,我们采用半自动化方法生成并筛选了 643 个任务查询,覆盖 15 个网站,每个网站包含 40 多个查询。该数据集可在 data/WebVoyager_data.jsonl 中找到。

  • 对于每条数据,我们提供了任务描述及其对应的网站。
  • 部分任务具有时效性,主要集中在 Booking 和 Google Flights 上。目前,在运行前需要 手动更新 时间。
  • 我们为每个任务标注了简要参考答案,存放在 data/reference_answer.json 中。

此外,我们还从 GAIA 数据集(验证集) 中提取了 90 个网页浏览任务(Level 1 和 Level 2)。相关任务可在 data/GAIA_web.jsonl 中查看。

  • 在 GAIA 验证集中,作者提供了标注者元数据,并指定了使用的工具(“网页浏览器”或“搜索引擎”)。我们根据这些信息提取了任务。
  • GAIA 并未为每个任务提供对应的网站,因此我们将每个任务的起始网站设定为 Google 搜索。

扩展任务

现有数据已经形成了一个相对丰富的任务池,我们建议使用 GPT-4(https://chat.openai.com)来进一步扩充数据。以下是一个示例提示,您可以根据需求修改或重新设计提示内容。

以下是一些示例任务以及解决这些任务所需交互的网站。
"""
<任务: xxx;网站: xxx;>
<其他上下文示例>
"""

请仔细分析上述任务,然后为 {网站} 生成新的任务。请使用多样化的描述,不要重复示例中的任务描述。

请注意:
1. 任务中不要包含观看视频的要求。
2. 在生成的任务中,如果需要声明未来的具体日期(如预订、航班等),可以选择 <日期1> 至 <日期2> 范围内的日期。
3. 生成的任务应目标明确,且不需要复杂的网页操作。
4. 在查找过去的实时信息时(如 ArXiv、BBC 新闻等),不要请求过多过去某段时间的信息,因为这需要大量的网页滚动和翻页操作。但可以请求特定时间点的信息,例如最新的。
5. 为了提高随机性和多样性,请尽量避免重复示例中提到过的实体。

请仔细思考给定网站的功能,并注意生成的任务应能由相应网站解决。答案格式必须为:任务: {生成的任务}|||网站: {网站名称, https 地址}

运行

运行 WebVoyager

环境搭建完成后,即可开始运行 WebVoyager。

  1. 将您想要测试的示例复制到 data/tasks_test.jsonl 中。对于 Booking 和 Google Flights 的任务,如果任务中的日期已过期,请手动更新。
  2. 修改 run.sh 中的 api_key。

您可以通过以下命令运行 WebVoyager:

bash run.sh

run.sh 的具体内容如下:

#!/bin/bash
nohup python -u run.py \
    --test_file ./data/tasks_test.jsonl \
    --api_key YOUR_OPENAI_API_KEY \
    --headless \
    --max_iter 15 \
    --max_attached_imgs 3 \
    --temperature 1 \
    --fix_box_color \
    --seed 42 > test_tasks.log &

对于仅使用文本的 WebVoyager,示例脚本如下:

#!/bin/bash
nohup python -u run.py \
    --test_file ./data/tasks_test.jsonl \
    --api_key YOUR_OPENAI_API_KEY \
    --headless \
    --max_iter 15 \
    --max_attached_imgs 1 \
    --temperature 1 \
    --text_only \
    --api_model gpt-4-1106-preview \
    --seed 42 > test_tasks_text_only.log &

参数

通用:

  • --test_file: 待评估的任务文件。请参考 data 目录中的数据文件格式。
  • --max_iter: 每个任务的最大在线交互次数。如果超过 max_iter 仍未完成任务,则视为失败。
  • --api_key: 您的 OpenAI API 密钥。
  • --output_dir: 用于保存网页浏览轨迹的目录。
  • --download_dir: 有时智能体需要下载 PDF 文件进行分析。

模型:

  • --api_model: 接收观测并做出决策的智能体。在我们的实验中,我们使用 gpt-4-vision-preview。对于纯文本场景,可以使用不包含视觉输入的模型,例如 gpt-4-1106-preview
  • seed: 该功能目前处于 Beta 阶段,具体信息请参阅 OpenAI 的 文档
  • --temperature: 用于控制模型输出的多样性。请注意,此处将其设置为 0 并不能保证多次运行结果的一致性。
  • --max_attached_imgs: 我们会进行上下文裁剪,移除过时的网页信息,仅保留最近的 k 张截图。
  • --text_only: 纯文本模式,观测将为无障碍树。

网页导航:

  • --headless: 无头模式不会显式打开浏览器,因此更易于在 Linux 服务器上部署,且资源消耗更低。注意:无头模式会影响保存的截图尺寸,因为在非无头模式下会显示地址栏。
  • --save_accessibility_tree: 是否需要保存当前页面的无障碍树。我们主要参考 WebArena 来构建无障碍树。
  • --force_device_scale: 将设备缩放比例设置为 1。如果需要无障碍树,应使用此参数。
  • --window_width: 窗口宽度,默认为 1024。
  • --window_height: 窗口高度,默认为 768。(根据 OpenAI 定价,1024 * 768 的图像大约等于 765 个 token。)
  • --fix_box_color: 我们利用 GPT-4-ACT,这是一款基于 JavaScript 的工具,可根据网页元素类型提取可交互元素,并叠加边界框。此选项会将边界框颜色固定为黑色,否则颜色将是随机的。

开发您的提示词

提示词优化是一项复杂的工程,它会直接影响智能体的性能。您可以在 prompts.py 中找到我们设计的系统提示词。

我们提供的提示词经过多次调整,但仍不完美。如果您感兴趣,可以在不破坏其通用性的前提下进行自定义优化(即不在提示词中针对特定网站给出具体指令)。如果您只需要智能体服务于某些特定网站,则可以直接在提示词中加入针对性的指令。

若想在提示词中添加动作或更改动作格式,只需稍作代码修改即可。您可以设计自己的 extract_information 函数来解析模型的输出,并修改 run.py 以添加或调整动作执行方式。

结果与评估

结果将保存在您指定的输出目录中。在本实验中,我们使用 results 目录,并将部分结果放置于 results/examples 中。每个任务的结果文件夹包含交互消息和若干截图。

人工评估

我们可以通过查看截图,并结合交互消息中智能体的思考与行动,判断其路径是否符合任务要求。

基于 GPT-4V 的自动评估

我们将任务、WebVoyager 的响应以及最后 k 张截图提供给 GPT-4V,由其判断智能体是否成功完成了任务。

我们在 evaluation 目录中提供了评估工具。您可以通过执行 evaluation/run_eval.sh 脚本来进行自动评估。

#!/bin/bash
nohup python -u auto_eval.py \
    --api_key YOUR_OPENAI_API_KEY \
    --process_dir ../results/examples \
    --max_attached_imgs 15 > evaluation.log &

请更新上述脚本中的 api_keyprocess_dir,然后运行以下命令:

cd evaluation
bash run_eval.sh

引用

如果您觉得我们的工作有所帮助,请考虑引用我们的论文:

@article{he2024webvoyager,
  title={WebVoyager: Building an End-to-End Web Agent with Large Multimodal Models},
  author={He, Hongliang and Yao, Wenlin and Ma, Kaixin and Yu, Wenhao and Dai, Yong and Zhang, Hongming and Lan, Zhenzhong and Yu, Dong},
  journal={arXiv preprint arXiv:2401.13919},
  year={2024}
}

免责声明

本项目并非腾讯官方支持的产品。模型生成的内容受多种因素影响,包括 OpenAI API 的非确定性输出、提示词的变化以及网站页面风格的变动或弹窗等,因此本项目无法保证其准确性。本项目不对模型输出的任何内容、所访问的网页或获取的数据承担任何法律责任,亦不对因使用相关资源及输出结果而可能产生的任何损失承担责任。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

158.1k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|今天
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像