[Contenu du benchmark] ♦ [Mise en route] ♦ [Démo en direct] ♦ [BrowserGym] ♦ [Citer ce travail]
[ICML 2024] WorkArena : Dans quelle mesure les agents Web sont-ils capables de résoudre des tâches de travail de connaissances courantes ? [Papier]
WorkArena++ : Vers une planification compositionnelle et des tâches de travail de connaissances communes basées sur le raisonnement [Papier]
WorkArena
est une suite de tâches basées sur un navigateur conçues pour évaluer l'efficacité des agents Web dans la prise en charge des tâches de routine des travailleurs du savoir. En exploitant la plateforme omniprésente ServiceNow, ce benchmark jouera un rôle déterminant dans l’évaluation de l’état généralisé de ces automatisations dans les environnements de travail du savoir modernes.
WorkArena est inclus dans BrowserGym, un environnement de gym conversationnel pour l'évaluation des agents Web.
Pour configurer WorkArena, vous devrez obtenir votre propre instance ServiceNow, installer notre package Python et télécharger certaines données sur votre instance. Suivez les étapes ci-dessous pour y parvenir.
Request an instance
et sélectionnez la version Washington
(l'initialisation de l'instance prendra quelques minutes)SNOW_INSTANCE_URL
: L'URL de votre instance de développeur ServiceNowSNOW_INSTANCE_UNAME
: Le nom d'utilisateur doit être "admin"SNOW_INSTANCE_PWD
: Le mot de passe, assurez-vous de placer la valeur entre guillemets "" et faites attention aux caractères d'échappement spéciaux du shell. L'exécution echo $SNOW_INSTANCE_PWD
devrait imprimer le mot de passe correct.Avertissement : n'hésitez pas à parcourir la plateforme, mais assurez-vous d'annuler toute modification (par exemple, modifications apportées aux vues de liste, épingler certains menus, etc.) car ces modifications seront persistantes et affecteront le processus d'analyse comparative.
Exécutez la commande suivante pour installer WorkArena dans l'environnement BrowswerGym :
pip install browsergym
Ensuite, installez Playwright :
playwright install
Enfin, exécutez cette commande dans un terminal pour télécharger les données de référence sur votre instance ServiceNow :
workarena-install
Votre installation est maintenant terminée ! ?
À l'heure actuelle, WorkArena-L1 comprend 19,912
instances uniques tirées de 33
tâches qui couvrent les principaux composants de l'interface utilisateur de ServiceNow, autrement appelées tâches « atomiques ». WorkArena++ contient 682 tâches, chacune échantillonnant parmi des milliers de configurations potentielles. WorkArena++ utilise les composants atomiques présentés dans WorkArena et les compose en cas d'utilisation réels évaluant les capacités de planification, de raisonnement et de mémorisation des agents.
Les vidéos suivantes montrent un agent construit sur GPT-4-vision
interagissant avec chaque composant atomique du benchmark. Comme le soulignent nos résultats, ce benchmark n’est pas résolu et donc, la performance de l’agent n’est pas toujours au rendez-vous.
Objectif : L'agent doit rechercher des informations spécifiques dans la base de connaissances de l'entreprise.
L'agent interagit avec l'utilisateur via l'interface conversationnelle de BrowserGym.
Objectif : L'agent doit remplir un formulaire complexe avec des valeurs spécifiques pour chaque champ.
Objectif : L'agent doit commander des articles avec des configurations spécifiques dans le catalogue de services de l'entreprise.
Objectif : L'agent doit filtrer une liste selon certaines spécifications.
Dans cet exemple, l'agent a du mal à manipuler l'interface utilisateur et ne parvient pas à créer le filtre.
Objectif : L'agent doit accéder à une application spécifique à l'aide du menu principal.
Objectif : L'agent doit répondre à une question qui nécessite de lire des graphiques et (éventuellement) d'effectuer un raisonnement simple sur ceux-ci.
Remarque : à des fins de démonstration, un humain contrôle le curseur puisqu'il s'agit d'une pure tâche de récupération.
Pour configurer WorkArena, vous devrez obtenir votre propre instance ServiceNow, installer notre package Python et télécharger certaines données sur votre instance. Suivez les étapes ci-dessous pour y parvenir.
Request an instance
et sélectionnez la version Washington
(l'initialisation de l'instance prendra quelques minutes)SNOW_INSTANCE_URL
: L'URL de votre instance de développeur ServiceNowSNOW_INSTANCE_UNAME
: Le nom d'utilisateur doit être "admin"SNOW_INSTANCE_PWD
: Le mot de passe, assurez-vous de placer la valeur entre guillemets simples '' et faites attention aux caractères d'échappement spéciaux du shell. L'exécution echo $SNOW_INSTANCE_PWD
devrait imprimer le mot de passe correct.Avertissement : n'hésitez pas à parcourir la plateforme, mais assurez-vous d'annuler toute modification (par exemple, modifications apportées aux vues de liste, épingler certains menus, etc.) car ces modifications seront persistantes et affecteront le processus d'analyse comparative.
Exécutez la commande suivante pour installer WorkArena dans l'environnement BrowswerGym :
pip install browsergym-workarena
Ensuite, installez Playwright :
playwright install
Enfin, exécutez cette commande dans un terminal pour télécharger les données de référence sur votre instance ServiceNow :
workarena-install
Votre installation est maintenant terminée ! ?
Exécutez ce code pour voir WorkArena en action.
Remarque : l'exemple suivant exécute la fonction oracle (triche) de WorkArena pour résoudre chaque tâche. Pour évaluer un agent, les appels à env.step()
doivent être utilisés à la place.
import random
from browsergym . core . env import BrowserEnv
from browsergym . workarena import ALL_WORKARENA_TASKS
from time import sleep
random . shuffle ( ALL_WORKARENA_TASKS )
for task in ALL_WORKARENA_TASKS :
print ( "Task:" , task )
# Instantiate a new environment
env = BrowserEnv ( task_entrypoint = task ,
headless = False )
env . reset ()
# Cheat functions use Playwright to automatically solve the task
env . chat . add_message ( role = "assistant" , msg = "On it. Please wait..." )
cheat_messages = []
env . task . cheat ( env . page , cheat_messages )
# Send cheat messages to chat
for cheat_msg in cheat_messages :
env . chat . add_message ( role = cheat_msg [ "role" ], msg = cheat_msg [ "message" ])
# Post solution to chat
env . chat . add_message ( role = "assistant" , msg = "I'm done!" )
# Validate the solution
reward , stop , message , info = env . task . validate ( env . page , cheat_messages )
if reward == 1 :
env . chat . add_message ( role = "user" , msg = "Yes, that works. Thanks!" )
else :
env . chat . add_message ( role = "user" , msg = f"No, that doesn't work. { info . get ( 'message' , '' ) } " )
sleep ( 3 )
env . close ()
l3
pour échantillonner les tâches L3. import random
from browsergym . core . env import BrowserEnv
from browsergym . workarena import get_all_tasks_agents
AGENT_L2_SAMPLED_SET = get_all_tasks_agents ( filter = "l2" )
AGENT_L2_SAMPLED_TASKS , AGENT_L2_SEEDS = [ sampled_set [ 0 ] for sampled_set in AGENT_L2_SAMPLED_SET ], [
sampled_set [ 1 ] for sampled_set in AGENT_L2_SAMPLED_SET
]
from time import sleep
for ( task , seed ) in zip ( AGENT_L2_SAMPLED_TASKS , AGENT_L2_SEEDS ):
print ( "Task:" , task )
# Instantiate a new environment
env = BrowserEnv ( task_entrypoint = task ,
headless = False )
env . reset ()
# Cheat functions use Playwright to automatically solve the task
env . chat . add_message ( role = "assistant" , msg = "On it. Please wait..." )
for i in range ( len ( env . task )):
sleep ( 1 )
env . task . cheat ( page = env . page , chat_messages = env . chat . messages , subtask_idx = i )
sleep ( 1 )
reward , done , message , info = env . task . validate ( page = env . page , chat_messages = env . chat . messages )
if reward == 1 :
env . chat . add_message ( role = "user" , msg = "Yes, that works. Thanks!" )
else :
env . chat . add_message ( role = "user" , msg = f"No, that doesn't work. { info . get ( 'message' , '' ) } " )
sleep ( 3 )
env . close ()
Remarque : l'exemple suivant exécute la fonction oracle (triche) de WorkArena pour résoudre chaque tâche. Pour évaluer un agent, les appels à env.step()
doivent être utilisés à la place.
Veuillez utiliser le BibTeX suivant pour citer notre travail :
@misc{workarena2024,
title={WorkArena: How Capable Are Web Agents at Solving Common Knowledge Work Tasks?},
author={Alexandre Drouin and Maxime Gasse and Massimo Caccia and Issam H. Laradji and Manuel Del Verme and Tom Marty and Léo Boisvert and Megh Thakkar and Quentin Cappart and David Vazquez and Nicolas Chapados and Alexandre Lacoste},
year={2024},
eprint={2403.07718},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
@misc{boisvert2024workarenacompositionalplanningreasoningbased,
title={WorkArena++: Towards Compositional Planning and Reasoning-based Common Knowledge Work Tasks},
author={Léo Boisvert and Megh Thakkar and Maxime Gasse and Massimo Caccia and Thibault Le Sellier De Chezelles and Quentin Cappart and Nicolas Chapados and Alexandre Lacoste and Alexandre Drouin},
year={2024},
eprint={2407.05291},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2407.05291},
}