Skip to content

Commit 7e68b2e

Browse files
committed
Adding new actions and updating settings
1 parent 10b0d98 commit 7e68b2e

12 files changed

+177
-58
lines changed

‎AI.db

12 KB
Binary file not shown.

‎avatar2_lite.png

30.4 KB
Loading

‎code_env_requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
requests
1+
requests
2+
gradio

‎final_screenshot.png

-42.5 KB
Loading

‎initial_screenshot.png

32.7 KB
Loading

‎logs/logs.txt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,3 @@
11
Running on local URL: http://127.0.0.1:7860
22

33
To create a public link, set `share=True` in `launch()`.
4-
assistant > action: run_python_code -> {'name': 'run_python_code', 'group': 'env_actions', 'pointer': <function run_python_code at 0x0000025E11D63520>, 'agent_action': {'type': 'function', 'function': {'name': 'run_python_code', 'description': 'Runs the given code in a virtual environment.', 'parameters': {'type': 'object', 'properties': {'code': {'type': 'string', 'description': 'code'}, 'filename': {'type': 'string', 'description': 'filename'}}, 'required': ['code']}}}, 'prompt_template': None}
5-
action: run_python_code -> {'code': 'import pygame\nimport random\nimport math\n\n# Initialize Pygame\npygame.init()\n\n# Constants\nWIDTH, HEIGHT = 800, 600\nFPS = 60\n\n# Colors\nBLACK = (0, 0, 0)\nWHITE = (255, 255, 255)\n\n# Screen setup\nscreen = pygame.display.set_mode((WIDTH, HEIGHT))\npygame.display.set_caption("Asteroids")\n\n# Clock to control the frame rate\nclock = pygame.time.Clock()\n\n# Spaceship class\nclass Spaceship(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n self.image = pygame.Surface((50, 40), pygame.SRCALPHA)\n pygame.draw.polygon(self.image, WHITE, [(25, 0), (0, 40), (50, 40)])\n self.rect = self.image.get_rect(center=(WIDTH // 2, HEIGHT // 2))\n self.speed = 5\n self.angle = 0\n self.rotation_speed = 5\n\n def update(self):\n keys = pygame.key.get_pressed()\n if keys[pygame.K_LEFT]:\n self.angle += self.rotation_speed\n if keys[pygame.K_RIGHT]:\n self.angle -= self.rotation_speed\n if keys[pygame.K_UP]:\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Keep the spaceship on the screen\n if self.rect.left < 0:\n self.rect.right = WIDTH\n if self.rect.right > WIDTH:\n self.rect.left = 0\n if self.rect.top < 0:\n self.rect.bottom = HEIGHT\n if self.rect.bottom > HEIGHT:\n self.rect.top = 0\n\n# Main game loop\ndef main():\n running = True\n spaceship = Spaceship()\n all_sprites = pygame.sprite.Group(spaceship)\n\n while running:\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n running = False\n\n all_sprites.update()\n\n screen.fill(BLACK)\n all_sprites.draw(screen)\n pygame.display.flip()\n\n clock.tick(FPS)\n\n pygame.quit()\n\nif __name__ == "__main__":\n main()', 'filename': 'asteroids.py'}
6-
action: run_python_code(args={
7-
"code": "import pygame\nimport random\nimport math\n\n# Initialize Pygame\npygame.init()\n\n# Constants\nWIDTH, HEIGHT = 800, 600\nFPS = 60\n\n# Colors\nBLACK = (0, 0, 0)\nWHITE = (255, 255, 255)\n\n# Screen setup\nscreen = pygame.display.set_mode((WIDTH, HEIGHT))\npygame.display.set_caption(\"Asteroids\")\n\n# Clock to control the frame rate\nclock = pygame.time.Clock()\n\n# Spaceship class\nclass Spaceship(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n self.image = pygame.Surface((50, 40), pygame.SRCALPHA)\n pygame.draw.polygon(self.image, WHITE, [(25, 0), (0, 40), (50, 40)])\n self.rect = self.image.get_rect(center=(WIDTH // 2, HEIGHT // 2))\n self.speed = 5\n self.angle = 0\n self.rotation_speed = 5\n\n def update(self):\n keys = pygame.key.get_pressed()\n if keys[pygame.K_LEFT]:\n self.angle += self.rotation_speed\n if keys[pygame.K_RIGHT]:\n self.angle -= self.rotation_speed\n if keys[pygame.K_UP]:\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Keep the spaceship on the screen\n if self.rect.left < 0:\n self.rect.right = WIDTH\n if self.rect.right > WIDTH:\n self.rect.left = 0\n if self.rect.top < 0:\n self.rect.bottom = HEIGHT\n if self.rect.bottom > HEIGHT:\n self.rect.top = 0\n\n# Main game loop\ndef main():\n running = True\n spaceship = Spaceship()\n all_sprites = pygame.sprite.Group(spaceship)\n\n while running:\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n running = False\n\n all_sprites.update()\n\n screen.fill(BLACK)\n all_sprites.draw(screen)\n pygame.display.flip()\n\n clock.tick(FPS)\n\n pygame.quit()\n\nif __name__ == \"__main__\":\n main()",
8-
"filename": "asteroids.py"
9-
}) -> ('The process appears to have run successfully.', '')
10-
assistant > action: run_python_code -> {'name': 'run_python_code', 'group': 'env_actions', 'pointer': <function run_python_code at 0x0000025E11D63520>, 'agent_action': {'type': 'function', 'function': {'name': 'run_python_code', 'description': 'Runs the given code in a virtual environment.', 'parameters': {'type': 'object', 'properties': {'code': {'type': 'string', 'description': 'code'}, 'filename': {'type': 'string', 'description': 'filename'}}, 'required': ['code']}}}, 'prompt_template': None}
11-
action: run_python_code -> {'code': 'import pygame\nimport random\nimport math\n\n# Initialize Pygame\npygame.init()\n\n# Constants\nWIDTH, HEIGHT = 800, 600\nFPS = 60\n\n# Colors\nBLACK = (0, 0, 0)\nWHITE = (255, 255, 255)\n\n# Screen setup\nscreen = pygame.display.set_mode((WIDTH, HEIGHT))\npygame.display.set_caption("Asteroids")\n\n# Clock to control the frame rate\nclock = pygame.time.Clock()\n\n# Spaceship class\nclass Spaceship(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n self.image = pygame.Surface((50, 40), pygame.SRCALPHA)\n pygame.draw.polygon(self.image, WHITE, [(25, 0), (0, 40), (50, 40)])\n self.rect = self.image.get_rect(center=(WIDTH // 2, HEIGHT // 2))\n self.speed = 5\n self.angle = 0\n self.rotation_speed = 5\n\n def update(self):\n keys = pygame.key.get_pressed()\n if keys[pygame.K_LEFT]:\n self.angle += self.rotation_speed\n if keys[pygame.K_RIGHT]:\n self.angle -= self.rotation_speed\n if keys[pygame.K_UP]:\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Keep the spaceship on the screen\n if self.rect.left < 0:\n self.rect.right = WIDTH\n if self.rect.right > WIDTH:\n self.rect.left = 0\n if self.rect.top < 0:\n self.rect.bottom = HEIGHT\n if self.rect.bottom > HEIGHT:\n self.rect.top = 0\n\n# Asteroid class\nclass Asteroid(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n self.image = pygame.Surface((50, 50), pygame.SRCALPHA)\n pygame.draw.circle(self.image, WHITE, (25, 25), 25)\n self.rect = self.image.get_rect(center=(random.randint(0, WIDTH), random.randint(0, HEIGHT)))\n self.speed = random.randint(1, 3)\n self.angle = random.randint(0, 360)\n\n def update(self):\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Keep the asteroid on the screen\n if self.rect.left < 0:\n self.rect.right = WIDTH\n if self.rect.right > WIDTH:\n self.rect.left = 0\n if self.rect.top < 0:\n self.rect.bottom = HEIGHT\n if self.rect.bottom > HEIGHT:\n self.rect.top = 0\n\n# Bullet class\nclass Bullet(pygame.sprite.Sprite):\n def __init__(self, x, y, angle):\n super().__init__()\n self.image = pygame.Surface((5, 5))\n self.image.fill(WHITE)\n self.rect = self.image.get_rect(center=(x, y))\n self.speed = 10\n self.angle = angle\n\n def update(self):\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Remove the bullet if it goes off the screen\n if self.rect.left < 0 or self.rect.right > WIDTH or self.rect.top < 0 or self.rect.bottom > HEIGHT:\n self.kill()\n\n# Main game loop\ndef main():\n running = True\n spaceship = Spaceship()\n all_sprites = pygame.sprite.Group(spaceship)\n asteroids = pygame.sprite.Group()\n bullets = pygame.sprite.Group()\n\n # Create initial asteroids\n for _ in range(5):\n asteroid = Asteroid()\n all_sprites.add(asteroid)\n asteroids.add(asteroid)\n\n while running:\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n running = False\n elif event.type == pygame.KEYDOWN:\n if event.key == pygame.K_SPACE:\n bullet = Bullet(spaceship.rect.centerx, spaceship.rect.centery, spaceship.angle)\n all_sprites.add(bullet)\n bullets.add(bullet)\n\n all_sprites.update()\n\n # Check for collisions\n pygame.sprite.groupcollide(bullets, asteroids, True, True)\n\n screen.fill(BLACK)\n all_sprites.draw(screen)\n pygame.display.flip()\n\n clock.tick(FPS)\n\n pygame.quit()\n\nif __name__ == "__main__":\n main()', 'filename': 'asteroids.py'}
12-
action: run_python_code(args={
13-
"code": "import pygame\nimport random\nimport math\n\n# Initialize Pygame\npygame.init()\n\n# Constants\nWIDTH, HEIGHT = 800, 600\nFPS = 60\n\n# Colors\nBLACK = (0, 0, 0)\nWHITE = (255, 255, 255)\n\n# Screen setup\nscreen = pygame.display.set_mode((WIDTH, HEIGHT))\npygame.display.set_caption(\"Asteroids\")\n\n# Clock to control the frame rate\nclock = pygame.time.Clock()\n\n# Spaceship class\nclass Spaceship(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n self.image = pygame.Surface((50, 40), pygame.SRCALPHA)\n pygame.draw.polygon(self.image, WHITE, [(25, 0), (0, 40), (50, 40)])\n self.rect = self.image.get_rect(center=(WIDTH // 2, HEIGHT // 2))\n self.speed = 5\n self.angle = 0\n self.rotation_speed = 5\n\n def update(self):\n keys = pygame.key.get_pressed()\n if keys[pygame.K_LEFT]:\n self.angle += self.rotation_speed\n if keys[pygame.K_RIGHT]:\n self.angle -= self.rotation_speed\n if keys[pygame.K_UP]:\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Keep the spaceship on the screen\n if self.rect.left < 0:\n self.rect.right = WIDTH\n if self.rect.right > WIDTH:\n self.rect.left = 0\n if self.rect.top < 0:\n self.rect.bottom = HEIGHT\n if self.rect.bottom > HEIGHT:\n self.rect.top = 0\n\n# Asteroid class\nclass Asteroid(pygame.sprite.Sprite):\n def __init__(self):\n super().__init__()\n self.image = pygame.Surface((50, 50), pygame.SRCALPHA)\n pygame.draw.circle(self.image, WHITE, (25, 25), 25)\n self.rect = self.image.get_rect(center=(random.randint(0, WIDTH), random.randint(0, HEIGHT)))\n self.speed = random.randint(1, 3)\n self.angle = random.randint(0, 360)\n\n def update(self):\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Keep the asteroid on the screen\n if self.rect.left < 0:\n self.rect.right = WIDTH\n if self.rect.right > WIDTH:\n self.rect.left = 0\n if self.rect.top < 0:\n self.rect.bottom = HEIGHT\n if self.rect.bottom > HEIGHT:\n self.rect.top = 0\n\n# Bullet class\nclass Bullet(pygame.sprite.Sprite):\n def __init__(self, x, y, angle):\n super().__init__()\n self.image = pygame.Surface((5, 5))\n self.image.fill(WHITE)\n self.rect = self.image.get_rect(center=(x, y))\n self.speed = 10\n self.angle = angle\n\n def update(self):\n self.rect.x += self.speed * math.cos(math.radians(self.angle))\n self.rect.y -= self.speed * math.sin(math.radians(self.angle))\n\n # Remove the bullet if it goes off the screen\n if self.rect.left < 0 or self.rect.right > WIDTH or self.rect.top < 0 or self.rect.bottom > HEIGHT:\n self.kill()\n\n# Main game loop\ndef main():\n running = True\n spaceship = Spaceship()\n all_sprites = pygame.sprite.Group(spaceship)\n asteroids = pygame.sprite.Group()\n bullets = pygame.sprite.Group()\n\n # Create initial asteroids\n for _ in range(5):\n asteroid = Asteroid()\n all_sprites.add(asteroid)\n asteroids.add(asteroid)\n\n while running:\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n running = False\n elif event.type == pygame.KEYDOWN:\n if event.key == pygame.K_SPACE:\n bullet = Bullet(spaceship.rect.centerx, spaceship.rect.centery, spaceship.angle)\n all_sprites.add(bullet)\n bullets.add(bullet)\n\n all_sprites.update()\n\n # Check for collisions\n pygame.sprite.groupcollide(bullets, asteroids, True, True)\n\n screen.fill(BLACK)\n all_sprites.draw(screen)\n pygame.display.flip()\n\n clock.tick(FPS)\n\n pygame.quit()\n\nif __name__ == \"__main__\":\n main()",
14-
"filename": "asteroids.py"
15-
}) -> ('The process appears to have run successfully.', '')
16-
assistant >

