/ examples / write_game_code.py
write_game_code.py
 1  import asyncio
 2  import time
 3  
 4  from metagpt.environment.mgx.mgx_env import MGXEnv
 5  from metagpt.roles.di.engineer2 import Engineer2
 6  from metagpt.roles.di.team_leader import TeamLeader
 7  from metagpt.schema import Message
 8  
 9  
10  async def main(requirement="", user_defined_recipient="", enable_human_input=False, allow_idle_time=30):
11      env = MGXEnv()
12      env.add_roles([TeamLeader(), Engineer2()])
13  
14      msg = Message(content=requirement)
15      env.attach_images(msg)  # attach image content if applicable
16  
17      if user_defined_recipient:
18          msg.send_to = {user_defined_recipient}
19          env.publish_message(msg, user_defined_recipient=user_defined_recipient)
20      else:
21          env.publish_message(msg)
22  
23      allow_idle_time = allow_idle_time if enable_human_input else 1
24      start_time = time.time()
25      while time.time() - start_time < allow_idle_time:
26          if not env.is_idle:
27              await env.run()
28              start_time = time.time()  # reset start time
29  
30  
31  if __name__ == "__main__":
32      requirement = "Write code for a 2048 game"
33      user_defined_recipient = ""
34  
35      asyncio.run(
36          main(
37              requirement=requirement,
38              user_defined_recipient=user_defined_recipient,
39              enable_human_input=False,
40              allow_idle_time=60,
41          )
42      )