tarsier

tarsier

网页交互感知系统赋能AI代理执行网络任务

Tarsier是一个为网络交互AI代理开发的视觉工具包。它利用智能标记和OCR技术将网页内容转化为结构化文本,使AI能够理解网页布局。该工具支持多种OCR引擎,提供易用的API,帮助开发者为AI代理增添网页感知能力,提高自动化网络任务的效率。

Tarsier网页交互OCRLLM自动化Github开源项目
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/263d8aa3-ff6d-44fc-9baa-c7853ecb7275.png" height="300" alt="眼镜猴" /> </p> <p align="center"> <em>🙈 网页交互代理的视觉工具 🙈</em> </p> <p align="center"> <a href="https://pypi.org/project/tarsier/" target="_blank"> <img alt="Python" src="https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54" /> <img alt="版本" src="https://img.shields.io/pypi/v/tarsier?style=for-the-badge&color=3670A0"> </a> </p> <p align="center"> <a href="https://reworkd.ai/">🔗 主站</a> <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span> <a href="https://twitter.com/khoomeik/status/1723432848739483976">🐦 Twitter</a> <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span> <a href="https://discord.gg/gcmNyAAFfV">📢 Discord</a> </p>

Tarsier

如果你尝试过使用LLM来自动化网页交互,你可能遇到过以下问题:

  • 如何将网页输入到LLM中?(例如HTML、可访问性树、截图)
  • 如何将LLM的响应映射回网页元素?
  • 如何向仅支持文本的LLM传达页面的视觉结构?

在Reworkd,我们通过数万个真实的网页任务迭代解决了所有这些问题,为网页代理构建了一个强大的感知系统...Tarsier! 在下面的视频中,我们使用Tarsier为一个简约的GPT-4 LangChain网页代理提供网页感知能力。

https://github.com/reworkd/tarsier/assets/50181239/af12beda-89b5-4add-b888-d780b353304b

它是如何工作的?

Tarsier通过方括号和ID(例如[23])在页面上为可交互元素添加视觉标签。 通过这种方式,我们为LLM提供了元素和ID之间的映射,以便执行操作(例如CLICK [23])。 我们将可交互元素定义为页面上可见的按钮、链接或输入字段;如果传递tag_text_elements=True,Tarsier还可以标记所有文本元素。

此外,我们开发了一种OCR算法,可以将页面截图转换为空白结构化字符串(类似ASCII艺术),即使是没有视觉能力的LLM也能理解。 由于当前的视觉语言模型仍然缺乏网页交互任务所需的细粒度表示,这一点至关重要。 在我们的内部基准测试中,单模态GPT-4 + Tarsier-Text比GPT-4V + Tarsier-Screenshot的性能高出10-20%!

标记截图标记文本表示
标记标记

安装

pip install tarsier

使用方法

访问我们的教程获取使用Tarsier的代理示例:

我们目前支持两种OCR引擎:Google Vision和Microsoft Azure。 要为Google创建服务账户凭证,请按照这个Stack Overflow回答中的说明操作 https://stackoverflow.com/a/46290808/1780891

Microsoft Azure的凭证以简单的JSON格式存储,包含API密钥和端点

{ "key": "<输入你的API密钥>", "endpoint": "<输入你的API端点>" }

这些值可以在计算机视觉资源的密钥和端点部分找到。请参阅以下说明 https://learn.microsoft.com/en-us/answers/questions/854952/dont-find-your-key-and-your-endpoint

否则,Tarsier的基本用法可能如下所示:

import asyncio from playwright.async_api import async_playwright from tarsier import Tarsier, GoogleVisionOCRService, MicrosoftAzureOCRService import json def load_ocr_credentials(json_file_path): with open(json_file_path) as f: credentials = json.load(f) return credentials async def main(): # 要创建服务账户密钥,请按照这个Stack Overflow回答中的说明操作 https://stackoverflow.com/a/46290808/1780891 google_cloud_credentials = load_ocr_credentials('./google_service_acc_key.json') #microsoft_azure_credentials = load_ocr_credentials('./microsoft_azure_credentials.json') ocr_service = GoogleVisionOCRService(google_cloud_credentials) #ocr_service = MicrosoftAzureOCRService(microsoft_azure_credentials) tarsier = Tarsier(ocr_service) async with async_playwright() as p: browser = await p.chromium.launch(headless=False) page = await browser.new_page() await page.goto("https://news.ycombinator.com") page_text, tag_to_xpath = await tarsier.page_to_text(page) print(tag_to_xpath) # 标签到x_paths的映射 print(page_text) # 页面的文本表示 if __name__ == '__main__': asyncio.run(main())

请记住,Tarsier以不同方式标记不同类型的元素,以帮助LLM识别每个元素可执行的操作。具体来说:

  • [#ID]:可插入文本的字段(例如textarea,带文本类型的input
  • [@ID]:超链接(<a>标签)
  • [$ID]:其他可交互元素(例如buttonselect
  • [ID]:纯文本(如果传递tag_text_elements=True

本地开发

设置

我们提供了一个方便的设置脚本,帮助你快速开始Tarsier开发。

./script/setup.sh

如果你修改了Tarsier使用的任何TypeScript文件,你需要执行以下命令。 这将把TypeScript编译成JavaScript,然后可以在Python包中使用。

npm run build

测试

我们使用pytest进行测试。要运行测试,只需执行:

poetry run pytest .

代码格式化

在提交潜在的PR之前,请运行以下命令来格式化你的代码:

./script/format.sh

支持的OCR服务

路线图

  • 添加文档和示例
  • 清理接口并添加单元测试
  • 发布
  • 改进OCR文本性能
  • 添加自定义标记样式的选项
  • 根据需要添加对其他浏览器驱动程序的支持

引用

bibtex
@misc{reworkd2023tarsier,
  title        = {Tarsier},
  author       = {Rohan Pandey and Adam Watkins and Asim Shrestha and Srijan Subedi},
  year         = {2023},
  howpublished = {GitHub},
  url          = {https://github.com/reworkd/tarsier}
}

编辑推荐精选

GPT Plus|Pro充值

GPT Plus|Pro充值

GPT充值

支持 ChatGPT Plus / Pro 充值服务,支付便捷,自动发货,售后可查。

GPT Image 2中文站

GPT Image 2中文站

AI 图片生成平台

GPT Image 2 是面向用户的 AI 图片生成平台,支持文生图、图生图及多模型创意工作流。

Vecbase

Vecbase

你的AI Agent团队

Vecbase 是专为 AI 团队打造的智能工作空间,将数据管理、模型协作与知识沉淀整合于一处。算法、产品与业务在同一平台无缝协同,让从数据到 AI 应用的落地更快一步。

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳�米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

下拉加载更多