Spaces:
Running
Running
File size: 3,324 Bytes
dd39c08 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import argparse
# locally defined agent
from agent import DemoAgentArgs
# browsergym experiments utils
from browsergym.experiments import EnvArgs, ExpArgs, get_exp_result
def str2bool(v):
if isinstance(v, bool):
return v
if v.lower() in ("yes", "true", "t", "y", "1"):
return True
elif v.lower() in ("no", "false", "f", "n", "0"):
return False
else:
raise argparse.ArgumentTypeError("Boolean value expected.")
def parse_args():
parser = argparse.ArgumentParser(description="Run experiment with hyperparameters.")
parser.add_argument(
"--model_name",
type=str,
default="gpt-4o-mini",
help="OpenAI model name.",
)
parser.add_argument(
"--task_name",
type=str,
default="openended",
help="Name of the Browsergym task to run. If 'openended', you need to specify a 'start_url'",
)
parser.add_argument(
"--start_url",
type=str,
default="https://www.google.com",
help="Starting URL (only for the openended task).",
)
parser.add_argument(
"--visual_effects",
type=str2bool,
default=True,
help="Add visual effects when the agents performs actions.",
)
parser.add_argument(
"--use_html",
type=str2bool,
default=False,
help="Use HTML in the agent's observation space.",
)
parser.add_argument(
"--use_axtree",
type=str2bool,
default=True,
help="Use AXTree in the agent's observation space.",
)
parser.add_argument(
"--use_screenshot",
type=str2bool,
default=False,
help="Use screenshot in the agent's observation space.",
)
return parser.parse_args()
def main():
print(
"""\
--- WARNING ---
This is a basic agent for demo purposes.
Visit AgentLab for more capable agents with advanced features.
https://github.com/ServiceNow/AgentLab"""
)
args = parse_args()
# setting up agent config
agent_args = DemoAgentArgs(
model_name=args.model_name,
chat_mode=False,
demo_mode="default" if args.visual_effects else "off",
use_html=args.use_html,
use_axtree=args.use_axtree,
use_screenshot=args.use_screenshot,
)
# setting up environment config
env_args = EnvArgs(
task_name=args.task_name,
task_seed=None,
max_steps=100,
headless=False, # keep the browser open
# viewport={"width": 1500, "height": 1280}, # can be played with if needed
)
# for openended task, set environment and agent to interactive chat mode on a start url
if args.task_name == "openended":
agent_args.chat_mode = True
env_args.wait_for_user_message = True
env_args.task_kwargs = {"start_url": args.start_url}
# setting up the experiment
exp_args = ExpArgs(
env_args=env_args,
agent_args=agent_args,
)
# running and logging results
exp_args.prepare("./results")
exp_args.run()
# loading and printing results
exp_result = get_exp_result(exp_args.exp_dir)
exp_record = exp_result.get_exp_record()
for key, val in exp_record.items():
print(f"{key}: {val}")
if __name__ == "__main__":
main()
|