-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathrun_miniwob.py
More file actions
63 lines (54 loc) · 2.02 KB
/
run_miniwob.py
File metadata and controls
63 lines (54 loc) · 2.02 KB
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
import argparse
import logging
import os
from synapse.agents.miniwob import Agent
logger = logging.getLogger("synapse")
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
logger.addHandler(handler)
logger.propagate = False
def create_parser():
parser = argparse.ArgumentParser()
parser.add_argument("--num_episodes", type=int, default=1)
parser.add_argument("--env_name", type=str)
parser.add_argument("--model", type=str, default="gpt-3.5-turbo-0301")
parser.add_argument("--temperature", type=float, default=0.0)
parser.add_argument("--seed", type=int, default=0)
parser.add_argument("--headless", action="store_true", default=False)
parser.add_argument("--no_filter", action="store_true", default=False)
parser.add_argument("--no_memory", action="store_true", default=False)
return parser
def main():
parser = create_parser()
args = parser.parse_args()
current_path = os.getcwd()
args.memory_path = os.path.join(current_path, "synapse/memory/miniwob")
args.log_dir = os.path.join(current_path, "results/miniwob")
agent = Agent(args=args)
if args.env_name in ["book-flight", "terminal", "use-autocomplete"]:
max_steps = 2
elif args.env_name in ["login-user", "login-user-popup"]:
max_steps = 3
elif args.env_name in ["guess-number", "tic-tac-toe"]:
max_steps = 10
else:
max_steps = 1
for i in range(args.num_episodes):
agent.reset(seed=args.seed + i)
for _ in range(max_steps):
obs = agent.filter()
actions = agent.act(obs)
if actions is None:
break
try:
logger.info(f"Actions:\n{actions}")
exec(actions)
except:
logger.info(f"Failed to execute action. Try again.")
if agent.done:
break
agent.log_results()
agent.close()
if __name__ == "__main__":
main()