start_game.py
1 import asyncio 2 3 import fire 4 5 from metagpt.ext.werewolf.roles import Guard, Moderator, Seer, Villager, Werewolf, Witch 6 from metagpt.ext.werewolf.roles.human_player import prepare_human_player 7 from metagpt.ext.werewolf.werewolf_game import WerewolfGame 8 from metagpt.logs import logger 9 10 11 async def start_game( 12 investment: float = 3.0, 13 n_round: int = 5, 14 shuffle: bool = True, 15 add_human: bool = False, 16 use_reflection: bool = True, 17 use_experience: bool = False, 18 use_memory_selection: bool = False, 19 new_experience_version: str = "", 20 ): 21 game = WerewolfGame() 22 game_setup, players = game.env.init_game_setup( 23 role_uniq_objs=[Villager, Werewolf, Guard, Seer, Witch], 24 num_werewolf=2, 25 num_villager=2, 26 shuffle=shuffle, 27 add_human=add_human, 28 use_reflection=use_reflection, 29 use_experience=use_experience, 30 use_memory_selection=use_memory_selection, 31 new_experience_version=new_experience_version, 32 prepare_human_player=prepare_human_player, 33 ) 34 logger.info(f"{game_setup}") 35 36 players = [Moderator()] + players 37 game.hire(players) 38 game.invest(investment) 39 game.run_project(game_setup) 40 await game.run(n_round=n_round) 41 42 43 def main( 44 investment: float = 20.0, 45 n_round: int = 100, 46 shuffle: bool = True, 47 add_human: bool = False, 48 use_reflection: bool = True, 49 use_experience: bool = False, 50 use_memory_selection: bool = False, 51 new_experience_version: str = "", 52 ): 53 asyncio.run( 54 start_game( 55 investment, 56 n_round, 57 shuffle, 58 add_human, 59 use_reflection, 60 use_experience, 61 use_memory_selection, 62 new_experience_version, 63 ) 64 ) 65 66 67 if __name__ == "__main__": 68 fire.Fire(main)