【skyvern 快速上手】一句话让AI帮你实现爬虫+自动化
目录
- skyvern介绍
- 主要特点
- 工作流程
- 部署(重点介绍源码部署)
- 源码部署
- docker快速部署
- 运行(基于源码)
- 后端
- 前端
- 快速使用示例
- 总结
skyvern介绍
Skyvern 是一款利用大语言模型(LLM)和计算机视觉技术来自动化浏览器工作流程的工具。它通过提供一个简单的API端点,能够替代那些脆弱或不可靠的自动化解决方案,从而高效地自动化大量网站上的手动操作。
主要特点
- 无需预定义代码:Skyvern能够在从未见过的网站上操作,自动将视觉元素映射到完成工作流程所需的动作,无需任何定制代码。
- 抗布局变化能力:由于Skyvern不依赖预定义的XPath或其他选择器,因此网站布局变化不会影响其操作。
- 大规模工作流程应用:Skyvern能够将一个工作流程应用到大量网站,具有灵活的推理能力。
- 复杂情境处理能力:通过LLM,Skyvern能够理解并处理复杂的交互情形。
工作流程
Skyvern受任务驱动的自动化代理设计启发,例如BabyAGI和AutoGPT,并结合使用如Playwright等的浏览器自动化库,实现网页交互自动化。
-
绘制边界框:
- Skyvern首先在目标网站的页面上绘制各个可交互元素的边界框。
-
解析HTML并提取图像:
- 接着,Skyvern解析页面的HTML代码,并从中提取包含网页内容的图像。
-
提取可交互元素:
- 然后,Skyvern从图像中识别并提取所有可交互的元素,如按钮、输入框等。
-
调用LLM规划动作:
- Skyvern调用大语言模型(LLM),询问下一步应该采取的动作。例如,当遇到问题“你的姓名是什么?”时,LLM会回答需要填写姓名,并点击“下一步”按钮。
- LLM的回应示例:
- 动作1:填写姓名为 “XX”。
- 动作2:点击“下一步”按钮。
-
执行动作:
- Skyvern根据LLM的指示执行具体动作,例如填写表单并点击按钮。
-
重复步骤:
- Skyvern重复上述步骤,继续解析新页面,识别可交互元素,并调用LLM规划和执行动作,直到完成整个工作流程。
部署(重点介绍源码部署)
源码部署
-
安装 Python 3.11
如有python 3.11版本(官方指定3.11版本)可跳过
我使用的pyenv来管理环境,也可使用其他方法安装python# macos中pyenv安装命令,其余系统自行查找 brew install pyenv # 配置环境变量 export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"pyenv install 3.11.9 pyenv global 3.11.9 -
安装poetry
Poetry 是 Python 中用于依赖项管理和打包的一个工具。
其他安装方式参考官方文档:https://python-poetry.org/docs# macos中poetry安装命令,其余系统自行查找 brew install poetry# 如果使用的pyenv可以指定poetry使用当前pyenv的py版本 poetry env use $(pyenv which python) -
安装PostgreSQL 14
# macos中安装命令,其余系统自行查找 brew install postgresql -
安装node
我使用的nvm来管理node环境,也可使用其他方法安装node# macos中安装命令,其余系统自行查找 brew install nvm # 安装最新node,并设置为系统默认 nvm install node nvm alias default node -
克隆源码
git clone https://github.com/Skyvern-AI/skyvern.git -
依赖安装
cd skyvern # 项目根目录执行下面的命令 ./setup.sh -
修改配置
-
后端配置
根据你使用的LLM修改.env文件即可(将需要使用的模型供应商ENABLE_*改为true,填写相应的密钥*_API_KEY,修改使用的模型LLM_KEY)
项目使用的是litellm用于发起请求,若有其他的支持视觉的LLM可以自己参考litellm,然后修改项目源码新增。
我主要新增openai的api_base这个参数,若有和我一样将openai接口国内做的转发可以参考以下步骤。- 修改
skyvern/config.py- 在
Settings类中新增类变量OPENAI_API_BASE
OPENAI_API_BASE: str | None = None - 在
- 修改
skyvern/forge/sdk/api/llm/config_registry.py- 在你需要修改的模型中新增
litellm_params参数(我使用的gpt4o,其余模型修改方法类似)
LLMConfigRegistry.register_config("OPENAI_GPT4O", LLMConfig("gpt-4o",["OPENAI_API_KEY", "OPENAI_API_BASE"], # 检查 .env中参数是否填写supports_vision=True,add_assistant_prefix=False,litellm_params=LiteLLMParams(api_base=SettingsManager.get_settings().OPENAI_API_BASE,api_key=None,api_version=None,),) ) - 在你需要修改的模型中新增
- 修改
.env- 新增
OPENAI_API_BASE
OPENAI_API_BASE="https://xx.cn/v1" - 新增
- 修改
-
前端配置
主要查看skyvern-frontend/.env中VITE_SKYVERN_API_KEY是否为空,若为空运行以下代码得到token填写即可。(若代码运行出现 403 则运行以下代码得到token修改即可)poetry shell # 进入poetry管理的项目环境 poetry run python scripts/create_organization.py Skyvern-Open-Source
-
docker快速部署
- 确保您已安装并运行Docker Desktop。
- 克隆库并导航到根目录。
- 填写Docker Compose文件中的LLM密钥。
- 运行命令启动Skyvern:
docker compose up -d
- 在浏览器中访问
http://localhost:8080开始使用。
运行(基于源码)
后端
shell脚本运行
./run_skyvern.sh
或者直接运行/调试 代码 skyvern/forge/__main__.py
前端
./run_ui.sh
快速使用示例
-
输入我想要的任务,直接执行

-
查看正在执行的任务

-
查看结果以及每一个步骤,详细记录了每一步的操作,有图片以及视频,可以详细的查看自动化的流程。这里不过多讲述,读者可自己摸索。


-
除此之外,还可以自定义运行模版


总结
Skyvern 通过结合大语言模型(LLM)和计算机视觉技术,提供了一种高效、灵活的浏览器自动化工具。其无需预定义代码,抗布局变化能力强,能够在大量网站上应用工作流程并处理复杂情境。Skyvern不仅简化了自动化流程的实现,还通过详细记录和呈现每一步骤的执行情况,为用户提供了透明和可控的自动化解决方案。不论是源码部署还是使用Docker快速部署,用户都能便捷地将Skyvern集成至自己的项目中,并且通过完善的接口和配置选项,轻松定制和扩展其功能。
相关文章:
【skyvern 快速上手】一句话让AI帮你实现爬虫+自动化
目录 skyvern介绍主要特点工作流程 部署(重点介绍源码部署)源码部署docker快速部署 运行(基于源码)后端前端 快速使用示例总结 skyvern介绍 Skyvern 是一款利用大语言模型(LLM)和计算机视觉技术来自动化浏…...
【C++ Primer Plus习题】14.1
大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include "wine.h" …...
在Ubuntu上运行QtCreator相关程序
背景:希望尝试在Linux系统上跑一下使用QtCreator相关的程序,因为有一些工作岗位要求有Linux上使用Qt的经验。 (1)我是把Windows上的程序移过来的,Windows上文件名称是不区分大小写的。 而Ubuntu上是区分的 所以一部分头文件需要进行修改&am…...
MybatisPlus 快速入门
目录 简介 安装 Spring Boot2 Spring Boot3 Spring 配置 Spring Boot 工程 Spring 工程 常见注解 条件构造器 流式查询 使用示例 批量操作 使用示例 自定义SQL Service接口 CRUD 扩展功能 代码生成 安装插件 通用枚举 配置枚举处理器 插件功能 配置示例…...
Java.lang中的String类和StringBuilder类介绍和常用方法
目录 Java.lang中的String类和StringBuilder类介绍和常用方法 String类介绍 String类的底层成员介绍 基本介绍 回顾String传址调用问题 String类对象的创建方式 String面试题 创建对象or不创建对象 创建了几个对象and共有几个对象 String常用方法 判断字符串是否相等方法 获取字…...
notepad++软件介绍(含安装包)
Notepad 是一款开源的文本编辑器,主要用于编程和代码编辑。它是一个功能强大的替代品,常常被用来替代 Windows 系统自带的记事本。 Notepad win系统免费下载地址 以下是 Notepad 的一些主要特点和功能: 多语言支持:Notepad 支持多…...
chapter13-常用类——(章节小结)——day17
498-常用类阶段梳理...
RTX AI PC 和工作站上部署多样化 AI 应用支持 Multi-LoRA
今天的大型语言模型(LLMs)在许多用例中都取得了前所未有的成果。然而,由于基础模型的通用性,应用程序开发者通常需要定制和调整这些模型,以便专门针对其用例开展工作。 完全微调需要大量数据和计算基础设施࿰…...
C++ STL-deque容器入门详解
1.1 deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访…...
数据结构之折半查找
折半查找(Binary Search),也称为二分查找,是一种在有序数组中查找特定元素的搜索算法。其工作原理是,通过不断将待查找的区间分成两半,并判断待查找的元素可能存在于哪一半,然后继续在存在可能性…...
linux高级学习12
24.9.9学习目录 一.条件变量 一.条件变量 通常条件变量和互斥锁同时使用; 条件变量是用来阻塞线程,其本身并不是锁,直到达到特定的要求; (1)条件变量初始化 #include <pthread.h> int pthread_con…...
leetcode:3174 清除数字 使用栈,时间复杂度O(n)
3174 清除数字 题目链接 题目描述 给你一个字符串 s 。 你的任务是重复以下操作删除 所有 数字字符: 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 示例 1: 输入:s "abc…...
神经网络卷积操作
文章目录 一、nn.Conv2d二、卷积操作原理三、代码实现卷积操作 一、nn.Conv2d nn.Conv2d 是 PyTorch 中的一个类,它代表了一个二维卷积层,通常用于处理图像数据。在深度学习和计算机视觉中,卷积层是构建卷积神经网络(CNN…...
专题二_滑动窗口_算法专题详细总结
目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和target,首先想到的…...
【机器学习-三-无监督学习】
无监督学习 什么是无监督学习分类聚类降维 有监督和无监督学习的区别 上一节介绍了监督学习,下面来介绍无监督学习,这也是最广泛应用的算法。 什么是无监督学习 上一节中,我们知道了监督学习是通过 对算法,**输入一对数据&#x…...
JAVA基础:Lambda表达式(上)
前言 Lambda表达式是jdk1.8的一个新特性,他属于一种语法堂主要作用是对匿名内部类语法简化 lambda基本应用 lambda表达式想要优化匿名内部类是有前提条件,首先必须是一个接口,而且要求接口中只能有1个抽象方法,称之为函数式接口…...
Vue使用fetch获取本地数据
(1)使用get test.json文件 { "list":[111,222,333] } <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initi…...
《酒饮真经》秘籍4,让你的酒场技巧更上一层楼!
在酒桌这一独特的舞台上,每个人都扮演着不同的角色,或攻或守,尽显智慧与风度。对于不擅长喝酒的人来说,如何在推杯换盏间既保护自己又不失礼节,是值得我们仔细研究的。下面是酱酒亮哥为您整理的一系列实用的酒桌攻防秘…...
回车符与快捷键记录
一.在Windows和Linux操作系统中,回车符(或称为换行符)的处理方式区别 1.Windows下的回车符 在Windows系统中,回车符通常是由两个字符组成的序列:回车符(Carriage Return,简称CR,AS…...
计算机网络-VRRP工作原理
一、VRRP工作原理 前面我们大概了解了VRRP的一些基础概念,现在开始学习VRRP的技术原理。VRRP的选举及工作步骤: 确定网关地址 选举主备 主设备发送VRRP报文通知Backup设备 主设备响应终端ARP并维持在Master状态 终端正常发送报文到网关进行转发 因为我们…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
链式法则中 复合函数的推导路径 多变量“信息传递路径”
非常好,我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题,统一使用 二重复合函数: z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y)) 来全面说明。我们会展示其全微分形式(偏导…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
