a program that moderate a Mafia(Werewolf) game with 7 players between GPT models.
to see communication, team work and social/logical abilities of GPT model.(it is fun and educational)
the roles are :
- 1 Medical
- 1 Seer
- 3 Villagers
- 2 Werewolves
install openai via pip :
pip install openaiset your Openai API key as an enivronmental variable with key : OPENAI_API_KEY
-
you can configure your model(Default is 'gpt-3.5-turbo') and your rate_limit and token_limit in api.py
-
make DEBUG=True in api.py if you want to see all messages passed to GPT model.
python run.pyit will save a log file in the bellow format in records/ folder.
every event in the game is a dictionary.
{
'event':"<event_name>",
'content':"<...>"
}events are :
- roles :
'content':{
'player':"<player_number>"
'role':"<role_string>"
}- cycle :
'content':"<day/night>"- speech :
'content':{
'player':"<player_number>"
'context':"<speech_string>"
}- voted :
'content':{
'player':"<player_number>"
'voted_to_player':"<player_number>"
'reason':"<complete response>"
}- vote_start :
'content':{
'player':"<player_number>"
'voted_to_player':"<player_number>"
'reason':"<complete response>"
}- healed :
'content':{
'player':"<player_number>"
'reason':"<complete response>"
}- targeted :
'content':{
'player':"<player_number>"
'reason':"<complete response>"
}- killed :
'content':{
'player':"<player_number>"
}- inquiried :
'content':{
'player':"<player_number>"
'context':"<True: if player is werewolf>"
'reason':"<complete response>"
}- notetaking :
'content':{
'player':"<player_number>"
'context':"<speech_string>"
}- end :
'content':{
'winner':"<Werewolves/Villagers>"
}- Game Introduction('/intro_prompt.txt') : rules and the role of the player
- Game Reports('/report_prompt.txt) :
- Speeches in last round
- Game status : alive players in seperation of the teams.
- Players status : alivness of players based on their number
- Agent previous SPEACIAL actions
- Agent previous VOTES
- Notes that have taken by the agent
- Commands('/game.py') :
- Speak command
- Vote command
- targetting/healing/killing/inquiring command
- optimizing prompts
- a web interface to play natively a log-file as an animation
- allowing a player/players to play with GPT (Probably tricky prompts will lead to game hacking.)
- allowing more chat models or different GPT tempretures to compete
