File size: 3,516 Bytes
53709ed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import sys

sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from agentreview.agent import Player
from agentreview.paper_review_player import PaperExtractorPlayer, AreaChair, Reviewer
from agentreview.role_descriptions import get_ac_config, get_reviewer_player_config, get_author_config, \
    get_paper_extractor_config


def initialize_players(experiment_setting: dict, args):
    paper_id = experiment_setting['paper_id']
    paper_decision = experiment_setting['paper_decision']

    if args.task == "paper_decision":
        experiment_setting["players"] = {k: v for k, v in experiment_setting["players"].items() if k.startswith("AC")}

    players = []

    for role, players_list in experiment_setting["players"].items():

        for i, player_config in enumerate(players_list):
            if role == "AC":

                # For AC, `env_type` is either "paper_decision" or "paper_review"
                player_config = get_ac_config(env_type=args.task,
                                              scoring_method=args.ac_scoring_method,
                                              num_papers_per_area_chair=args.num_papers_per_area_chair,
                                              global_settings=experiment_setting['global_settings'],
                                              acceptance_rate=args.acceptance_rate,
                                              **player_config)

                player_config['model'] = args.model_name

                player = AreaChair(data_dir=args.data_dir,
                                   conference=args.conference,
                                   args=args,
                                   **player_config)


            elif args.task == "paper_review":


                if role == "Paper Extractor":

                    player_config = get_paper_extractor_config(global_settings=experiment_setting['global_settings'])

                    player = PaperExtractorPlayer(data_dir=args.data_dir, paper_id=paper_id,
                                                  paper_decision=paper_decision,
                                                  args=args,
                                                  conference=args.conference, **player_config)



                elif role == "Author":

                    # Author requires no behavior customization.
                    # So we directly use the Player class
                    player_config = get_author_config()
                    player = Player(data_dir=args.data_dir,
                                    conference=args.conference,
                                    args=args,
                                    **player_config)



                elif role == "Reviewer":
                    player_config = get_reviewer_player_config(reviewer_index=i + 1,
                                                               global_settings=experiment_setting['global_settings'],
                                                               **player_config)
                    player_config['model'] = args.model_name
                    player = Reviewer(data_dir=args.data_dir, conference=args.conference, args=args, **player_config)


                else:
                    raise NotImplementedError(f"Unknown role for paper review (stage 1-4): {role}")

            else:
                raise NotImplementedError(f"Unknown role for paper decision (stage 5): {role}")

            players.append(player)

    return players