‎main.py

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from playground.global_values import GlobalValues
1818
import argparse
1919

20-
thread = api.create_thread() # create a new thread everytime this is run
20+
# thread = api.create_thread() # create a new thread everytime this is run
2121
actions_manager = ActionsManager()
2222
semantic_manager = SemanticManager()
2323

@@ -28,29 +28,16 @@
2828
logger = Logger("logs.txt")
2929
logger.reset_logs()
3030

31+
current_thread = None
3132

32-
def wrap_latex_with_markdown(text):
33-
# system = """You are a LaTeX genius and equation genius!,
34-
# Your job is to identify LaTeX and equations in the text.
35-
# For each block of LaTeX or equation text you will wrap it with $ if the block is inline,
36-
# or with $$ if the block is on its own line.
37-
# Examples:
38-
# inline x^2 + y^2 = z^2 with text -> inline $x^2 + y^2 = z^2$ with text
39-
# x^2 + y^2 = z^2 -> $$x^2 + y^2 = z^2$$
40-
# """
41-
# user = text
42-
# text = semantic_manager.get_semantic_response(system, user)
43-
# return text
44-
# Regular expression to find LaTeX enclosed in [] or ()
45-
bracket_pattern = re.compile(r"\[(.*?)\]")
46-
parenthesis_pattern = re.compile(r"\((.*?)\)")
4733

