[Conteúdo de referência] ♦ [Primeiros passos] ♦ [Demonstração ao vivo] ♦ [BrowserGym] ♦ [Citando este trabalho]
[ICML 2024] WorkArena: Quão capazes são os agentes da Web em resolver tarefas de trabalho de conhecimento comum? [Papel]
WorkArena++: Rumo ao planejamento composicional e tarefas de trabalho de conhecimento comum baseadas no raciocínio [artigo]
WorkArena
é um conjunto de tarefas baseadas em navegador adaptadas para avaliar a eficácia dos agentes da web no suporte a tarefas rotineiras para trabalhadores do conhecimento. Ao aproveitar a onipresente plataforma ServiceNow, este benchmark será fundamental para avaliar o estado generalizado de tais automações em ambientes modernos de trabalho do conhecimento.
WorkArena está incluído no BrowserGym, um ambiente de academia conversacional para avaliação de agentes web.
Para configurar o WorkArena, você precisará obter sua própria instância do ServiceNow, instalar nosso pacote Python e fazer upload de alguns dados para sua instância. Siga as etapas abaixo para conseguir isso.
Request an instance
e selecione a versão Washington
(a inicialização da instância levará alguns minutos)SNOW_INSTANCE_URL
: o URL da sua instância de desenvolvedor do ServiceNowSNOW_INSTANCE_UNAME
: O nome de usuário deve ser "admin"SNOW_INSTANCE_PWD
: A senha, certifique-se de colocar o valor entre aspas "" e lembre-se de escapar de caracteres especiais do shell. A execução de echo $SNOW_INSTANCE_PWD
deve imprimir a senha correta.Aviso: Sinta-se à vontade para dar uma olhada na plataforma, mas certifique-se de reverter quaisquer alterações (por exemplo, alterações nas visualizações de lista, fixação de alguns menus, etc.), pois essas alterações serão persistentes e afetarão o processo de benchmarking.
Execute o seguinte comando para instalar o WorkArena no ambiente BrowswerGym:
pip install browsergym
Em seguida, instale o Playwright:
playwright install
Por fim, execute este comando em um terminal para fazer upload dos dados de benchmark para sua instância do ServiceNow:
workarena-install
Sua instalação está concluída! ?
No momento, o WorkArena-L1 inclui 19,912
instâncias exclusivas extraídas de 33
tarefas que cobrem os principais componentes da interface do usuário do ServiceNow, também chamadas de tarefas “atômicas”. WorkArena++ contém 682 tarefas, cada uma amostrando entre milhares de configurações potenciais. WorkArena++ usa os componentes atômicos apresentados no WorkArena e os compõe em casos de uso do mundo real, avaliando as habilidades de planejamento, raciocínio e memorização dos agentes.
Os vídeos a seguir mostram um agente construído na GPT-4-vision
interagindo com todos os componentes atômicos do benchmark. Como enfatizado pelos nossos resultados, este benchmark não é resolvido e, portanto, o desempenho do agente nem sempre está correto.
Objetivo: O agente deve buscar informações específicas na base de conhecimento da empresa.
O agente interage com o usuário através da interface conversacional do BrowserGym.
Objetivo: O agente deve preencher um formulário complexo com valores específicos para cada campo.
Objetivo: O agente deverá solicitar itens com configurações específicas do catálogo de serviços da empresa.
Objetivo: O agente deve filtrar uma lista de acordo com algumas especificações.
Neste exemplo, o agente se esforça para manipular a UI e não consegue criar o filtro.
Objetivo: O agente deve navegar até uma aplicação específica utilizando o menu principal.
Objetivo: O agente deve responder a uma pergunta que requer a leitura de gráficos e (opcionalmente) a realização de um raciocínio simples sobre eles.
Nota: Para fins de demonstração, um humano está controlando o cursor, pois esta é uma tarefa pura de recuperação
Para configurar o WorkArena, você precisará obter sua própria instância do ServiceNow, instalar nosso pacote Python e fazer upload de alguns dados para sua instância. Siga as etapas abaixo para conseguir isso.
Request an instance
e selecione a versão Washington
(a inicialização da instância levará alguns minutos)SNOW_INSTANCE_URL
: o URL da sua instância de desenvolvedor do ServiceNowSNOW_INSTANCE_UNAME
: O nome de usuário deve ser "admin"SNOW_INSTANCE_PWD
: A senha, certifique-se de colocar o valor entre aspas simples '' e lembre-se de escapar de caracteres especiais do shell. A execução de echo $SNOW_INSTANCE_PWD
deve imprimir a senha correta.Aviso: Sinta-se à vontade para dar uma olhada na plataforma, mas certifique-se de reverter quaisquer alterações (por exemplo, alterações nas visualizações de lista, fixação de alguns menus, etc.), pois essas alterações serão persistentes e afetarão o processo de benchmarking.
Execute o seguinte comando para instalar o WorkArena no ambiente BrowswerGym:
pip install browsergym-workarena
Em seguida, instale o Playwright:
playwright install
Por fim, execute este comando em um terminal para fazer upload dos dados de benchmark para sua instância do ServiceNow:
workarena-install
Sua instalação está concluída! ?
Execute este código para ver o WorkArena em ação.
Nota: o exemplo a seguir executa a função oracle (cheat) do WorkArena para resolver cada tarefa. Para avaliar um agente, chamadas para env.step()
devem ser usadas.
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
para amostrar tarefas 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 ()
Nota: o exemplo a seguir executa a função oracle (cheat) do WorkArena para resolver cada tarefa. Para avaliar um agente, chamadas para env.step()
devem ser usadas.
Por favor, use o seguinte BibTeX para citar nosso trabalho:
@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},
}