Skyvern 使用大语言模型和计算机视觉来自动化基于浏览器的工作流程。它提供了一个简单的API端点,以完全自动化大量网站上的手动工作流程,取代了脆弱或不可靠的自动化解决方案。
<p align="center"> <img src="fern/images/geico_shu_recording_cropped.gif"/> </p>传统的浏览器自动化方法需要为每个网站编写自定义脚本,通常依赖于DOM解析和XPath交互,这些会在网站布局发生变化时失效。
Skyvern 不仅仅依赖于代码定义的XPath交互,而是依靠视觉大语言模型来学习并与网站进行交互。
Skyvern 的灵感来自于由BabyAGI 和 AutoGPT 推广的任务驱动型自主代理设计——其中一个重要优势是:我们赋予Skyvern通过浏览器自动化库如Playwright与网站进行交互的能力。
Skyvern 使用一组代理来理解网站,并规划和执行其操作:
<picture> <source media="(prefers-color-scheme: dark)" srcset="fern/images/skyvern_2_0_system_diagram.png" /> <img src="fern/images/skyvern_2_0_system_diagram.png" /> </picture>这种方法有几个优点:
详细的报告可以在这里找到:这里。
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
Skyvern 在WebBench基准测试中表现最佳,准确率为64.4%。技术报告及评估可以在这里找到:这里。
<p align="center"> <img src="fern/images/performance/webbench_overall.png"/> </p>Skyvern 是写入任务的最佳执行代理(例如填写表单、登录、下载文件等),主要用于RPA(机器人过程自动化)相关任务。
<p align="center"> <img src="fern/images/performance/webbench_write.png"/> </p>Skyvern Cloud 是Skyvern的托管云版本,允许您无需担心基础设施即可运行Skyvern。它允许您并行运行多个Skyvern实例,并附带防机器人检测机制、代理网络和验证码解决程序。
如果您想试用,请导航至 app.skyvern.com 并创建一个账户。
所需依赖项:
此外,对于Windows:
pip install skyvern
这对于首次运行(数据库设置、数据库迁移等)非常有用。
skyvern quickstart
启动Skyvern服务和UI(当数据库运行时)
skyvern run all
转到 http://localhost:8080 并使用UI运行任务
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="查找今天Hacker News上的顶级帖子")
print(task)
Skyvern 开始在弹出的浏览器中运行任务,并在任务完成后关闭浏览器。您可以在 http://localhost:8080/history 中查看任务。
您还可以在不同的目标上运行任务:
from skyvern import Skyvern
# 在Skyvern Cloud上运行
skyvern = Skyvern(api_key="SKYVERN API KEY")
# 本地Skyvern服务
skyvern = Skyvern(base_url="http://localhost:8000", api_key="LOCAL SKYVERN API KEY")
task = await skyvern.run_task(prompt="查找今天Hacker News上的顶级帖子")
print(task)
⚠️ 警告:自从 Chrome 136,Chrome拒绝使用默认用户数据目录通过CDP连接到浏览器。为了使用您的浏览器数据,Skyvern会在第一次连接到本地浏览器时将默认用户数据目录复制到
./tmp/user_data_dir。⚠️
from skyvern import Skyvern
# 您的Chrome浏览器路径。此示例路径适用于Mac。
browser_path = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
skyvern = Skyvern(
base_url="http://localhost:8000",
api_key="YOUR_API_KEY",
browser_path=browser_path,
)
task = await skyvern.run_task(
prompt="查找今天Hacker News上的顶级帖子",
)
在您的.env文件中添加两个变量:
# 您的Chrome浏览器路径。此示例路径适用于Mac。
CHROME_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
BROWSER_TYPE=cdp-connect
重启Skyvern服务 skyvern run all 并通过UI或代码运行任务
获取CDP连接URL并将其传递给Skyvern
from skyvern import Skyvern
skyvern = Skyvern(cdp_url="您的CDP连接URL")
task = await skyvern.run_task(
prompt="查找今天Hacker News上的顶级帖子",
)
您可以通过添加 data_extraction_schema 参数来实现这一点:
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(
prompt="查找今天Hacker News上的顶级帖子",
data_extraction_schema={
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "顶级帖子的标题"
},
"url": {
"type": "string",
"description": "顶级帖子的URL"
},
"points": {
1. "type": "integer",
"description": "帖子收到的点赞数"
}
}
}
)
# 单独启动Skyvern服务器
skyvern run server
# 启动Skyvern UI
skyvern run ui
# 检查Skyvern服务的状态
skyvern status
# 停止Skyvern服务
skyvern stop all
# 停止Skyvern UI
skyvern stop ui
# 单独停止Skyvern服务器
skyvern stop server
docker ps 检查)。skyvern init llm 生成一个 .env 文件。该文件将被复制到Docker镜像中。 docker compose up -d
http://localhost:8080 在浏览器中开始使用UI。重要: 一次只能有一个Postgres容器运行在5432端口上。如果您从CLI管理的Postgres切换到Docker Compose,必须首先删除原始容器:
docker rm -f postgresql-container
如果您在使用Docker运行Skyvern时遇到任何数据库相关错误,请使用 docker ps 检查哪个Postgres容器正在运行。
任务是Skyvern内部的基本构建模块。每个任务是对Skyvern的单个请求,指示它浏览网站并完成特定目标。
任务需要您指定一个 url 和 prompt,并且可以选择包括一个 data schema(如果您希望输出符合特定模式)和 error codes(如果您希望Skyvern在特定情况下停止运行)。
工作流是一种将多个任务链接在一起形成一个连贯工作的单元的方法。
例如,如果您想要下载所有1月1日之后的新发票,您可以创建一个工作流,首先导航到发票页面,然后筛选只显示1月1日之后的新发票,提取所有符合条件的发票列表,并迭代每个发票以下载它。
另一个例子是如果您想要自动购买电子商务商店中的产品,您可以创建一个工作流,首先导航到所需的产品,然后将其添加到购物车。其次,它将导航到购物车并验证购物车状态。最后,它将通过结账过程购买商品。
支持的工作流特性包括:
Skyvern 允许您将浏览器视口实时流传输到本地机器,以便您可以确切地看到Skyvern在网络上所做的操作。这对于调试和了解Skyvern如何与网站交互以及必要时进行干预非常有用。
Skyvern 原生具备填写网站表单输入的能力。通过 navigation_goal 传递信息将允许Skyvern理解信息并相应地填写表单。
Skyvern 还能够从网站中提取数据。
您也可以直接在主提示中指定 data_extraction_schema,告诉Skyvern您希望从网站中提取的确切数据,格式为jsonc。Skyvern的输出将根据提供的模式进行结构化。
Skyvern 还能够从网站下载文件。所有下载的文件都会自动上传到块存储(如果已配置),并通过UI访问它们。
Skyvern 支持多种认证方法,使您更容易自动化登录后的任务。如果您想试用,请通过电子邮件或Discord联系我们。
<p align="center"> <img src="fern/images/secure_password_task_example.png"/> </p>Skyvern 支持多种二步验证方法,允许您自动化需要二步验证的工作流。
示例包括:
🔐 了解更多关于二步验证支持的信息 这里。
Skyvern 目前支持以下密码管理器集成:
Skyvern 支持模型上下文协议(MCP),允许您使用支持MCP的任何大语言模型。
参见MCP文档 这里
Skyvern 支持Zapier、Make.com和N8N,允许您将Skyvern工作流连接到其他应用程序。
🔐 了解更多关于二步验证支持的信息 这里。
我们喜欢看到Skyvern在现实世界中的应用。这里有一些Skyvern如何被用来自动化实际工作流程的例子。请打开PR添加您自己的例子!
确保已安装uv。
.venv)
uv sync --group dev
uv run skyvern quickstart
http://localhost:8080 在浏览器中开始使用UI
*Skyvern