Sasha Rush commited on
Commit
7d4b679
·
1 Parent(s): 23eb24d

leaderboard

Browse files
Files changed (1) hide show
  1. app.py +38 -37
app.py CHANGED
@@ -195,11 +195,15 @@ class Game:
195
  return f"Game(init={self.board.player_pos}, flag={self.board.flag_pos}, walls={self.board.wall_pos}, boundary={self.boundary}, key={self.board.key_pos})"
196
 
197
  # This is the version of move that the AI can see.
198
- def move(game, action, old_pos):
 
199
  # ACTIONS (must be legal)
 
 
200
  game.move(Actions(action))
201
  offset = change_str[action]
202
  pos = (old_pos[0] + offset[0], old_pos[1] + offset[1])
 
203
 
204
  assert 0 <= pos[0] < game.boundary[0], "Row position out of bounds"
205
  assert 0 <= pos[1] < game.boundary[1], "Col position out of bounds"
@@ -237,7 +241,7 @@ def draw_board(grid, num=0):
237
  canvas += row.translate(w * 0.5 if r%2 else 0, 1.5 * r)
238
  canvas = canvas.center_xy().frame(0.5)
239
  canvas = rectangle(canvas.get_envelope().width, canvas.get_envelope().height).line_width(0.5).fill_color(Color("orange")) + canvas
240
- canvas.render_svg(f"pic{num}.svg", 256)
241
  canvas.render(f"pic{num}.png", 500)
242
  return canvas
243
 
@@ -375,12 +379,10 @@ def load(inp):
375
  board = games[inp]
376
  else:
377
  board = eval(inp)
378
- draw_board(board.board.grid, 0).render_svg("tmp.svg")
379
 
380
- return "tmp.svg", repr(board)
381
 
382
- draw_board(hard_game.board.grid, 0).render_svg("hard.svg")
383
- draw_board(easy_game.board.grid, 0).render_svg("easy.svg")
384
  with gr.Blocks() as app:
385
 
386
  # test = gr.Code(label="test")
@@ -408,40 +410,35 @@ GPTWorld is a prompting game. Your goal is to get an LLM to complete a maze. You
408
  start_btn = gr.Button("Prompt >")
409
  cancel_btn = gr.Button("Cancel")
410
 
411
- prompt = gr.Code(label="Prompt (This is for you to fill out)", language="python", lines=40, value=f"""
412
- # A prompt to describe this game to the GPT model.
 
413
 
414
- # Ideas:
415
- # * Describe how the game works
416
- # * Give code examples that solve similar mazes.
417
- # * Give examples to explain the reasoning process
418
 
419
- # You might want to do this in a separate editor and paset in.
420
 
421
- # For example you might want to tell it how the moves work
 
 
 
 
 
 
 
 
 
422
 
423
- change_str = {change_str}
424
 
425
- # Or make up a clear implementation for the move function.
426
 
427
- def move(board, action, old_pos):
428
- # ACTIONS (must be legal)
429
- board.move(action)
430
- offset = change_str[action]
431
- pos = (old_pos[0] + offset[0], old_pos[1] + offset[1])
432
- assert 0 <= pos[0] < board.boundary[0]
433
- assert 0 <= pos[1] < board.boundary[1]
434
- assert pos not in board.walls
435
- if action == "Pickup":
436
- assert pos == board.key
437
- return pos
438
-
439
- # You can also test your code on the right side to make few-shot examples.
440
-
441
- # Finally use %GAME% to inject the game description above.
442
  """)
443
  with gr.Column():
444
- im = gr.Image(label="Gallery of the Game")
445
  # im.style(preview=True, object_fit="scale-down", columns=1, container=True)
446
  msg_box = gr.HTML(label="", show_label=False)
447
 
@@ -470,7 +467,7 @@ def move(board, action, old_pos):
470
  q = {}
471
  i = 0
472
  count = 0
473
- im_ = "tmp.svg"
474
  state_val = None
475
  yield {im: im_, counter: 0, output: "", msg_box: "", state: state_val}
476
 
@@ -484,11 +481,15 @@ def move(board, action, old_pos):
484
  exec(prefix + f"\n return b\nq['board'] = my_example({repr(board)})")
485
  except AssertionError as e:
486
  print("fail")
487
- yield {im: [f"pic{j}.svg" for j in range(i)], counter: count, output: prefix, msg_box: f"You made an illegal move: {e}"}
488
  return
489
- draw_board(q["board"].board.grid, i).render_svg("tmp.svg")
 
 
 
 
490
  i += 1
491
- im_ = f"pic{i-1}.svg"
492
  yield {im: im_, counter: count, output: prefix}
493
  else:
494
  yield {im: im_, counter: count, output: prefix}
@@ -541,7 +542,7 @@ The score is the number of output tokens your solution takes.
541
  team_name = gr.Text(label="Team Name")
