Link-AGI / AutoAgents

[IJCAI 2024] Generate different roles for GPTs to form a collaborative entity for complex tasks.
https://huggingface.co/spaces/LinkSoul/AutoAgents
MIT License
1.2k stars 147 forks source link

[bug] - Run Error with a SnakeGame example #47

Open jalr4ever opened 9 months ago

jalr4ever commented 9 months ago

Execution

What configurations or steps did I do wrong?

Or is this project simply not capable of generating an application at the level of Snake?

Error Log


## CurrentStep
Test the code to ensure it works as expected.

## Action
Print

## ActionInput
2024-01-24 09:05:26.450 | INFO     | autoagents.system.provider.openai_api:update_cost:95 - Total running cost: $0.709 | Max budget: $10.000 | Current cost: $0.142, prompt_tokens=928, completion_tokens=720
2024-01-24 09:05:56.482 | INFO     | autoagents.roles.group:_act:87 - Alex(Group): ready to Game_Logic_Designer_Action
To test the code, run the Python file 'snake_game.py' in a terminal. If the game starts and you can control the snake using the arrow keys, the code works as expected. If the game ends when the snake hits the border or itself, and the snake grows when it eats the food, then the game logic is correct.## Thought 
The previous steps have defined the rules and mechanics of the snake game and tested the code. The current step is to write the code for the game logic. 

## Task
[Game Logic Designer]: Design the rules and mechanics of the snake game. Write the code for the game logic. Test the code to ensure it works as expected. The output of this step should be the code for the game logic.

## CurrentStep
Write the code for the snake game logic.

## Action
Write File

## ActionInput
>>>snake_game.py
```python
import random
import curses

s = curses.initscr()
curses.curs_set(0)
sh, sw = s.getmaxyx()
w = curses.newwin(sh, sw, 0, 0)
w.keypad(1)
w.timeout(100)

snk_x = sw//4
snk_y = sh//2
snake = [
    [snk_y, snk_x],
    [snk_y, snk_x-1],
    [snk_y, snk_x-2]
]

food = [sh//2, sw//2]
w.addch(int(food[0]), int(food[1]), curses.ACS_PI)

key = curses.KEY_RIGHT

while True:
    next_key = w.getch()
    key = key if next_key == -1 else next_key

    if snake[0][0] in [0, sh] or \
        snake[0][1]  in [0, sw] or \
        snake[0] in snake[1:]:
        curses.endwin()
        quit()

    new_head = [snake[0][0], snake[0][1]]

    if key == curses.KEY_DOWN:
        new_head[0] += 1
    if key == curses.KEY_UP:
        new_head[0] -= 1
    if key == curses.KEY_LEFT:
        new_head[1] -= 1
    if key == curses.KEY_RIGHT:
        new_head[1] += 1

    snake.insert(0, new_head)

    if snake[0] == food:
        food = None
        while food is None:
            nf = [
                random.randint(1, sh-1),
                random.randint(1, sw-1)
            ]
            food = nf if nf not in snake else None
        w.addch(food[0], food[1], curses.ACS_PI)
    else:
        tail = snake.pop()
        w.addch(int(tail[0]), int(tail[1]), ' ')

    w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD)

>>>END
2024-01-24 09:06:36.705 | INFO     | autoagents.system.provider.openai_api:update_cost:95 - Total running cost: $0.838 | Max budget: $10.000 | Current cost: $0.129, prompt_tokens=1022, completion_tokens=568
Traceback (most recent call last):
  File "/workspaces/AutoAgents/main.py", line 56, in <module>
    asyncio.run(commanline(proxy=proxy, llm_api_key=args.llm_api_key, serpapi_key=args.serpapi_key, idea=args.idea))
  File "/usr/local/python/3.10.13/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/local/python/3.10.13/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
    return future.result()
  File "/workspaces/AutoAgents/main.py", line 30, in commanline
    await startup.startup(idea, investment, n_round, llm_api_key=llm_api_key, serpapi_key=serpapi_key, proxy=proxy)
  File "/workspaces/AutoAgents/startup.py", line 14, in startup
    await explorer.run(n_round=n_round)
  File "/workspaces/AutoAgents/autoagents/explorer.py", line 57, in run
    await self.environment.run()
  File "/workspaces/AutoAgents/autoagents/environment.py", line 203, in run
    await asyncio.gather(*futures)
  File "/workspaces/AutoAgents/autoagents/roles/role.py", line 239, in run
    rsp = await self._react()
  File "/workspaces/AutoAgents/autoagents/roles/role.py", line 209, in _react
    return await self._act()
  File "/workspaces/AutoAgents/autoagents/roles/group.py", line 91, in _act
    response = await self._rc.todo.run(context)
  File "/workspaces/AutoAgents/autoagents/actions/custom_action.py", line 142, in run
    filename = re.findall('>>>(.*?)\n', str(rsp.instruct_content.ActionInput))[0]
IndexError: list index out of range