🐉 利用大型语言模型和计算机视觉🐉自动化基于浏览器的工作流程
Skyvern 利用大型语言模型(LLM)和计算机视觉自动化基于浏览器的工作流程。它提供了一个简单的API端点,能够完全自动化大量网站的手动工作流程,取代脆弱或不可靠的自动化解决方案。
![图片[1]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/geico_shu_recording_cropped.gif)
传统的浏览器自动化方法需要为网站编写定制脚本,通常依赖DOM解析和基于XPath的交互,这些交互在网站布局变化时就会出问题。
Skyvern 不再仅依赖代码定义的 XPath 交互,而是依靠 Vision LLM 来学习和与网站互动。
工作原理
Skyvern 的灵感来自 BabyAGI 和 AutoGPT 推广的任务驱动自主智能体设计——还有一个重大好处:我们赋予 Skyvern 使用像 Playwright 这样的浏览器自动化库与网站交互的能力。
Skyvern 使用大量代理来理解网站,并规划并执行其作:
![图片[2]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/skyvern_2_0_system_diagram.png)
这种方法有几个优点:
- Skyvern 可以运行它从未见过的网站,因为它能够将视觉元素映射到完成工作流程所需的动作,无需任何定制代码
- Skyvern 对网站布局的更改持抵触态度,因为系统在尝试导航时没有预设的 XPath 或其他选择器
- Skyvern 能够将单一工作流程应用到大量网站,因为它能够推理完成工作流程所需的交互
- Skyvern 利用大型语言模型通过互动推理,确保我们能够覆盖复杂情况。示例包括:
- 如果你想从Geico获取汽车保险报价,常见问题“你18岁时有资格驾驶吗?”的答案可以从驾驶员16岁时获得驾照的年份推断出来
- 如果你在做竞争对手分析,那就是要明白,7/11的Arnold Palmer 22盎司罐装几乎肯定和Gopuff的23盎司罐装是同一款产品(尽管尺寸略有不同,可能是四舍五入误差!)
详细的技术报告可见此处。
演示
skyvern_demo_video_v2.1.mp4
绩效与评估
Skyvern在WebBench基准测试中的SOTA表现为64.4%。技术报告+评估可在此处查阅
![图片[3]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/performance/webbench_overall.png)
WRITE 任务的表现(例如填写表单、登录、下载文件等)
Skyvern 是 WRITE 任务(如填写表单、登录、下载文件等)表现最好的代理,主要用于 RPA(机器人流程自动化)相关任务。
![图片[4]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/performance/webbench_write.png)
快速入门
天文云
Skyvern Cloud 是 Skyvern 的托管云版本,允许你运行 Skyvern,无需担心基础设施问题。它允许你并行运行多个Skyvern实例,并捆绑了反机器人检测机制、代理网络和验证码解析器。
如果你想试用,可以进入 app.skyvern.com 创建账户。
安装与运行
需要依赖:
- Python 3.11.x,支持3.12,3.13还没准备好
- NodeJS 与 NPM
另外,针对Windows:
- 锈
- VS Code 搭配 C++ 开发工具和 Windows SDK
1. 安装Skyvern
pip install skyvern
2. 奔跑天际文
这对首次运行(数据库设置、数据库迁移等)最有帮助。
skyvern quickstart
3. 执行任务
用户界面(推荐)
启动Skyvern服务和UI(当数据库运行时)
skyvern run all
进入 http://localhost:8080,使用界面执行任务
法典
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
Skyvern会在一个浏览器中启动任务,完成后会弹出并关闭。你将能够从 http://localhost:8080/history 查看任务
你也可以在不同目标上执行任务:
from skyvern import Skyvern
# Run on Skyvern Cloud
skyvern = Skyvern(api_key="SKYVERN API KEY")
# Local Skyvern service
skyvern = Skyvern(base_url="http://localhost:8000", api_key="LOCAL SKYVERN API KEY")
task = await skyvern.run_task(prompt="Find the top post on hackernews today")
print(task)
高级用法
控制您自己的浏览器(Chrome)
⚠️警告:自Chrome 136起,Chrome拒绝使用默认user_data_dir连接任何CDP与浏览器。为了使用你的浏览器数据,Skyvern 会将你的默认user_data_dir复制到首次连接到本地浏览器时的状态。
./tmp/user_data_dir⚠️
- 只是用Python代码
from skyvern import Skyvern
# The path to your Chrome browser. This example path is for 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="Find the top post on hackernews today",
)
- 与Skyvern服务合作
在你的 .env 文件中添加两个变量:
# The path to your Chrome browser. This example path is for Mac.
CHROME_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
BROWSER_TYPE=cdp-connect
重启Skyvern服务,并通过UI或代码执行任务skyvern run all
用任何远程浏览器运行Skyvern
抓取CDP连接网址并传给Skyvern
from skyvern import Skyvern
skyvern = Skyvern(cdp_url="your cdp connection url")
task = await skyvern.run_task(
prompt="Find the top post on hackernews today",
)
让你的运行输出模式保持一致
你可以通过添加参数来实现:data_extraction_schema
from skyvern import Skyvern
skyvern = Skyvern()
task = await skyvern.run_task(
prompt="Find the top post on hackernews today",
data_extraction_schema={
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of the top post"
},
"url": {
"type": "string",
"description": "The URL of the top post"
},
"points": {
"type": "integer",
"description": "Number of points the post has received"
}
}
}
)
调试问题的有用命令
# Launch the Skyvern Server Separately*
skyvern run server
# Launch the Skyvern UI
skyvern run ui
# Check status of the Skyvern service
skyvern status
# Stop the Skyvern service
skyvern stop all
# Stop the Skyvern UI
skyvern stop ui
# Stop the Skyvern Server Separately
skyvern stop server
Docker Compose 设置
- 确保你的电脑上安装并运行了Docker Desktop。
- 确保你没有本地发布帖子(运行查看)
docker ps - 克隆仓库并导航到根目录
- 运行以生成一个文件。这些文件会被复制到Docker镜像中。
skyvern init llm.env - 在docker-compose.yml上填写LLM提供者密钥。如果你想在远程服务器上运行Skyvern,确保在docker-compose.yml中为UI容器设置正确的服务器IP。
- 通过命令行执行以下命令:
docker compose up -d
- 在浏览器中导航到开始使用界面
http://localhost:8080
重要:一次只能在5432端口运行一个Postgres容器。如果你从CLI管理的Postgres切换到Docker Compose,必须先移除原始容器:
docker rm -f postgresql-container
如果你在使用 Docker 运行 Skyvern 时遇到任何数据库相关错误,请检查哪个 Postgres 容器运行的 。docker ps
Skyvern特色
天空之歌任务
任务是Skyvern的核心构件。每个任务都是对Skyvern的单一请求,指示它在网站上导航并完成特定目标。
任务需要你指定一个 、 ,并且可以选择性地添加一个(如果你希望输出符合特定模式)和(如果你希望Skyvern在特定情况下停止运行)。urlpromptdata schemaerror codes
![图片[5]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/skyvern_2_0_screenshot.png)
Skyvern 工作流程
工作流程是一种将多个任务串联起来,形成一个连贯的工作单元的方法。
例如,如果你想下载所有1月1日之后的新发票,可以创建一个工作流程,先导航到发票页面,然后筛选出只显示1月1日之后的新发票,提取所有符合条件的发票列表,然后逐笔浏览以下载。
另一个例子是,如果你想自动化从电商店购买产品,可以创建一个工作流程,先导航到目标产品,然后再加入购物车。其次,它会导航到购物车并验证购物车状态。最后,它会进行结账流程来购买商品。
支持的工作流程功能包括:
- 浏览器任务
- 浏览器作
- 数据提取
- 验证
- 对于循环
- 文件解析
- 发送电子邮件
- 文本提示
- HTTP 请求块
- 自定义代码块
- 将文件上传到块存储
- (敬请期待)条件
![图片[6]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/block_example_v2.png)
直播
Skyvern 允许你将浏览器的视口直播到本地机器,这样你就能准确看到 Skyvern 在网页上的作。这对于调试和理解 Skyvern 如何与网站交互非常有用,并在必要时进行干预
表格填写
Skyvern原生支持在网站上填写表格输入。通过该系统传递信息,Skyvern能够理解信息并相应填写表格。navigation_goal
数据提取
Skyvern还能够从网站提取数据。
你也可以在主提示中直接指定 jsonc 格式,告诉 Skyvern 你想从网站提取哪些数据。Skyvern 的输出将按照提供的模式进行结构化。data_extraction_schema
文件下载
Skyvern 还可以从网站下载文件。所有下载的文件都会自动上传到区块存储(如果配置好),你可以通过界面访问它们。
认证
Skyvern 支持多种不同的认证方法,以便更容易自动化登录后的任务。如果你想试用,请通过电子邮件或Discord联系我们。
![图片[7]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/secure_password_task_example.png)
🔐 双重认证支持(TOTP)
Skyvern 支持多种不同的双重认证方法,帮助你自动化需要双重认证的工作流程。
示例包括:
- 基于二维码的双重认证(例如 Google 身份验证器、Authy)
- 基于电子邮件的双重认证
- 基于短信的双重认证
🔐 点击这里了解更多关于双重认证支持的信息。
密码管理器集成
Skyvern 目前支持以下密码管理器集成:
- Bitwarden
- 自定义凭据服务(HTTP API)
- 1密码
- 最后通行证
模型上下文协议(MCP)
Skyvern 支持模型上下文协议(MCP),允许你使用任何支持 MCP 的大型语言模型。
点击这里查看MCP文档
Zapier / Make.com / N8N 集成
Skyvern 支持 Zapier、Make.com 和 N8N,让你能够将 Skyvern 的工作流程连接到其他应用。
- 扎皮尔
- Make.com
- N8N
🔐 点击这里了解更多关于双重认证支持的信息。
Skyvern的真实例子
我们很喜欢看到Skyvern在野外的使用情况。以下是Skyvern在现实世界中自动化工作流程的一些例子。请打开PR以添加你自己的例子!
在许多不同网站上下载发票
预约现场演示
![图片[8]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/invoice_downloading.gif)
自动化求职流程
💡 看看实际作
![图片[9]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/job_application_demo.gif)
自动化制造公司的材料采购
💡 看看实际作
![图片[10]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/finditparts_recording_crop.gif)
访问政府网站注册账户或填写表格
💡 看看实际作
![图片[11]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/edd_services.gif)
填写随机联系我们表格
💡 看看实际作
![图片[12]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/contact_forms.gif)
从保险提供商获取任何语言的保险报价
💡 看看实际作
![图片[13]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/bci_seguros_recording.gif)
💡 看看实际作
![图片[1]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网](https://github.com/Skyvern-AI/skyvern/raw/main/fern/images/geico_shu_recording_cropped.gif)
贡献者设置
一定要装好UV线。
- 运行它来创建你的虚拟环境(
.venv)uv sync --group dev
- 执行初始服务器配置
uv run skyvern quickstart
- 在浏览器中导航以开始使用UI。Skyvern CLI 支持 Windows、WSL、macOS 和 Linux 环境。
http://localhost:8080
文档
更详细的文档可以在我们的📕文档页面找到。如果有不清楚或缺失的地方,请通过打开问题或通过电子邮件、Discord联系我们,告诉我们。
支持的大型语言模型
| 供应商 | 支持的型号 |
|---|---|
| OpenAI | GPT4-涡轮,GPT-4O,GPT-4O-迷你 |
| 人为 | 克洛德3(俳句、十四行诗、作品),克洛德3.5(十四行诗) |
| Azure OpenAI | 有没有GPT模型?用多模态LLM (Azure/GPT4-O)获得更好的性能 |
| AWS Bedrock | 拟人克劳德3(俳句、十四行诗、作品),克劳德3.5(十四行诗) |
| 双子座 | Gemini 2.5 Pro 和闪存,Gemini 2.0 |
| 奥拉玛 | 通过 Ollama 运行任何本地托管的模型 |
| OpenRouter | 通过OpenRouter访问模型 |
| 兼容 OpenAI | 任何遵循OpenAI的API格式的自定义API端点(通过liteLLM)) |
环境变量
OpenAI
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_OPENAI |
注册OpenAI模型 | 布尔 | true,false |
OPENAI_API_KEY |
OpenAI API 密钥 | 字符串 | sk-1234567890 |
OPENAI_API_BASE |
OpenAI API 基础,可选 | 字符串 | https://openai.api.base |
OPENAI_ORGANIZATION |
OpenAI 组织 ID,可选 | 字符串 | your-org-id |
推荐:LLM_KEYOPENAI_GPT4OOPENAI_GPT4O_MINIOPENAI_GPT4_1OPENAI_O4_MINIOPENAI_O3
人为
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_ANTHROPIC |
注册人类模型 | 布尔 | true,false |
ANTHROPIC_API_KEY |
Anthropic API 密钥 | 字符串 | sk-1234567890 |
推荐:LLM_KEYANTHROPIC_CLAUDE3.5_SONNETANTHROPIC_CLAUDE3.7_SONNETANTHROPIC_CLAUDE4_OPUSANTHROPIC_CLAUDE4_SONNET
Azure OpenAI
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_AZURE |
Register Azure OpenAI models | 布尔 | true,false |
AZURE_API_KEY |
Azure deployment API key | 字符串 | sk-1234567890 |
AZURE_DEPLOYMENT |
Azure OpenAI 部署名称 | 字符串 | skyvern-deployment |
AZURE_API_BASE |
Azure deployment api base URL | 字符串 | https://skyvern-deployment.openai.azure.com/ |
AZURE_API_VERSION |
Azure API Version | 字符串 | 2024-02-01 |
推荐:LLM_KEYAZURE_OPENAI
AWS Bedrock
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_BEDROCK |
注册AWS Bedrock模型。要使用 AWS Bedrock,首先需要确保你的 AWS 配置设置正确。 | 布尔 | true,false |
推荐:LLM_KEYBEDROCK_ANTHROPIC_CLAUDE3.7_SONNET_INFERENCE_PROFILEBEDROCK_ANTHROPIC_CLAUDE4_OPUS_INFERENCE_PROFILEBEDROCK_ANTHROPIC_CLAUDE4_SONNET_INFERENCE_PROFILE
双子座
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_GEMINI |
寄存器双子座模型 | 布尔 | true,false |
GEMINI_API_KEY |
Gemini API 密钥 | 字符串 | your_google_gemini_api_key |
推荐:LLM_KEYGEMINI_2.5_PRO_PREVIEWGEMINI_2.5_FLASH_PREVIEW
奥拉玛
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_OLLAMA |
通过 Ollama 注册本地模型 | 布尔 | true,false |
OLLAMA_SERVER_URL |
你的 Ollama 服务器的网址 | 字符串 | http://host.docker.internal:11434 |
OLLAMA_MODEL |
Ollama 型号名称加载 | 字符串 | qwen2.5:7b-instruct |
推荐:LLM_KEYOLLAMA
注意:Ollama 目前还不支持视力。
OpenRouter
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_OPENROUTER |
寄存器OpenRouter模型 | 布尔 | true,false |
OPENROUTER_API_KEY |
OpenRouter API 密钥 | 字符串 | sk-1234567890 |
OPENROUTER_MODEL |
OpenRouter 型号名称 | 字符串 | mistralai/mistral-small-3.1-24b-instruct |
OPENROUTER_API_BASE |
OpenRouter API 基础 URL | 字符串 | https://api.openrouter.ai/v1 |
推荐:LLM_KEYOPENROUTER
OpenAI 兼容
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
ENABLE_OPENAI_COMPATIBLE |
注册一个自定义兼容 OpenAI 的 API 端点 | 布尔 | true,false |
OPENAI_COMPATIBLE_MODEL_NAME |
OpenAI 兼容端点的模型名称 | 字符串 | yi-34b等。gpt-3.5-turbomistral-large |
OPENAI_COMPATIBLE_API_KEY |
OpenAI 兼容端点的 API 密钥 | 字符串 | sk-1234567890 |
OPENAI_COMPATIBLE_API_BASE |
OpenAI 兼容端点的基础网址 | 字符串 | https://api.together.xyz/v1等。http://localhost:8000/v1 |
OPENAI_COMPATIBLE_API_VERSION |
OpenAI 兼容端点的 API 版本,可选 | 字符串 | 2023-05-15 |
OPENAI_COMPATIBLE_MAX_TOKENS |
完成时的最高代币,可选 | 整数 | 4096等。8192 |
OPENAI_COMPATIBLE_TEMPERATURE |
温度设置,可选 | 浮 | 0.0等。0.50.7 |
OPENAI_COMPATIBLE_SUPPORTS_VISION |
是否支持视觉,可选 | 布尔 | true,false |
支持的LLM密钥:OPENAI_COMPATIBLE
通用LLM配置
| 变量 | 描述 | 类型 | 样本值 |
|---|---|---|---|
LLM_KEY |
你想用的型号名称 | 字符串 | 参见上文支持的LLM密钥 |
SECONDARY_LLM_KEY |
skyvern 迷你特工模型的名称是 | 字符串 | 参见上文支持的LLM密钥 |
LLM_CONFIG_MAX_TOKENS |
覆盖LLM所使用的最大令牌 | 整数 | 128000 |
功能路线图
这是我们未来几个月的规划路线图。如果您有任何建议或希望新增功能,请随时通过电子邮件或Discord与我们联系。
- 开源 – 开源 Skyvern 的核心代码库
- 工作流程支持 – 允许将多个Skyvern调用串联起来
- 改进上下文——通过文本提示引入相关标签上下文,提升Skyvern对可交互元素内容理解的能力
- 成本节约——通过优化传递到Skyvern的上下文树,提升Skyvern的稳定性并降低运行成本
- 自助式UI——弃用Streamlit UI,转而采用基于React的UI组件,允许用户在Skyvern中启动新职位
- 工作流程界面构建器——引入用户界面,使用户能够可视化地构建和分析工作流程
- Chrome 视口流式传输——引入一种将 Chrome 视口实时流向用户浏览器的功能(作为自助用户界面的一部分)
- 过往运行界面——弃用Streamlit界面,转而采用基于React的界面,允许你可视化过去的运行及其结果
- 自动工作流程构建器(“观察者”)模式——允许Skyvern在网页导航时自动生成工作流程,方便构建新工作流程
- 提示缓存——在LLM调用中引入缓存层,大幅降低运行Skyvern的成本(记住过去的作并重复!)
- Web评估数据集——将Skyvern与公开基准测试集成,以跟踪模型随时间的质量
- 改进调试模式——允许Skyvern规划其作并在运行前获得“批准”,这样你就能调试它的作,并更方便地对提示进行迭代
- Chrome 扩展——允许用户通过 Chrome 扩展与 Skyvern 交互(包括语音模式、保存任务等)
- Skyvern 动作记录器——允许 Skyvern 观看用户完成任务,并自动生成工作流程
- 可互动直播——允许用户实时与直播互动,必要时介入(如手动提交敏感表单)
- 集成LLM可观测性工具——集成LLM可观测性工具,允许对特定数据集的提示修改进行回测 + 可视化Skyvern随时间的表现
- Langchain 集成——在langchain_community中创建 langchain 集成,将 Skyvern 作为“工具”使用。


没有回复内容