Spaces:
Running
Running
import asyncio | |
import fire | |
from metagpt.ext.werewolf.roles import Guard, Moderator, Seer, Villager, Werewolf, Witch | |
from metagpt.ext.werewolf.roles.human_player import prepare_human_player | |
from metagpt.ext.werewolf.werewolf_game import WerewolfGame | |
from metagpt.logs import logger | |
async def start_game( | |
investment: float = 3.0, | |
n_round: int = 5, | |
shuffle: bool = True, | |
add_human: bool = False, | |
use_reflection: bool = True, | |
use_experience: bool = False, | |
use_memory_selection: bool = False, | |
new_experience_version: str = "", | |
): | |
game = WerewolfGame() | |
game_setup, players = game.env.init_game_setup( | |
role_uniq_objs=[Villager, Werewolf, Guard, Seer, Witch], | |
num_werewolf=2, | |
num_villager=2, | |
shuffle=shuffle, | |
add_human=add_human, | |
use_reflection=use_reflection, | |
use_experience=use_experience, | |
use_memory_selection=use_memory_selection, | |
new_experience_version=new_experience_version, | |
prepare_human_player=prepare_human_player, | |
) | |
logger.info(f"{game_setup}") | |
players = [Moderator()] + players | |
game.hire(players) | |
game.invest(investment) | |
game.run_project(game_setup) | |
await game.run(n_round=n_round) | |
def main( | |
investment: float = 20.0, | |
n_round: int = 100, | |
shuffle: bool = True, | |
add_human: bool = False, | |
use_reflection: bool = True, | |
use_experience: bool = False, | |
use_memory_selection: bool = False, | |
new_experience_version: str = "", | |
): | |
asyncio.run( | |
start_game( | |
investment, | |
n_round, | |
shuffle, | |
add_human, | |
use_reflection, | |
use_experience, | |
use_memory_selection, | |
new_experience_version, | |
) | |
) | |
if __name__ == "__main__": | |
fire.Fire(main) | |