Agent之ETA之Skyvern:Skyvern(利用 LLM 和计算机视觉自动化基于浏览器的工作流程)的简介、安装和使用方法、案例应用之详细攻略
导读:Skyvern是一个浏览器自动化平台,它利用语言模型(LLM)和计算机视觉来自动化基于浏览器的工作流。相比传统基于DOM解析和XPath交互的脚本方法,Skyvern不仅依赖于预定义的选择器,它可以实时解析视窗中的项目来计划和执行交互。
>> 工作原理:Skyvern采用任务驱动的AI代理设计,并利用Playwright等浏览器自动化库与网站交互。它可以理解网站内容上下文,制定可信赖的自动化计划。
>> 功能:Skyvern支持自动化各种浏览器工作流,包括网站导航、数据提取、表单填写等。它还提供可视化调试工具跟踪每个步骤。
>> 使用:用户只需通过RESTful API或Web界面提供任务需求,Skyvern就可以在未曾访问的网站上完成自动化。
>> 可扩展性:Skyvern计划支持工作流串联、上下文理解能力提升、交互优化降低成本等功能,并开源核心代码。
>> 管理:Skyvern提供管理后的云服务,支持代理网络、反爬虫检测等,可在大规模场景下运行多个实例自动化工作流。
>> 示例:文中给出了Skyvern在 procurement、表格填写、保险报价获取等多个领域的应用案例。
>> 许可:Skyvern开源库基于AGPL-3。0许可,但反爬虫机制在管理云中提供。
目录
Skyvern的简介
2024年3月17日,Skyvern 利用 LLM 和计算机视觉自动化基于浏览器的工作流程。它提供了一个简单的 API 端点来完全自动化手动工作流程,取代易碎或不可靠的自动化解决方案。传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖于 DOM 解析和基于 XPath 的交互,这些交互在网站布局发生变化时会中断。与仅依赖代码定义的 XPath 交互不同,Skyvern 将计算机视觉和 LLM 添加到组合中,以实时解析视口中的项目,创建交互计划并与之交互。
1、优势:
Skyvern 可以在从未见过的网站上操作,因为它能够将视觉元素映射到完成工作流程所需的操作,而无需任何定制代码。
Skyvern 对网站布局的更改具有抵抗力,因为我们的系统在导航时不寻找预定的 XPath 或其他选择器。
Skyvern 利用 LLM 来推理交互,以确保我们能够涵盖复杂的情况。例如:如果您想从 Geico 获取汽车保险报价,常见问题“您是否在 18 岁时有资格驾驶?”的答案可以从驾驶员在 16 岁获得驾照推断出。
如果您在进行竞争分析,它可以理解 7/11 的 22 盎司 Arnold Palmer 几乎肯定与 Gopuff 的 23 盎司 Arnold Palmer 是同一产品(即使尺寸略有不同,这可能是舍入误差!)。
想看看 Skyvern 实际运行的例子吗?跳到 #real-world-examples-of-skyvern
2、工作原理
Skyvern 的灵感来自于 BabyAGI 和 AutoGPT 流行的任务驱动自主代理设计——有一个主要优势:我们赋予 Skyvern 使用 Playwright 等浏览器自动化库与网站交互的能力。
这是一张描述如何通过一个名为Skyvern的工具或软件来生成保险报价的流程图。流程图分为几个步骤:
- 绘制边界框,在Geico.com网站上输入个人信息,如驾照号码。
- 解析HTML代码以提取图像。
- 提取可操作元素。
- 调用LLM(逻辑链接模型)来规划操作。
- 执行操作。
- 重复步骤,直到生成保险报价。
流程图还包含一些提示,例如“当您获得驾照时?”,以及“我们试图生成保险报价。我们在这里做什么?”,这些提示可能是为了引导用户完成整个过程。
整个流程图旨在帮助用户通过自动化方式获取保险报价,从而节省时间和精力。
3、演示
skyvern_demo_video.mp4
4、常见问题解答(FAQs)
什么让我们对 Skyvern 感到兴奋?
我们专注于为基于浏览器的工作流程带来稳定性。我们利用 LLM 创建一个能够像你我一样与网站交互的 AI 代理——通过一个简单的 API 调用。
5、功能路线图
这是我们接下来几个月的计划路线图。如果您有任何建议或希望添加功能,请通过电子邮件或 Discord 与我们联系。
- 开源 - 开源 Skyvern 的核心代码库
- [BETA] 工作流支持 - 允许支持将多个 Skyvern 调用链接在一起
- 改进的上下文 - 通过在文本提示中引入相关标签上下文,提高 Skyvern 理解可交互元素周围内容的能力
- 成本节约 - 通过优化传递给 Skyvern 的上下文树,提高 Skyvern 的稳定性并降低运行成本
- 自助 UI - 弃用 Streamlit UI,转而使用基于 React 的 UI 组件,允许用户在 Skyvern 中启动新任务
- 提示缓存 - 为 LLM 调用引入缓存层,以显著降低运行 Skyvern 的成本(记忆过去的操作并重复执行!)
- Chrome 视口流 - 引入一种将 Chrome 视口实时流式传输到用户浏览器的方法(作为自助 UI 的一部分)
- 过去运行的 UI - 弃用 Streamlit UI,转而使用基于 React 的 UI,允许您可视化过去的运行及其结果
- 集成 LLM 可观测性工具 - 集成 LLM 可观测性工具,以允许通过特定数据集进行提示更改的回测+可视化 Skyvern 随时间的性能
- 集成公共数据集 - 将 Skyvern 与公共基准测试集成,以跟踪我们模型随时间的质量
- 工作流程 UI 构建器 - 引入一个 UI,允许用户以可视化方式构建和分析工作流程
- Langchain 集成 - 在 langchain_community 中创建 langchain 集成,以使用 Skyvern 作为“工具”。
Skyvern的安装和使用方法
1、安装
Skyvern 云
我们提供了 Skyvern 的托管云版本,使您无需管理基础设施即可运行 Skyvern。它允许您并行运行多个 Skyvern 实例,以大规模自动化工作流程。此外,Skyvern 云捆绑了反机器人检测机制、代理网络和 CAPTCHA 解决方案,使您能够完成更复杂的工作流程。
Skyvern 云目前处于私有测试阶段。如果您有兴趣使用 Skyvern 云,请通过电子邮件与我们联系。
2、快速入门
本快速入门指南将引导您在本地计算机上启动并运行 Skyvern。
Docker Compose 设置(推荐)
确保您的计算机上已安装并运行 Docker Desktop
确保本地未运行 postgres(运行 docker ps 检查)
克隆存储库并导航到根目录
在 docker-compose.yml 上填写 LLM 提供者密钥
通过命令行运行以下命令:
docker compose up -d
在浏览器中导航到 http://localhost:8501 开始使用 UI
完整设置(贡献者)- 先决条件
确保您使用的是 PYTHON 3.11 ⚠️⚠️
开始之前,请确保已安装以下内容:
Brew(如果您使用的是 Mac)
Poetry
brew install poetry
Docker
注意:我们的设置脚本会为您完成这两项操作,但这里提供了参考。
Python 3.11
poetry env use 3.11
PostgreSQL 14(如果您使用的是 Mac,安装了 homebrew,设置脚本会为您安装)
brew install postgresql
设置(贡献者)
克隆存储库并导航到根目录
打开 Docker Desktop(适用于 Windows、macOS 和 Linux)或运行 Docker Daemon
运行设置脚本以安装必要的依赖项并设置环境
./setup.sh
启动服务器
./run_skyvern.sh
您可以开始向服务器发送请求,但我们构建了一个简单的 UI 来帮助您入门。要启动 UI,请运行以下命令:
./run_ui.sh
在浏览器中导航到 http://localhost:8501 开始使用 UI
贡献者的额外设置
如果您想为 Skyvern 做出贡献,您需要安装预提交钩子以确保代码质量和一致性。您可以通过运行以下命令来实现:
pre-commit install
运行您的第一个自动化
执行任务(UI)
启动 UI 后,您可以通过填写 UI 中显示的字段并点击“Execute”来启动自动化
执行任务(cURL)
curl -X POST -H 'Content-Type: application/json' -H 'x-api-key: {Your local API key}' -d '{
"url": "https://www.geico.com",
"webhook_callback_url": "",
"navigation_goal": "Navigate through the website until you generate an auto insurance quote. Do not generate a home insurance quote. If this page contains an auto insurance quote, consider the goal achieved",
"data_extraction_goal": "Extract all quote information in JSON format including the premium amount, the timeframe for the quote.",
"navigation_payload": "{Your data here}",
"proxy_location": "NONE"
}' http://0.0.0.0:8000/api/v1/tasks
调试 Skyvern
Skyvern 的可视化工具允许您调试 Skyvern 在网络上采取的每一个交互。
demo_visualizer.mp4
任务、步骤和操作
您发送给 Skyvern 的每个 API 请求称为“任务”。每个任务由“步骤”组成,这些步骤是 Skyvern 完成任务所采取的单个操作。每个步骤由“操作”组成,即 Skyvern 在特定网站上进行的单个交互。
每次调用 API 时,您都会获得一个 task_id,您可以使用它在可视化工具中查找任务。在每个任务中,您可以与每个步骤交互,并查看 Skyvern 完成任务所采取的具体操作。
在下面的截图中,我们正在导航到 finditparts.com 并搜索卡车部件。您会看到它列出的每个操作,以及每个操作背后的理由。
除了 LLM 以文本形式建议的操作外,Skyvern 的可视化工具还显示操作时屏幕的状态,并进行 1:1 的操作到截图映射。这使您可以准确地看到 Skyvern 在做出决策时看到的内容,并调试可能出现的任何问题。
3、Skyvern 的实际应用示例
我们喜欢看到 Skyvern 在实际环境中的使用情况。以下是 Skyvern 在现实世界中用于自动化工作流程的一些示例。如果您想尝试这些示例,请在完成快速入门指南后运行以下命令:
./run_skyvern.sh
自动化制造公司的材料采购
�� 观看演示
./run_ui.sh finditparts
导航到政府网站注册账户或填写表格
�� 观看演示
./run_ui.sh california_edd
从任何语言的保险提供商处获取保险报价
�� 观看演示
./run_ui.sh bci_seguros
�� 观看演示
./run_ui.sh geico
Skyvern的案例应用
正在更新中……