
skyvern v1.0.47
使用AI自动化基于浏览器的工作流程
🐉 使用LLM和计算机视觉自动化基于浏览器的工作流程 🐉
Skyvern 使用LLM和计算机视觉来自动化基于浏览器的工作流程。它提供了一个与Playwright兼容的SDK,在Playwright之上增加了AI功能,并且还包含一个无代码工作流构建器,帮助技术用户和非技术用户在任何网站上自动化手动工作流程,取代脆弱或不可靠的自动化方案。
传统的浏览器自动化方法需要为网站编写自定义脚本,通常依赖DOM解析和基于XPath的交互,而一旦网站布局发生变化,这些脚本就会失效。
Skyvern不再仅依赖代码定义的XPath交互,而是利用视觉LLM来学习和与网站交互。
工作原理
Skyvern的灵感来源于BabyAGI和AutoGPT所推广的基于任务驱动的自主代理设计——但有一个重大优势:我们赋予Skyvern使用浏览器自动化库(如Playwright)与网站交互的能力。
Skyvern通过一组代理来理解网站,并规划和执行其操作:
这种方法有几个优点:
- Skyvern能够在从未见过的网站上运行,因为它能够将视觉元素映射到完成工作流所需的操作,而无需任何自定义代码
- Skyvern对网站布局变化具有抵抗力,因为我们的系统在导航时没有预定义的XPath或其他选择器
- Skyvern能够将单个工作流应用于大量网站,因为它能够推理完成工作流所需的交互 详细的技术报告可以在这里找到。
演示
https://github.com/user-attachments/assets/5cab4668-e8e2-4982-8551-aab05ff73a7f
快速开始
Skyvern Cloud
Skyvern Cloud 是Skyvern的托管云版本,让您无需担心基础设施即可运行Skyvern。它允许并行运行多个Skyvern实例,并附带反机器人检测机制、代理网络和验证码解决器。
如果您想试用,请访问app.skyvern.com并创建一个账户。
本地运行(用户界面+服务器)
选择您偏好的设置方式:
数据库默认:
skyvern quickstart和skyvern run server默认使用位于~/.skyvern/data.db的SQLite数据库,因此pip路径无需Postgres或Docker即可运行。要改用Postgres,请传递--postgres(用于本地容器)或--database-string(用于现有数据库)。Docker Compose始终使用捆绑的Postgres服务。
选项 A:pip 安装(推荐用于Python管理的本地设置)
所需依赖:
此外,对于 Windows:
- Rust
- 带有C++开发工具和Windows SDK的VS Code
1. 安装 Skyvern```bash
pip install "skyvern[all]"
#### 2. 运行 Skyvern```bash
skyvern quickstart
pip 快速入门默认使用 SQLite。如需使用本地 Postgres 容器,请运行 skyvern quickstart --postgres。
选项B:Docker Compose
如果您希望将所有组件容器化(Postgres、API、UI),并且不想在本地安装 Python/Node,请使用此选项。
- 安装 Docker Desktop
- 克隆仓库: ```bash
git clone https://github.com/skyvern-ai/skyvern.git && cd skyvern
- 在
.env中配置你的LLM提供商(如果缺失,下面的quickstart --docker-compose命令将从.env.example创建它): ```bash cp .env.example .env # if not already creatededit .env to add your LLM API key
- 启动全部: ```bash
docker compose up -d
- 打开 http://localhost:8080
故障排除
(sqlite3.OperationalError) table organizations already exists — 你遇到了 pip install skyvern==1.0.31 中一个已知的错误。修复方法:```bash
rm ~/.skyvern/data.db # remove the leftover SQLite file
pip install --upgrade skyvern # 1.0.32+ contains the fix
skyvern quickstart
如果你仍然停留在1.0.31版本且无法升级,请改用uv安装:```bash
uv pip install skyvern
pip install skyvern 失败并出现 ResolutionImpossible (litellm / fastmcp) — 你遇到了 1.0.31 中的依赖解析冲突。请升级到 1.0.32+ 或使用 uv:uv pip install skyvern。
SDK
Skyvern 是一个 Playwright 扩展,增加了 AI 驱动的浏览器自动化。 它为你提供 Playwright 的全部功能以及额外的 AI 能力——使用自然语言提示与元素交互、提取数据并自动化复杂的多步骤工作流。
安装:
- Python SDK / 云 API:
pip install skyvern - 本地服务器 + 打包 UI:
pip install "skyvern[all]"然后运行skyvern quickstart - 本地服务器 + 带 Postgres 的打包 UI:
pip install "skyvern[all]"然后运行skyvern quickstart --postgres - 针对现有 API 的打包 UI:
pip install "skyvern[ui]"然后运行skyvern run ui --api-url <api-url> --api-key <api-key> - TypeScript:
npm install @skyvern/client
AI 驱动的页面命令
Skyvern 在页面对象上添加了四个核心 AI 命令:
| 命令 | 描述 |
|---|---|
page.act(prompt) | 使用自然语言执行操作(例如,“点击登录按钮”) |
page.extract(prompt, schema) | 从页面提取结构化数据,可带 JSON schema |
page.validate(prompt) | 验证页面状态,返回 bool(例如,“检查用户是否已登录”) |
page.prompt(prompt, schema) | 向 LLM 发送任意提示,可带响应 schema |
此外,page.agent 提供更高级的工作流命令:
| 命令 | 描述 |
|---|---|
page.agent.run_task(prompt) | 执行复杂的多步骤任务 |
page.agent.login(credential_type, credential_id) | 使用存储的凭据进行身份验证(Skyvern、Bitwarden、1Password) |
page.agent.download_files(prompt) | 导航并下载文件 |
page.agent.run_workflow(workflow_id) | 执行预构建的工作流 |
AI 增强的 Playwright 操作
所有标准 Playwright 操作都支持可选的 prompt 参数,用于 AI 驱动的元素定位:
| 操作 | Playwright | AI 增强 |
|---|---|---|
| 点击 | page.click("#btn") | page.click(prompt="点击登录按钮") |
| 填充 | page.fill("#email", "[email protected]") | page.fill(prompt="邮箱字段", value="[email protected]") |
| 选择 | page.select_option("#country", "US") | page.select_option(prompt="国家下拉框", value="US") |
| 上传 | page.upload_file("#file", "doc.pdf") | page.upload_file(prompt="上传区域", files="doc.pdf") |
三种交互模式:```python
1. Traditional Playwright - CSS/XPath selectors
await page.click("#submit-button")
2. AI-powered - natural language
await page.click(prompt="Click the green Submit button")
3. AI fallback - tries selector first, falls back to AI if it fails
await page.click("#submit-btn", prompt="Click the Submit button")
### 核心 AI 命令 - 示例```python
# act - Perform actions using natural language
await page.act("Click the login button and wait for the dashboard to load")
# extract - Extract structured data with optional JSON schema
result = await page.extract("Get the product name and price")
result = await page.extract(
prompt="Extract order details",
schema={"order_id": "string", "total": "number", "items": "array"}
)
# validate - Check page state (returns bool)
is_logged_in = await page.validate("Check if the user is logged in")
# prompt - Send arbitrary prompts to the LLM
summary = await page.prompt("Summarize what's on this page")
快速入门示例
通过UI运行:```bash skyvern run all
打开 http://localhost:8080 即可通过网页界面运行任务。如果打包的 UI 缺失,`skyvern run ui` 会提示安装匹配的 UI 包。对于非交互式设置,请使用 `skyvern run ui --install-ui` 或 `skyvern run all --install-ui`。
要仅针对现有的 Skyvern API 运行打包的 UI,请安装 `skyvern[ui]` 并传入 `--api-url`;CLI 会从 API URL 推断 `--wss-url`,除非你覆盖它。你也可以在运行 `skyvern run ui` 之前设置 `VITE_API_BASE_URL`、`VITE_WSS_BASE_URL`、`VITE_ARTIFACT_API_BASE_URL`、`VITE_SKYVERN_API_KEY` 和 `VITE_BROWSER_STREAMING_MODE`。
**Python SDK:**```python
from skyvern import Skyvern
# Local mode
skyvern = Skyvern.local()
# Or connect to Skyvern Cloud
skyvern = Skyvern(api_key="your-api-key")