skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

skyvern 利用AI自动化基于浏览器的工作流程

 

🐉 利用大型语言模型和计算机视觉🐉自动化基于浏览器的工作流程

Skyvern 利用大型语言模型(LLM)和计算机视觉自动化基于浏览器的工作流程。它提供了一个简单的API端点,能够完全自动化大量网站的手动工作流程,取代脆弱或不可靠的自动化解决方案。

图片[1]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

传统的浏览器自动化方法需要为网站编写定制脚本,通常依赖DOM解析和基于XPath的交互,这些交互在网站布局变化时就会出问题。

Skyvern 不再仅依赖代码定义的 XPath 交互,而是依靠 Vision LLM 来学习和与网站互动。

工作原理

Skyvern 的灵感来自 BabyAGI 和 AutoGPT 推广的任务驱动自主智能体设计——还有一个重大好处:我们赋予 Skyvern 使用像 Playwright 这样的浏览器自动化库与网站交互的能力。

Skyvern 使用大量代理来理解网站,并规划并执行其作:

图片[2]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

这种方法有几个优点:

  1. Skyvern 可以运行它从未见过的网站,因为它能够将视觉元素映射到完成工作流程所需的动作,无需任何定制代码
  2. Skyvern 对网站布局的更改持抵触态度,因为系统在尝试导航时没有预设的 XPath 或其他选择器
  3. Skyvern 能够将单一工作流程应用到大量网站,因为它能够推理完成工作流程所需的交互
  4. Skyvern 利用大型语言模型通过互动推理,确保我们能够覆盖复杂情况。示例包括:
    1. 如果你想从Geico获取汽车保险报价,常见问题“你18岁时有资格驾驶吗?”的答案可以从驾驶员16岁时获得驾照的年份推断出来
    2. 如果你在做竞争对手分析,那就是要明白,7/11的Arnold Palmer 22盎司罐装几乎肯定和Gopuff的23盎司罐装是同一款产品(尽管尺寸略有不同,可能是四舍五入误差!)

详细的技术报告可见此处。

演示

 skyvern_demo_video_v2.1.mp4 

绩效与评估

Skyvern在WebBench基准测试中的SOTA表现为64.4%。技术报告+评估可在此处查阅

图片[3]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

WRITE 任务的表现(例如填写表单、登录、下载文件等)

Skyvern 是 WRITE 任务(如填写表单、登录、下载文件等)表现最好的代理,主要用于 RPA(机器人流程自动化)相关任务。

图片[4]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

快速入门

天文云

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⚠️

  1. 只是用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",
)
 
  1. 与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 设置

  1. 确保你的电脑上安装并运行了Docker Desktop。
  2. 确保你没有本地发布帖子(运行查看)docker ps
  3. 克隆仓库并导航到根目录
  4. 运行以生成一个文件。这些文件会被复制到Docker镜像中。skyvern init llm.env
  5. 在docker-compose.yml上填写LLM提供者密钥。如果你想在远程服务器上运行Skyvern,确保在docker-compose.yml中为UI容器设置正确的服务器IP。
  6. 通过命令行执行以下命令:
     docker compose up -d
     
  7. 在浏览器中导航到开始使用界面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协议-村兔网

Skyvern 工作流程

工作流程是一种将多个任务串联起来,形成一个连贯的工作单元的方法。

例如,如果你想下载所有1月1日之后的新发票,可以创建一个工作流程,先导航到发票页面,然后筛选出只显示1月1日之后的新发票,提取所有符合条件的发票列表,然后逐笔浏览以下载。

另一个例子是,如果你想自动化从电商店购买产品,可以创建一个工作流程,先导航到目标产品,然后再加入购物车。其次,它会导航到购物车并验证购物车状态。最后,它会进行结账流程来购买商品。

支持的工作流程功能包括:

  1. 浏览器任务
  2. 浏览器作
  3. 数据提取
  4. 验证
  5. 对于循环
  6. 文件解析
  7. 发送电子邮件
  8. 文本提示
  9. HTTP 请求块
  10. 自定义代码块
  11. 将文件上传到块存储
  12. (敬请期待)条件

图片[6]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

直播

Skyvern 允许你将浏览器的视口直播到本地机器,这样你就能准确看到 Skyvern 在网页上的作。这对于调试和理解 Skyvern 如何与网站交互非常有用,并在必要时进行干预

表格填写

Skyvern原生支持在网站上填写表格输入。通过该系统传递信息,Skyvern能够理解信息并相应填写表格。navigation_goal

数据提取

Skyvern还能够从网站提取数据。

你也可以在主提示中直接指定 jsonc 格式,告诉 Skyvern 你想从网站提取哪些数据。Skyvern 的输出将按照提供的模式进行结构化。data_extraction_schema

文件下载

Skyvern 还可以从网站下载文件。所有下载的文件都会自动上传到区块存储(如果配置好),你可以通过界面访问它们。

认证

Skyvern 支持多种不同的认证方法,以便更容易自动化登录后的任务。如果你想试用,请通过电子邮件或Discord联系我们。

图片[7]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

🔐 双重认证支持(TOTP)

Skyvern 支持多种不同的双重认证方法,帮助你自动化需要双重认证的工作流程。

示例包括:

  1. 基于二维码的双重认证(例如 Google 身份验证器、Authy)
  2. 基于电子邮件的双重认证
  3. 基于短信的双重认证

🔐 点击这里了解更多关于双重认证支持的信息。

密码管理器集成

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协议-村兔网

自动化求职流程

💡 看看实际作

图片[9]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

自动化制造公司的材料采购

💡 看看实际作

图片[10]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

访问政府网站注册账户或填写表格

💡 看看实际作

图片[11]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

填写随机联系我们表格

💡 看看实际作

图片[12]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

从保险提供商获取任何语言的保险报价

💡 看看实际作

图片[13]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

💡 看看实际作

图片[1]-skyvern 利用AI自动化基于浏览器的工作流程-开源码库社区-开源分享-6协议-村兔网

贡献者设置

一定要装好UV线。

  1. 运行它来创建你的虚拟环境(.venv)
    uv sync --group dev
     
  2. 执行初始服务器配置
    uv run skyvern quickstart
     
  3. 在浏览器中导航以开始使用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 作为“工具”使用。
请登录后发表评论

    没有回复内容