? Utilitários de visão para agentes de interação na web?
? Site principal • ? Twitter • ? Discórdia
Se você tentou usar um LLM para automatizar as interações da web, provavelmente teve perguntas como:
Na REWORKD, iteramos em todos esses problemas em dezenas de milhares de tarefas reais da Web para criar um poderoso sistema de percepção para agentes da Web ... Tarsier! No vídeo abaixo, usamos o Tarsier para fornecer percepção da página da web para um agente da web minimalista do GPT-4 Langchain.
Tarsier Tags visualmente elementos interativos em uma página por meio de colchetes + um ID, por exemplo, [23] . Ao fazer isso, fornecemos um mapeamento entre elementos e IDs para um LLM tomar ações (por exemplo, CLICK [23] ). Definimos elementos interativos como botões, links ou campos de entrada que são visíveis na página; Tarsier também pode marcar todos os elementos textuais se você passar tag_text_elements=True .
Além disso, desenvolvemos um algoritmo OCR para converter uma captura de tela de página em uma sequência estruturada de espaço em branco (quase como a arte ASCII) que um LLM mesmo sem visão pode entender. Como os modelos atuais de linguagem da visão ainda não possuem representações de granulação fina necessárias para tarefas de interação na Web, isso é fundamental. Em nossos benchmarks internos, o Tarsier-Text Unimodal GPT-4 + vence o GPT-4V + Tarsier-Screenshot em 10-20%!
| ScreenShot de tags | Representação de texto marcada |
|---|---|
![]() | ![]() |
pip install tarsierVisite nosso livro de receitas para exemplos de agentes usando Tarsier:
Atualmente, suportamos 2 mecanismos OCR: Google Vision e Microsoft Azure. Para criar credenciais da conta de serviço para o Google, siga as instruções sobre isso, então responda https://stackoverflow.com/a/46290808/1780891
As credenciais para o Microsoft Azure são armazenadas como um JSON simples que consiste em uma chave de API e um terminal
{
"key" : " <enter_your_api_key> " ,
"endpoint" : " <enter_your_api_endpoint> "
}Esses valores podem ser encontrados na seção de teclas e terminais do recurso de visão computacional. Veja as instruções em https://learn.microsoft.com/en-us/answers/questions/854952/dont-find-your-key-and-your-ndpoint
Caso contrário, o uso básico do Tarsier pode parecer o seguinte:
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 ())Lembre -se de que Tarsier tags diferentes tipos de elementos de maneira diferente para ajudar seu LLM a identificar quais ações são executáveis em cada elemento. Especificamente:
[#ID] : campos inseráveis em texto (por exemplo, textarea , input com tipo de textual)[@ID] : Hyperlinks ( <a> Tags)[$ID] : outros elementos interativos (por exemplo, button , select )[ID] : Texto simples (se você passa tag_text_elements=True ) Fornecemos um script de configuração útil para colocá -lo em funcionamento com o desenvolvimento da Tarsier.
./script/setup.shSe você modificar quaisquer arquivos do TypeScript usados pelo Tarsier, precisará executar o seguinte comando. Isso compila o TypeScript no JavaScript, que pode ser utilizado no pacote Python.
npm run buildUsamos o Pytest para testes. Para executar os testes, basta executar:
poetry run pytest .Antes de enviar um pote em potencial, execute o seguinte para formatar seu código:
./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}
}