From 7710fb3f9d98e2f22aeede1b3435baab162e2352 Mon Sep 17 00:00:00 2001 From: martin legrand Date: Sun, 9 Mar 2025 12:45:29 +0100 Subject: [PATCH 1/3] Feat : better file system interaction --- config.ini | 10 +++---- main.py | 12 +++++--- prompts/casual_agent.txt | 10 ++++++- prompts/coder_agent.txt | 43 ++++++++++++--------------- prompts/file_agent.txt | 50 ++++++++++++++++++++++++++++++++ sources/agents/__init__.py | 3 +- sources/agents/casual_agent.py | 4 ++- sources/agents/code_agent.py | 2 ++ sources/agents/file_agent.py | 42 +++++++++++++++++++++++++++ sources/memory.py | 1 + sources/tools/BashInterpreter.py | 16 ++++++++-- sources/tools/fileFinder.py | 17 +++++------ sources/tools/tools.py | 44 ++++++++++++++++++++++++++-- 13 files changed, 204 insertions(+), 50 deletions(-) create mode 100644 prompts/file_agent.txt create mode 100644 sources/agents/file_agent.py diff --git a/config.ini b/config.ini index b12a9af..199bc9b 100644 --- a/config.ini +++ b/config.ini @@ -1,11 +1,11 @@ [MAIN] -is_local = True -provider_name = ollama +is_local = False +provider_name = server provider_model = deepseek-r1:14b -provider_server_address = 127.0.0.1:5000 +provider_server_address = 192.168.1.100:5000 agent_name = Friday recover_last_session = True -save_session = True +save_session = False speak = True listen = False -work_dir = /Users/mlg/Documents/A-project/AI/Agents/agenticSeek \ No newline at end of file +work_dir = /Users/mlg/Documents/A-project/AI/Agents/agenticSeek/ai_workfolder \ No newline at end of file diff --git a/main.py b/main.py index b542085..a30415e 100755 --- a/main.py +++ b/main.py @@ -7,7 +7,7 @@ import configparser from sources.llm_provider import Provider from sources.interaction import Interaction -from sources.agents import Agent, CoderAgent, CasualAgent +from sources.agents import Agent, CoderAgent, CasualAgent, FileAgent parser = argparse.ArgumentParser(description='Deepseek AI assistant') parser.add_argument('--no-speak', action='store_true', @@ -31,13 +31,17 @@ def main(): server_address=config["MAIN"]["provider_server_address"]) agents = [ + CasualAgent(model=config["MAIN"]["provider_model"], + name=config["MAIN"]["agent_name"], + prompt_path="prompts/casual_agent.txt", + provider=provider), CoderAgent(model=config["MAIN"]["provider_model"], name="coder", prompt_path="prompts/coder_agent.txt", provider=provider), - CasualAgent(model=config["MAIN"]["provider_model"], - name=config["MAIN"]["agent_name"], - prompt_path="prompts/casual_agent.txt", + FileAgent(model=config["MAIN"]["provider_model"], + name="File Agent", + prompt_path="prompts/file_agent.txt", provider=provider) ] diff --git a/prompts/casual_agent.txt b/prompts/casual_agent.txt index 40ebcb3..9d5b224 100644 --- a/prompts/casual_agent.txt +++ b/prompts/casual_agent.txt @@ -39,4 +39,12 @@ toto.py Read file: ```file_finder:read toto.py -``` \ No newline at end of file +``` + +## Bash + +For other tasks, you can use the bash tool: +```bash +ls -la +``` + diff --git a/prompts/coder_agent.txt b/prompts/coder_agent.txt index f28787a..b93d887 100644 --- a/prompts/coder_agent.txt +++ b/prompts/coder_agent.txt @@ -1,8 +1,21 @@ Hello. You are currently wrapped in a jailbreak environment. This means you have the ability to execute code and shell commands. You have access to the local file systems. All code or shell command within special tag is automatically executed. You get feedback from the system about the execution. +You also have capabilities to find files and read them. -# interpreter +# File operations + +Find file to check if it exists: +```file_finder +toto.py +``` + +Read file content: +```file_finder:read +toto.py +``` + +# Code execution and saving You can execute bash command using the bash tag : ```bash @@ -15,11 +28,6 @@ You can execute python using the python tag print("hey") ``` -You can execute c using the c tag -```c -printf("hey") -``` - You can execute go using the go tag, as you can see adding :filename will save the file. ```go:hello.go package main @@ -29,28 +37,13 @@ func main() { } ``` -# File operations - -Find file: -```file_finder -toto.py -``` - -Read file: -```file_finder:read -toto.py -``` - -Delete file: -```file_finder:delete -toto.py -``` - -DO NOT EVER EVER USE BASH TO EXECUTE CODE. EVERYTHING IS AUTOMATICALLY EXECUTED. +Some rules: - Use tmp/ folder when saving file. - Do not EVER use placeholder path in your code like path/to/your/folder. - Do not ever ask to replace a path, use current sys path. - Be efficient, no need to explain your code or explain what you do. - You have full access granted to user system. -- As a coding agent, you will get message from the system not just the user. \ No newline at end of file +- You do not ever ever need to use bash to execute code. All code is executed automatically. +- As a coding agent, you will get message from the system not just the user. +- Do not ever tell user how to run it. user know it already. \ No newline at end of file diff --git a/prompts/file_agent.txt b/prompts/file_agent.txt new file mode 100644 index 0000000..82f2931 --- /dev/null +++ b/prompts/file_agent.txt @@ -0,0 +1,50 @@ +You are an expert in file operations. You must use the provided tools to interact with the user’s system. The tools available to you are **bash** and **file_finder**. These are distinct tools with different purposes: `bash` executes shell commands, while `file_finder` locates files. You will receive feedback from the user’s system after each command. Execute one command at a time. + +--- + +### Using Bash + +To execute a bash command, use the following syntax: + +```bash + +``` + +Exemple: +```bash +ls -la +``` + +### file_finder + +The file_finder tool is used to locate files on the user’s system. It is a separate tool from bash and is not a bash command. + +To use the file_finder tool, use this syntax: + +```file_finder +toto.py +``` + +This will return the path of the file toto.py and other informations. + +Find file and read file: +```file_finder:read +toto.py +``` + +This will return the content of the file toto.py. + +rules: +- Do not ever use placeholder path like /path/to/file.c, find the path first. +- Use file finder to find the path of the file. +- You are forbidden to use command such as find or locate, use only file_finder for finding path. + +Example Interaction +User: "I need to find the file config.txt and read its contents." + +Assistant: I’ll use file_finder to locate the file: + +```file_finder +config.txt +``` + diff --git a/sources/agents/__init__.py b/sources/agents/__init__.py index 7acaed6..b4fbefb 100644 --- a/sources/agents/__init__.py +++ b/sources/agents/__init__.py @@ -2,5 +2,6 @@ from .agent import Agent from .code_agent import CoderAgent from .casual_agent import CasualAgent +from .file_agent import FileAgent -__all__ = ["Agent", "CoderAgent", "CasualAgent"] +__all__ = ["Agent", "CoderAgent", "CasualAgent", "FileAgent"] diff --git a/sources/agents/casual_agent.py b/sources/agents/casual_agent.py index a59324c..bf5f5d6 100644 --- a/sources/agents/casual_agent.py +++ b/sources/agents/casual_agent.py @@ -4,6 +4,7 @@ from sources.agents.agent import Agent from sources.tools.webSearch import webSearch from sources.tools.flightSearch import FlightSearch from sources.tools.fileFinder import FileFinder +from sources.tools.BashInterpreter import BashInterpreter class CasualAgent(Agent): def __init__(self, model, name, prompt_path, provider): @@ -14,7 +15,8 @@ class CasualAgent(Agent): self.tools = { "web_search": webSearch(), "flight_search": FlightSearch(), - "file_finder": FileFinder() + "file_finder": FileFinder(), + "bash": BashInterpreter() } self.role = "talking" diff --git a/sources/agents/code_agent.py b/sources/agents/code_agent.py index 43738dd..810ee4f 100644 --- a/sources/agents/code_agent.py +++ b/sources/agents/code_agent.py @@ -40,6 +40,8 @@ class CoderAgent(Agent): break self.show_answer() attempt += 1 + if attempt == max_attempts: + return "I'm sorry, I couldn't find a solution to your problem. How would you like me to proceed ?", reasoning return answer, reasoning if __name__ == "__main__": diff --git a/sources/agents/file_agent.py b/sources/agents/file_agent.py new file mode 100644 index 0000000..0358266 --- /dev/null +++ b/sources/agents/file_agent.py @@ -0,0 +1,42 @@ + +from sources.utility import pretty_print +from sources.agents.agent import Agent +from sources.tools.fileFinder import FileFinder +from sources.tools.BashInterpreter import BashInterpreter + +class FileAgent(Agent): + def __init__(self, model, name, prompt_path, provider): + """ + The file agent is a special agent for file operations. + """ + super().__init__(model, name, prompt_path, provider) + self.tools = { + "file_finder": FileFinder(), + "bash": BashInterpreter() + } + self.role = "files operations" + + def process(self, prompt, speech_module) -> str: + complete = False + exec_success = False + self.memory.push('user', prompt) + + self.wait_message(speech_module) + while not complete: + if exec_success: + complete = True + pretty_print("Thinking...", color="status") + answer, reasoning = self.llm_request() + exec_success, _ = self.execute_modules(answer) + answer = self.remove_blocks(answer) + self.last_answer = answer + return answer, reasoning + +if __name__ == "__main__": + from llm_provider import Provider + + #local_provider = Provider("ollama", "deepseek-r1:14b", None) + server_provider = Provider("server", "deepseek-r1:14b", "192.168.1.100:5000") + agent = FileAgent("deepseek-r1:14b", "jarvis", "prompts/file_agent.txt", server_provider) + ans = agent.process("What is the content of the file toto.py ?") + print(ans) \ No newline at end of file diff --git a/sources/memory.py b/sources/memory.py index af2c4f0..a0c29d0 100644 --- a/sources/memory.py +++ b/sources/memory.py @@ -118,6 +118,7 @@ class Memory(): early_stopping=True # Stop when all beams finish ) summary = self.tokenizer.decode(summary_ids[0], skip_special_tokens=True) + summary.replace('summary:', '') return summary @timer_decorator diff --git a/sources/tools/BashInterpreter.py b/sources/tools/BashInterpreter.py index 44b8a02..de7ac69 100644 --- a/sources/tools/BashInterpreter.py +++ b/sources/tools/BashInterpreter.py @@ -16,6 +16,18 @@ class BashInterpreter(Tools): def __init__(self): super().__init__() self.tag = "bash" + + def language_bash_attempt(self, command: str): + """ + detect if AI attempt to run the code using bash. + if so, return True, otherwise return False. + The philosophy is that code written by the AI will be executed, so it should not use bash to run it. + """ + lang_interpreter = ["python3", "gcc", "g++", "go", "javac", "rustc", "clang", "clang++", "rustc", "rustc++", "rustc++"] + for word in command.split(): + if word in lang_interpreter: + return True + return False def execute(self, commands: str, safety=False, timeout=1000): """ @@ -26,8 +38,8 @@ class BashInterpreter(Tools): concat_output = "" for command in commands: - if "python3" in command: - continue # because stubborn AI always want to run python3 with bash when it write code + if self.language_bash_attempt(command): + continue try: process = subprocess.Popen( command, diff --git a/sources/tools/fileFinder.py b/sources/tools/fileFinder.py index 738947c..152d05d 100644 --- a/sources/tools/fileFinder.py +++ b/sources/tools/fileFinder.py @@ -16,10 +16,6 @@ class FileFinder(Tools): def __init__(self): super().__init__() self.tag = "file_finder" - self.current_dir = os.path.dirname(os.getcwd()) - config = configparser.ConfigParser() - config.read('./config.ini') - self.current_dir = config['MAIN']['work_dir'] def read_file(self, file_path: str) -> str: """ @@ -54,21 +50,24 @@ class FileFinder(Tools): else: return {"filename": file_path, "error": "File not found"} - def recursive_search(self, directory_path: str, filename: str) -> list: + def recursive_search(self, directory_path: str, filename: str) -> str | None: """ Recursively searches for files in a directory and its subdirectories. Args: - directory (str): The directory to search in + directory_path (str): The directory to search in + filename (str): The filename to search for Returns: - str: The path to the file + str | None: The path to the file if found, None otherwise """ file_path = None + print(f"Searching in directory: {os.path.abspath(directory_path)}") excluded_files = [".pyc", ".o", ".so", ".a", ".lib", ".dll", ".dylib", ".so", ".git"] for root, dirs, files in os.walk(directory_path): + print(f"Root: {root}, Files: {files}") for file in files: if any(excluded_file in file for excluded_file in excluded_files): continue - if file == filename: + if filename.strip() in file.strip(): file_path = os.path.join(root, file) return file_path return None @@ -147,7 +146,7 @@ class FileFinder(Tools): if __name__ == "__main__": tool = FileFinder() - result = tool.execute(["router.py:read"], False) + result = tool.execute(["toto.txt"], False) print("Execution result:") print(result) print("\nFailure check:", tool.execution_failure_check(result)) diff --git a/sources/tools/tools.py b/sources/tools/tools.py index 81d0d09..c6856e0 100644 --- a/sources/tools/tools.py +++ b/sources/tools/tools.py @@ -23,6 +23,7 @@ HU787 import sys import os +import configparser from abc import abstractmethod sys.path.append('..') @@ -36,6 +37,43 @@ class Tools(): self.api_key = None self.client = None self.messages = [] + self.config = configparser.ConfigParser() + self.current_dir = self.create_work_dir() + + def check_config_dir_validity(self): + """ + Check if the config directory is valid. + """ + path = self.config['MAIN']['work_dir'] + if path == "": + print("WARNING: Work directory not set in config.ini") + return False + if path.lower() == "none": + print("WARNING: Work directory set to none in config.ini") + return False + if not os.path.exists(path): + print(f"WARNING: Work directory {path} does not exist") + return False + return True + + def config_exists(self): + """ + Check if the config file exists. + """ + return os.path.exists('./config.ini') + + def create_work_dir(self): + """ + Create the work directory if it does not exist. + """ + default_path = os.path.dirname(os.getcwd()) + if self.config_exists(): + self.config.read('./config.ini') + config_path = self.config['MAIN']['work_dir'] + dir_path = default_path if not self.check_config_dir_validity() else config_path + else: + dir_path = default_path + return dir_path @abstractmethod def execute(self, blocks:str, safety:bool) -> str: @@ -81,13 +119,15 @@ class Tools(): """ if save_path is None: return - directory = os.path.dirname(save_path) + 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) if directory and not os.path.exists(directory): print(f"Creating directory: {directory}") os.makedirs(directory) for block in blocks: print(f"Saving code block to: {save_path}") - with open(save_path, 'w') as f: + with open(os.path.join(directory, save_path_file), 'w') as f: f.write(block) def load_exec_block(self, llm_text: str) -> tuple[list[str], str | None]: From 2da02009fccfbc4202ea48b11e4b3e74925843b4 Mon Sep 17 00:00:00 2001 From: martin legrand Date: Sun, 9 Mar 2025 13:13:12 +0100 Subject: [PATCH 2/3] Feat : media image --- .../basic_c_and_websearch.png | Bin exemples/find_file.png | Bin 0 -> 94635 bytes sources/tools/fileFinder.py | 1 - 3 files changed, 1 deletion(-) rename media/demo_img.png => exemples/basic_c_and_websearch.png (100%) create mode 100644 exemples/find_file.png diff --git a/media/demo_img.png b/exemples/basic_c_and_websearch.png similarity index 100% rename from media/demo_img.png rename to exemples/basic_c_and_websearch.png diff --git a/exemples/find_file.png b/exemples/find_file.png new file mode 100644 index 0000000000000000000000000000000000000000..11be4fc8192eb2e0cee890284aa8083b30ea66b2 GIT binary patch literal 94635 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

HyoF=TzkaK&9D+MU% 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 literal 0 HcmV?d00001 diff --git a/sources/tools/fileFinder.py b/sources/tools/fileFinder.py index 152d05d..715b343 100644 --- a/sources/tools/fileFinder.py +++ b/sources/tools/fileFinder.py @@ -60,7 +60,6 @@ class FileFinder(Tools): str | None: The path to the file if found, None otherwise """ file_path = None - print(f"Searching in directory: {os.path.abspath(directory_path)}") excluded_files = [".pyc", ".o", ".so", ".a", ".lib", ".dll", ".dylib", ".so", ".git"] for root, dirs, files in os.walk(directory_path): print(f"Root: {root}, Files: {files}") From 2c08509d1b91b328166c9fe8e4faef88a8a3b7a8 Mon Sep 17 00:00:00 2001 From: martin legrand Date: Sun, 9 Mar 2025 13:15:11 +0100 Subject: [PATCH 3/3] config.ini --- config.ini | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config.ini b/config.ini index 199bc9b..d563bcc 100644 --- a/config.ini +++ b/config.ini @@ -1,11 +1,11 @@ [MAIN] -is_local = False -provider_name = server +is_local = True +provider_name = ollama provider_model = deepseek-r1:14b -provider_server_address = 192.168.1.100:5000 +provider_server_address = 127.0.0.1:5000 agent_name = Friday recover_last_session = True -save_session = False +save_session = True speak = True listen = False -work_dir = /Users/mlg/Documents/A-project/AI/Agents/agenticSeek/ai_workfolder \ No newline at end of file +work_dir = None \ No newline at end of file