48-
# Replace LaTeX within brackets with Markdown inline math
49-
text = bracket_pattern.sub(r"$$\1$$", text)
34+
def create_new_thread():
35+
global current_thread
36+
current_thread = api.create_thread()
37+
return "New thread created."
5038

51-
# Replace LaTeX within parentheses with Markdown inline math
52-
text = parenthesis_pattern.sub(r"$$\1$$", text)
53-
return text
39+
40+
create_new_thread()
5441

5542

5643
def print_like_dislike(x: gr.LikeData):
@@ -90,7 +77,9 @@ def ask_assistant(assistant_id, history, message):
9077
history.append((message["text"], None))
9178
content = message["text"]
9279
if content or attachments: # only create a message if there is content
93-
api.create_thread_message(thread.id, "user", content, attachments=attachments)
80+
api.create_thread_message(
81+
current_thread.id, "user", content, attachments=attachments
82+
)
9483

9584
return history, gr.MultimodalTextbox(value=None, interactive=False)
9685

@@ -122,6 +111,15 @@ def get_file_path(file):
122111

123112

124113
def run(history, assistant_id, artifacts):
114+
if current_thread is None:
115+
history.append((None, "Please create a new thread first."))
116+
yield (
117+
history,
118+
artifacts,
119+
gr.update(visible=artifacts),
120+
)
121+
return
122+
125123
assistant = api.retrieve_assistant(assistant_id)
126124
output_queue = queue.Queue()
127125
eh = EventHandler(output_queue)
@@ -146,7 +144,7 @@ def stream_worker(assistant_id, thread_id, event_handler):
146144
output_queue.put(("text", text))
147145