542
  leaderboard = gr.Button(value="Submit")
543
  msg = gr.Text(label="Status")
544
- leader = gr.Dataframe(pd.read_csv(DATA_FILE)[["team", "board", "count"]])
545
  def leaderfn(data):
546
  if data[state] is None:
547
  return {msg: "Nothing to submit"}
 
195
  return f"Game(init={self.board.player_pos}, flag={self.board.flag_pos}, walls={self.board.wall_pos}, boundary={self.boundary}, key={self.board.key_pos})"
196
 
197
  # This is the version of move that the AI can see.
198
+ def move(game, action, old_pos=None):
199
+
200
  # ACTIONS (must be legal)
201
+ if old_pos is None:
202
+ old_pos = game.board.player_pos
203
  game.move(Actions(action))
204
  offset = change_str[action]
205
  pos = (old_pos[0] + offset[0], old_pos[1] + offset[1])
206
+
207
 
208
  assert 0 <= pos[0] < game.boundary[0], "Row position out of bounds"
209
  assert 0 <= pos[1] < game.boundary[1], "Col position out of bounds"
 
241
  canvas += row.translate(w * 0.5 if r%2 else 0, 1.5 * r)
242
  canvas = canvas.center_xy().frame(0.5)
243
  canvas = rectangle(canvas.get_envelope().width, canvas.get_envelope().height).line_width(0.5).fill_color(Color("orange")) + canvas
244
+ # canvas.render_svg(f"pic{num}.svg", 256)
245
  canvas.render(f"pic{num}.png", 500)
246
  return canvas
247
 
 
379
  board = games[inp]
380
  else:
381
  board = eval(inp)
382
+ draw_board(board.board.grid, 0).render("tmp.png", 500)
383
 
384
+ return "tmp.png", repr(board)
385
 
 
 
386
  with gr.Blocks() as app:
387
 
388
  # test = gr.Code(label="test")
 
410
  start_btn = gr.Button("Prompt >")
411
  cancel_btn = gr.Button("Cancel")
412
 
413
+ prompt = gr.Code(label="Prompt (Simple example)", language="python", lines=40, value="""
414
+ # Let's play a game!
415
+ # Here are the moves.
416
 
417
+ moves = {'UR': (-1, 1), 'R': (0, 2), 'DR': (1, 1), 'DL': (1, -1),
418
+ 'L': (0, -2), 'UL': (-1, -1), 'Pickup': (0, 0)}
 
 
419
 
420
+ # You are going to write a function like this.
421
 
422
+ # Game(init=(0, 0), flag=(1, 1), walls=[], boundary=(2, 3), key=(0, 2))
423
+ # (0, 4) and (1, 3) are out-of-bounds.
424
+ def example(b):
425
+ # Starts at (0, 0)
426
+ move(b, "R")
427
+ # Moves to (0, 2). This one has the key.
428
+ move(b, "Pickup")
429
+ # Moves to (1, 1)
430
+ move(b, "DL")
431
+ return b
432
 
433
+ # Be sure not to go out of bounds!
434
 
 
435
 
436
+ # Now you are going to write a function `my_example(b)`
437
+ # It will be passed b=%GAME% to inject the game description above.
438
+ # Here is the code.
 
 
 
 
 
 
 
 
 
 
 
 
439
  """)
440
  with gr.Column():
441
+ im = gr.Image(show_label=False).style(height=500)
442
  # im.style(preview=True, object_fit="scale-down", columns=1, container=True)
443
  msg_box = gr.HTML(label="", show_label=False)
444
 
 
467
  q = {}
468
  i = 0
469
  count = 0
470
+ im_ = "tmp.png"
471
  state_val = None
472
  yield {im: im_, counter: 0, output: "", msg_box: "", state: state_val}
473
 
 
481
  exec(prefix + f"\n return b\nq['board'] = my_example({repr(board)})")
482
  except AssertionError as e:
483
  print("fail")
484
+ yield {im: f"pic{i-1}.png", counter: count, output: prefix, msg_box: f"You made an illegal move: {e}"}
485
  return
486
+
487
+ except:
488
+ yield {counter: count, output: prefix, msg_box: f"Code error"}
489
+ return
490
+ draw_board(q["board"].board.grid, i).render("tmp.png", 500)
491
  i += 1
492
+ im_ = f"pic{i-1}.png"
493
  yield {im: im_, counter: count, output: prefix}
494
  else:
495
  yield {im: im_, counter: count, output: prefix}
 
542
  team_name = gr.Text(label="Team Name")
543
  leaderboard = gr.Button(value="Submit")
544
  msg = gr.Text(label="Status")
545
+ leader = gr.Dataframe(pd.read_csv(DATA_FILE)[["team", "board", "count"]].sort_values(["board", "count"]))
546
  def leaderfn(data):
547
  if data[state] is None:
548
  return {msg: "Nothing to submit"}