? Utilitaires de vision pour les agents d'interaction Web?
? Site principal • ? Twitter • ? Discorde
Si vous avez essayé d'utiliser un LLM pour automatiser les interactions Web, vous avez probablement rencontré des questions comme:
Chez Reworkd, nous avons itéré tous ces problèmes à travers des dizaines de milliers de vrais tâches Web pour construire un puissant système de perception pour les agents Web ... Tarsier! Dans la vidéo ci-dessous, nous utilisons Tarsier pour fournir une perception de la page Web pour un agent Web GPT-4 Langchain minimaliste.
TARSIER TAGNE VISMOLEMENT Éléments interactables sur une page via des supports + un ID par exemple [23] . Ce faisant, nous fournissons un mappage entre les éléments et les ID pour un LLM pour prendre des mesures (par exemple, CLICK [23] ). Nous définissons les éléments interactables comme des boutons, des liens ou des champs d'entrée visibles sur la page; Tarsier peut également marquer tous les éléments textuels si vous passez tag_text_elements=True .
De plus, nous avons développé un algorithme OCR pour convertir une capture d'écran de page en une chaîne structurée dans l'espace (presque comme l'art ASCII) qu'un LLM même sans vision peut comprendre. Étant donné que les modèles actuels en langue visuelle manquent encore de représentations à grain fin nécessaire pour les tâches d'interaction Web, cela est essentiel. Sur nos références internes, un Tarsier-Text unimodal GPT-4 + bat GPT-4V + Tarsier-Screenshot de 10-20%!
| Capture d'écran étiquetée | Représentation de texte taguée |
|---|---|
![]() | ![]() |
pip install tarsierVisitez notre livre de cuisine pour des exemples d'agent à l'aide de Tarsier:
Nous prenons actuellement en charge 2 moteurs OCR: Google Vision et Microsoft Azure. Pour créer des informations d'identification de compte pour Google, suivez les instructions à ce sujet, alors répondez à https://stackoverflow.com/a/46290808/1780891
Les informations d'identification pour Microsoft Azure sont stockées comme un simple JSON composé d'une clé API et d'un point final
{
"key" : " <enter_your_api_key> " ,
"endpoint" : " <enter_your_api_endpoint> "
}Ces valeurs peuvent être trouvées dans la section des clés et des points de terminaison de la ressource de vision par ordinateur. Voir les instructions sur https://learn.microsoft.com/en-us/answers/questions/854952/dont-find-your-key-and-your-endpoint
Sinon, l'utilisation de base du tarse pourrait ressembler à ce qui suit:
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 ())Gardez à l'esprit que Tarsier marque différents types d'éléments différemment pour aider votre LLM à identifier les actions performantes sur chaque élément. Spécifiquement:
[#ID] : champs d'insertion de texte (par exemple textarea , input avec type textuel)[@ID] : hyperlien ( <a> balises)[$ID] : Autres éléments interactables (par exemple button , select )[ID] : texte brut (si vous passez tag_text_elements=True ) Nous avons fourni un script de configuration pratique pour vous faire fonctionner avec le développement Tarsier.
./script/setup.shSi vous modifiez des fichiers TypeScript utilisés par Tarsier, vous devrez exécuter la commande suivante. Cela compile le dactylographie en javascript, qui peut ensuite être utilisé dans le package Python.
npm run buildNous utilisons PyTest pour les tests. Pour exécuter les tests, exécutez simplement:
poetry run pytest .Avant de soumettre un RP potentiel, veuillez exécuter ce qui suit pour formater votre code:
./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}
}