148146
# Start the initial stream
149-
thread_id = thread.id
147+
thread_id = current_thread.id
150148
initial_thread = threading.Thread(
151149
target=stream_worker, args=(assistant.id, thread_id, eh)
152150
)
@@ -272,17 +270,24 @@ def main_interface():
272270
elem_id="chatbot",
273271
bubble_full_width=True,
274272
container=True,
275-
avatar_images=["avatar1.png", "avatar2.png"],
273+
avatar_images=["avatar1.png", "avatar2_lite.png"],
276274
layout="panel",
277275
)
278-
279-
chat_input = gr.MultimodalTextbox(
280-
interactive=True,
281-
file_types=["image"],
282-
placeholder="Enter message or upload file...",
283-
show_label=False,
284-
elem_id="chat_input",
285-
)
276+
with gr.Row():
277+
with gr.Column(scale=12):
278+
chat_input = gr.MultimodalTextbox(
279+
interactive=True,
280+
file_types=["image"],
281+
placeholder="Enter message or upload file...",
282+
show_label=False,
283+
elem_id="chat_input",
284+
)
285+
with gr.Column(scale=1):
286+
new_thread_button = gr.Button(
287+
"Create New Thread", size="lg"
288+
)
289+
290+
new_thread_button.click(create_new_thread, [], None)
286291

287292
chat_msg = chat_input.submit(
288293
ask_assistant,
@@ -303,7 +308,7 @@ def main_interface():
303308

304309
chatbot.like(print_like_dislike, None, None)
305310

306-
with gr.Tab(label="Behavior Tree Runner"):
311+
with gr.Tab(label="Agentic Behavior Tree Runner"):
307312
with gr.Column(scale=4):
308313
btree_runner = btree_runner_panel()
309314

‎playground/assistant_actions/database_actions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ def create_table(db_filename, table_name, columns):
6868

6969

7070
@agent_action
71-
def insert_or_update_entry(db_filename, table_name, columns):
71+
def insert_or_update_database_entry(db_filename, table_name, columns):
7272
"""
73-
Insert or update an entry in the specified table.
73+
Insert or update an entry in the specified database table.
7474
7575
Args:
7676
db_filename (str): The name of the database file

0 commit comments

Comments
 (0)