[벤치마크 내용] ◆ [시작하기] ◆ [라이브 데모] ◆ [BrowserGym] ◆ [이 작품 인용]
[ICML 2024] WorkArena: 일반 지식 작업을 해결하는 데 웹 에이전트는 얼마나 뛰어난가요? [종이]
WorkArena++: 구성 계획 및 추론 기반 공통 지식 작업 작업을 향하여 [논문]
WorkArena
는 지식 근로자를 위한 일상적인 작업을 지원하는 데 있어서 웹 에이전트의 효율성을 측정하기 위해 맞춤화된 브라우저 기반 작업 제품군입니다. 유비쿼터스 ServiceNow 플랫폼을 활용함으로써 이 벤치마크는 현대 지식 작업 환경에서 이러한 자동화의 광범위한 상태를 평가하는 데 중요한 역할을 할 것입니다.
WorkArena는 웹 에이전트 평가를 위한 대화형 체육관 환경인 BrowserGym에 포함되어 있습니다.
WorkArena를 설정하려면 자체 ServiceNow 인스턴스를 가져와서 Python 패키지를 설치하고 일부 데이터를 인스턴스에 업로드해야 합니다. 이를 달성하려면 아래 단계를 따르십시오.
Request an instance
클릭하고 Washington
릴리스를 선택합니다(인스턴스를 초기화하는 데 몇 분 정도 소요됩니다).SNOW_INSTANCE_URL
: ServiceNow 개발자 인스턴스의 URLSNOW_INSTANCE_UNAME
: 사용자 이름은 "admin"이어야 합니다.SNOW_INSTANCE_PWD
: 비밀번호입니다. 값을 따옴표 ""로 묶어야 하며 특수 쉘 문자를 이스케이프 처리해야 한다는 점에 주의하세요. echo $SNOW_INSTANCE_PWD
실행하면 올바른 비밀번호가 인쇄됩니다.경고: 플랫폼을 자유롭게 둘러보세요. 그러나 모든 변경 사항(예: 목록 보기 변경, 일부 메뉴 고정 등)을 되돌려야 합니다. 이러한 변경 사항은 지속적이고 벤치마킹 프로세스에 영향을 미치기 때문입니다.
BrowswerGym 환경에 WorkArena를 설치하려면 다음 명령을 실행하십시오.
pip install browsergym
그런 다음 Playwright를 설치합니다.
playwright install
마지막으로 터미널에서 이 명령을 실행하여 ServiceNow 인스턴스에 벤치마크 데이터를 업로드합니다.
workarena-install
이제 설치가 완료되었습니다! ?
현재 WorkArena-L1에는 ServiceNow 사용자 인터페이스의 주요 구성 요소를 다루는 33
작업("원자적" 작업이라고도 함)에서 가져온 19,912
고유한 인스턴스가 포함되어 있습니다. WorkArena++에는 682개의 작업이 포함되어 있으며 각 작업은 수천 개의 잠재적 구성 중에서 샘플링됩니다. WorkArena++는 WorkArena에 제시된 원자 구성 요소를 사용하고 이를 에이전트의 계획, 추론 및 암기 능력을 평가하는 실제 사용 사례로 구성합니다.
다음 비디오는 벤치마크의 모든 원자 구성 요소와 상호 작용하는 GPT-4-vision
기반으로 구축된 에이전트를 보여줍니다. 결과에서 강조된 것처럼 이 벤치마크는 해결되지 않았으므로 에이전트의 성능이 항상 적절한 것은 아닙니다.
목표: 상담원은 회사 지식 기반에서 특정 정보를 검색해야 합니다.
에이전트는 BrowserGym의 대화형 인터페이스를 통해 사용자와 상호작용합니다.
목표: 에이전트는 각 필드에 대한 특정 값으로 복잡한 양식을 채워야 합니다.
목표: 상담원은 회사의 서비스 카탈로그에서 특정 구성으로 항목을 주문해야 합니다.
목표: 에이전트는 일부 사양에 따라 목록을 필터링해야 합니다.
이 예에서 에이전트는 UI를 조작하는 데 어려움을 겪고 필터를 생성하지 못합니다.
목표: 에이전트는 기본 메뉴를 사용하여 특정 애플리케이션으로 이동해야 합니다.
목표: 에이전트는 차트를 읽고 (선택적으로) 이에 대한 간단한 추론을 수행해야 하는 질문에 답해야 합니다.
참고: 이는 순수한 검색 작업이므로 데모 목적으로 사람이 커서를 제어하고 있습니다.
WorkArena를 설정하려면 자체 ServiceNow 인스턴스를 가져와서 Python 패키지를 설치하고 일부 데이터를 인스턴스에 업로드해야 합니다. 이를 달성하려면 아래 단계를 따르십시오.
Request an instance
클릭하고 Washington
릴리스를 선택합니다(인스턴스를 초기화하는 데 몇 분 정도 소요됩니다).SNOW_INSTANCE_URL
: ServiceNow 개발자 인스턴스의 URLSNOW_INSTANCE_UNAME
: 사용자 이름은 "admin"이어야 합니다.SNOW_INSTANCE_PWD
: 비밀번호입니다. 값을 작은따옴표 ''로 묶어야 하며 특수 쉘 문자를 이스케이프 처리해야 한다는 점에 주의하세요. echo $SNOW_INSTANCE_PWD
실행하면 올바른 비밀번호가 인쇄됩니다.경고: 플랫폼을 자유롭게 둘러보세요. 그러나 모든 변경 사항(예: 목록 보기 변경, 일부 메뉴 고정 등)을 되돌려야 합니다. 이러한 변경 사항은 지속적이고 벤치마킹 프로세스에 영향을 미치기 때문입니다.
BrowswerGym 환경에 WorkArena를 설치하려면 다음 명령을 실행하십시오.
pip install browsergym-workarena
그런 다음 Playwright를 설치합니다.
playwright install
마지막으로 터미널에서 이 명령을 실행하여 ServiceNow 인스턴스에 벤치마크 데이터를 업로드합니다.
workarena-install
이제 설치가 완료되었습니다! ?
WorkArena가 실제로 작동하는 모습을 보려면 이 코드를 실행하세요.
참고: 다음 예에서는 WorkArena의 oracle(치트) 기능을 실행하여 각 작업을 해결합니다. 에이전트를 평가하려면 대신 env.step()
호출을 사용해야 합니다.
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
으로 변경합니다. 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 ()
참고: 다음 예에서는 WorkArena의 oracle(치트) 기능을 실행하여 각 작업을 해결합니다. 에이전트를 평가하려면 대신 env.step()
호출을 사용해야 합니다.
우리 작업을 인용하려면 다음 BibTeX를 사용하십시오.
@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},
}