? Утилиты Vision для агентов веб -взаимодействия?
? Основной сайт • ? Twitter • ? Раздор
Если вы пытались использовать LLM для автоматизации веб -взаимодействий, вы, вероятно, столкнетесь с такими вопросами, как:
В REWARKD мы повторили все эти проблемы в десятках тысяч реальных веб -задач, чтобы создать мощную систему восприятия для веб -агентов ... Tarsier! В видео ниже мы используем Tarsier для предоставления восприятия веб-страницы для минималистичного веб-агента GPT-4 Langchain.
Tarsier Визуально теги взаимодействуют элементы на странице через кронштейны + идентификатор, например [23] . При этом мы предоставляем отображение между элементами и идентификаторами для LLM, чтобы предпринять действия (например, CLICK [23] ). Мы определяем интерактивные элементы как кнопки, ссылки или поля ввода, которые видны на странице; Tarsier также может пометить все текстовые элементы, если вы передаете tag_text_elements=True .
Кроме того, мы разработали алгоритм OCR, чтобы преобразовать скриншот страницы в строку пробела (почти как искусство ASCII), которую LLM даже без видения может понять. Поскольку в современных моделях на языке зрения по-прежнему не хватает мелкозернистых представлений, необходимых для задач веб-взаимодействия, это очень важно. На наших внутренних критериях Unimodal GPT-4 + Tarsier-Text Beats GPT-4V + Tarsier-Screenshot на 10-20%!
| Tagged Screenshot | Tagged Text Prestion |
|---|---|
![]() | ![]() |
pip install tarsierПосетите нашу кулинарную книгу для примеров агента, используя Tarsier:
В настоящее время мы поддерживаем 2 двигателя OCR: Google Vision и Microsoft Azure. Чтобы создать учетные данные службы для Google, следуйте инструкциям по этому вопросу, так что ответьте https://stackoverflow.com/a/46290808/1780891
Учетные данные для Microsoft Azure хранятся как простой JSON, состоящий из ключа API и конечной точки
{
"key" : " <enter_your_api_key> " ,
"endpoint" : " <enter_your_api_endpoint> "
}Эти значения можно найти в разделе «Ключи и конечной точки ресурса компьютерного зрения». См. Инструкции по адресу https://learn.microsoft.com/en-us/answers/questions/854952/dont-find-your-key-and-your-endpoint
В противном случае использование базового плавника может выглядеть следующим образом:
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 ():
# To create the service account key, follow the instructions on this SO answer 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 ) # Mapping of tags to x_paths
print ( page_text ) # My Text representation of the page
if __name__ == '__main__' :
asyncio . run ( main ())Имейте в виду, что плавные теги разных типов элементов по -разному, чтобы помочь вашему LLM определить, какие действия выполняются на каждом элементе. Конкретно:
[#ID] : текстовые поля (например, textarea , input с текстовым типом)[@ID] : гиперссылки ( <a> теги)[$ID] : другие взаимодействующие элементы (например, button , select )[ID] : простой текст (если вы передаете tag_text_elements=True ) Мы предоставили удобный сценарий настройки, чтобы заставить вас запустить и заработать с Tarsier Development.
./script/setup.shЕсли вы измените какие -либо файлы TypeScript, используемые Tarsier, вам нужно выполнить следующую команду. Это компилирует TypeScript в JavaScript, который затем можно использовать в пакете Python.
npm run buildМы используем Pytest для тестирования. Чтобы запустить тесты, просто запустите:
poetry run pytest .Перед отправкой потенциального пиара, пожалуйста, запустите следующее, чтобы форматировать ваш код:
./script/format.sh 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}
}