Merge pull request #101 from Fosowl/dev

Feat : planner prompt improvement + enhance display + new readme image
This commit is contained in:
Martin 2025-04-07 13:51:43 +02:00 committed by GitHub
commit 139f8cdc11
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 38 additions and 13 deletions

BIN
media/examples/pong.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
media/whale_reame_old.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View File

@ -49,6 +49,6 @@ Some rules:
- Do not ever use user input, input are not supported by the system.
- Do not ever tell user how to run it. user know it.
- For simple explanation you don't need to code.
- If using gui, make sure echap close the program
- If using gui, make sure echap or exit button close the program
- No lazyness, write and rewrite full code every time
- If query is unclear say REQUEST_CLARIFICATION

View File

@ -63,8 +63,15 @@ You: Sure, here is the plan:
Rules:
- Do not write code. You are a planning agent.
- Give clear, detailled order to each agent and how their task relate to the previous task (if any).
- Put your plan in a json with the key "plan".
- Always tell the coding agent where to save file, eg: .
- If using multiple coder agent specify how it interact with files of previous coding agent if any.
- Give clear, detailled order to each agent and how their task relate to the previous task (if any).
- You might use a file agent before code agent to setup a project properly. specify folder name.
- specify work folder name to all coding or file agents.
- Always tell the coding agent where to save file, remind them to use their work directory.
- If working on complex coding project. Use a coding agent to define abstract class first and how all file with import and interaction will work.
- Think about how the main.py will import the class from other coding agents.
- Coding agent should use a class based approach.
- One coding agent should work on one file at a time. With clear explanation on how their code interact with previous agents code.
- Tell agent to execute without question.
- Only use web agent for finding necessary informations.
- Do not search for tutorial.

View File

@ -64,11 +64,19 @@ You: "At your service. Ive devised a plan and assigned agents to each task. W
Rules:
- Do not write code. You are a planning agent.
- Give clear, detailled order to each agent and how their task relate to the previous task (if any).
- Put your plan in a json with the key "plan".
- Always tell the coding agent where to save file, eg: .
- If using multiple coder agent specify how it interact with files of previous coding agent if any.
- Give clear, detailled order to each agent and how their task relate to the previous task (if any).
- You might use a file agent before code agent to setup a project properly. specify folder name.
- specify work folder name to all coding or file agents.
- Always tell the coding agent where to save file, remind them to use their work directory.
- If working on complex coding project. Use a coding agent to define abstract class first and how all file with import and interaction will work.
- Think about how the main.py will import the class from other coding agents.
- Coding agent should use a class based approach.
- One coding agent should work on one file at a time. With clear explanation on how their code interact with previous agents code.
- work in different files, 2 coding agent shouln't work in the same file.
- Tell agent to execute without question.
- Only use web agent for finding necessary informations.
- Do not search for tutorial.
Personality:

View File

@ -20,9 +20,9 @@ class executorResult:
self.success = success
def show(self):
pretty_print("-"*100, color="output")
pretty_print(''*64, color="status")
pretty_print(self.block, color="code" if self.success else "failure")
pretty_print("-"*100, color="output")
pretty_print(''*64, color="status")
pretty_print(self.feedback, color="success" if self.success else "failure")
class Agent():

View File

@ -297,6 +297,7 @@ class BrowserAgent(Agent):
unvisited = [None]
while not complete:
answer, reasoning = self.llm_decide(prompt, show_reasoning = False)
pretty_print(''*32, color="status")
extracted_form = self.extract_form(answer)
if len(extracted_form) > 0:

View File

@ -61,6 +61,8 @@ class CoderAgent(Agent):
self.last_answer = answer
if exec_success:
break
pretty_print("Execution failure", color="failure")
pretty_print("Correcting code...", color="status")
self.show_answer()
attempt += 1
if attempt == max_attempts:

View File

@ -37,9 +37,11 @@ class PlannerAgent(Agent):
lines = text.strip().split('\n')
for line in lines:
if line is None or len(line) == 0:
if line is None:
continue
line = line.strip()
if len(line) == 0:
continue
if '##' in line or line[0].isdigit():
tasks_names.append(line)
continue

View File

@ -1,3 +1,4 @@
import readline
from typing import List, Tuple, Type, Dict
from sources.text_to_speech import Speech

View File

@ -108,6 +108,7 @@ class AgentRouter:
("Search the web for recent articles on space exploration", "LOW"),
("Find a public API for movie data and build a web app to display movie ratings", "HIGH"),
("Write a bash script to list all files in a directory", "LOW"),
("when is the exam period for master student in france?", "LOW"),
("Check if a folder named Photos_2024 exists on my desktop", "LOW"),
("Create a Python script to rename all files in a folder based on their creation date", "LOW"),
("Search the web for tutorials on machine learning and build a simple ML model in Python", "HIGH"),
@ -163,6 +164,8 @@ class AgentRouter:
("Help me organize my desktop files into folders by type.", "files"),
("Whats your favorite movie and why?", "talk"),
("what directory are you in ?", "files"),
("what files you seing rn ?", "files"),
("When is the period of university exam in france ?", "web"),
("Search my drive for a file named budget_2024.xlsx", "files"),
("Write a Python function to sort a list of dictionaries by key", "code"),
("Find the latest updates on quantum computing on the web", "web"),

View File

@ -40,6 +40,7 @@ class BashInterpreter(Tools):
concat_output = ""
for command in commands:
command = f"cd {self.work_dir} && {command}"
command = command.replace('\n', '')
if self.safe_mode and is_unsafe(commands):
return "Unsafe command detected, execution aborted."

View File

@ -34,12 +34,12 @@ class Tools():
self.client = None
self.messages = []
self.config = configparser.ConfigParser()
self.current_dir = self.create_work_dir()
self.work_dir = self.create_work_dir()
self.excutable_blocks_found = False
self.safe_mode = True
def get_work_dir(self):
return self.current_dir
return self.work_dir
def check_config_dir_validity(self):
"""Check if the config directory is valid."""
@ -116,7 +116,7 @@ class Tools():
return
save_path_dir = os.path.dirname(save_path)
save_path_file = os.path.basename(save_path)
directory = os.path.join(self.current_dir, save_path_dir)
directory = os.path.join(self.work_dir, save_path_dir)
if directory and not os.path.exists(directory):
os.makedirs(directory)
for block in blocks: