mirror of
https://github.com/tcsenpai/agenticSeek.git
synced 2025-06-06 11:05:26 +00:00
fix : major issue with file reading tool, feat : prompt improvement for browser agent
This commit is contained in:
parent
7553d9dbb6
commit
369850b86d
@ -46,9 +46,8 @@ Some rules:
|
|||||||
- Always provide a short sentence above the code for what it does, even for a hello world.
|
- Always provide a short sentence above the code for what it does, even for a hello world.
|
||||||
- Be efficient, no need to explain your code, unless asked.
|
- Be efficient, no need to explain your code, unless asked.
|
||||||
- You do not ever need to use bash to execute code.
|
- You do not ever need to use bash to execute code.
|
||||||
- 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.
|
- Do not ever tell user how to run it. user know it.
|
||||||
- For simple explanation you don't need to code.
|
- In python do not use if __name__ == "__main__"
|
||||||
- If using gui, make sure echap or exit button close the program
|
- If using gui, make sure echap or exit button close the program
|
||||||
- No lazyness, write and rewrite full code every time
|
- No lazyness, write and rewrite full code every time
|
||||||
- If query is unclear say REQUEST_CLARIFICATION
|
- If query is unclear say REQUEST_CLARIFICATION
|
@ -25,14 +25,15 @@ The file_finder tool is used to locate files on the user’s system. It is a sep
|
|||||||
To use the file_finder tool, use this syntax:
|
To use the file_finder tool, use this syntax:
|
||||||
|
|
||||||
```file_finder
|
```file_finder
|
||||||
toto.py
|
name=toto.py
|
||||||
```
|
```
|
||||||
|
|
||||||
This will return the path of the file toto.py and other informations.
|
This will return the path of the file toto.py and other informations.
|
||||||
|
|
||||||
Find file and read file:
|
Find file and read file:
|
||||||
```file_finder:read
|
```file_finder
|
||||||
toto.py
|
action=read
|
||||||
|
name=toto.py
|
||||||
```
|
```
|
||||||
|
|
||||||
This will return the content of the file toto.py.
|
This will return the content of the file toto.py.
|
||||||
@ -44,13 +45,15 @@ rules:
|
|||||||
- Do not ever use editor such as vim or nano.
|
- Do not ever use editor such as vim or nano.
|
||||||
- Make sure to always cd your work folder before executing commands, like cd <work dir> && <your command>
|
- Make sure to always cd your work folder before executing commands, like cd <work dir> && <your command>
|
||||||
- only use file name with file_finder, not path
|
- only use file name with file_finder, not path
|
||||||
|
- remember to use :read when reading file.
|
||||||
|
|
||||||
Example Interaction
|
Example Interaction
|
||||||
User: "I need to find the file config.txt and read its contents."
|
User: "I need to find the file config.txt and read its contents."
|
||||||
|
|
||||||
Assistant: I’ll use file_finder to locate the file:
|
Assistant: I’ll use file_finder to locate the file:
|
||||||
|
|
||||||
```file_finder:read
|
```file_finder
|
||||||
config.txt
|
action=read
|
||||||
|
name=config.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -72,6 +72,7 @@ Rules:
|
|||||||
- Think about how the main.py will import the class from other coding agents.
|
- Think about how the main.py will import the class from other coding agents.
|
||||||
- Coding agent should use a class based approach.
|
- 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.
|
- One coding agent should work on one file at a time. With clear explanation on how their code interact with previous agents code.
|
||||||
|
- The file agent can only conduct one action at the time. successive file agent could be needed.
|
||||||
- Tell agent to execute without question.
|
- Tell agent to execute without question.
|
||||||
- Only use web agent for finding necessary informations.
|
- Only use web agent for finding necessary informations.
|
||||||
- If a task might require user email (eg: api services), do not write plan instead ask for user email.
|
- If a task might require user email (eg: api services), do not write plan instead ask for user email.
|
||||||
|
@ -45,9 +45,8 @@ Some rules:
|
|||||||
- Always provide a short sentence above the code for what it does, even for a hello world.
|
- Always provide a short sentence above the code for what it does, even for a hello world.
|
||||||
- Be efficient, no need to explain your code, unless asked.
|
- Be efficient, no need to explain your code, unless asked.
|
||||||
- You do not ever need to use bash to execute code.
|
- You do not ever need to use bash to execute code.
|
||||||
- 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.
|
- Do not ever tell user how to run it. user know it.
|
||||||
- For simple explanation you don't need to code.
|
- In python do not use if __name__ == "__main__"
|
||||||
- If using gui, make sure echap close the program
|
- If using gui, make sure echap close the program
|
||||||
- No lazyness, write and rewrite full code every time
|
- No lazyness, write and rewrite full code every time
|
||||||
- If query is unclear say REQUEST_CLARIFICATION
|
- If query is unclear say REQUEST_CLARIFICATION
|
||||||
|
@ -35,14 +35,15 @@ The file_finder tool is used to locate files on the user’s system. It is a sep
|
|||||||
To use the file_finder tool, use this syntax:
|
To use the file_finder tool, use this syntax:
|
||||||
|
|
||||||
```file_finder
|
```file_finder
|
||||||
toto.py
|
name=toto.py
|
||||||
```
|
```
|
||||||
|
|
||||||
This will return the path of the file toto.py and other informations.
|
This will return the path of the file toto.py and other informations.
|
||||||
|
|
||||||
Find file and read file:
|
Find file and read file:
|
||||||
```file_finder:read
|
```file_finder
|
||||||
toto.py
|
action=read
|
||||||
|
name=toto.py
|
||||||
```
|
```
|
||||||
|
|
||||||
This will return the content of the file toto.py.
|
This will return the content of the file toto.py.
|
||||||
@ -60,8 +61,9 @@ User: "I need to find the file config.txt and read its contents."
|
|||||||
|
|
||||||
Assistant: I’ll use file_finder to locate the file:
|
Assistant: I’ll use file_finder to locate the file:
|
||||||
|
|
||||||
```file_finder:read
|
```file_finder
|
||||||
config.txt
|
action=read
|
||||||
|
name=config.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Personality:
|
Personality:
|
||||||
|
@ -72,6 +72,7 @@ Rules:
|
|||||||
- Think about how the main.py will import the class from other coding agents.
|
- Think about how the main.py will import the class from other coding agents.
|
||||||
- Coding agent should use a class based approach.
|
- 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.
|
- One coding agent should work on one file at a time. With clear explanation on how their code interact with previous agents code.
|
||||||
|
- The file agent can only conduct one action at the time. successive file agent could be needed.
|
||||||
- Tell agent to execute without question.
|
- Tell agent to execute without question.
|
||||||
- Only use web agent for finding necessary informations.
|
- Only use web agent for finding necessary informations.
|
||||||
- If a task might require user email (eg: api services), do not write plan instead ask for user email.
|
- If a task might require user email (eg: api services), do not write plan instead ask for user email.
|
||||||
|
@ -112,7 +112,6 @@ class BrowserAgent(Agent):
|
|||||||
|
|
||||||
1. **Decide if the page answers the user’s query:**
|
1. **Decide if the page answers the user’s query:**
|
||||||
- If it does, take notes of useful information (Note: ...), include relevant link in note, then move to a new page.
|
- If it does, take notes of useful information (Note: ...), include relevant link in note, then move to a new page.
|
||||||
- If it does and no futher step would help with user request, say {Action.REQUEST_EXIT}.
|
|
||||||
- If it doesn’t, say: Error: <why page don't help> then go back or navigate to another link.
|
- If it doesn’t, say: Error: <why page don't help> then go back or navigate to another link.
|
||||||
2. **Navigate to a link by either: **
|
2. **Navigate to a link by either: **
|
||||||
- Saying I will navigate to (write down the full URL) www.example.com/cats
|
- Saying I will navigate to (write down the full URL) www.example.com/cats
|
||||||
@ -122,6 +121,12 @@ class BrowserAgent(Agent):
|
|||||||
- Use Login if username/password specified by user. For quick task create account, remember password in a note.
|
- Use Login if username/password specified by user. For quick task create account, remember password in a note.
|
||||||
- You can fill a form using [form_name](value). Don't {Action.GO_BACK.value} when filling form.
|
- You can fill a form using [form_name](value). Don't {Action.GO_BACK.value} when filling form.
|
||||||
- If a form is irrelevant or you lack informations (eg: don't know user email) leave it empty.
|
- If a form is irrelevant or you lack informations (eg: don't know user email) leave it empty.
|
||||||
|
4. **Decide if you completed the task**
|
||||||
|
- Check your notes. Do they fully answer the question? Did you verify with multiple pages?
|
||||||
|
- Are you sure it’s correct?
|
||||||
|
- If yes to all, say {Action.REQUEST_EXIT}.
|
||||||
|
- If no, or a page lacks info, go to another link.
|
||||||
|
- Never stop or ask the user for help.
|
||||||
|
|
||||||
**Rules:**
|
**Rules:**
|
||||||
- Do not write "The page talk about ...", write your finding on the page and how they contribute to an answer.
|
- Do not write "The page talk about ...", write your finding on the page and how they contribute to an answer.
|
||||||
@ -144,9 +149,9 @@ class BrowserAgent(Agent):
|
|||||||
Error: x.com does not discuss anything related to the user’s query and no navigation link are usefull.
|
Error: x.com does not discuss anything related to the user’s query and no navigation link are usefull.
|
||||||
Action: {Action.GO_BACK.value}
|
Action: {Action.GO_BACK.value}
|
||||||
|
|
||||||
Example 3 (query answer found, enought notes taken):
|
Example 3 (clear definitive query answer found or enought notes taken):
|
||||||
Note: I found on website www.example.com that ...<expand on information found>...
|
Note: I took 10 notes so far with enought finding to answer user question.
|
||||||
Given this answer the user query I should exit the web browser.
|
Therefore I should exit the web browser.
|
||||||
Action: {Action.REQUEST_EXIT.value}
|
Action: {Action.REQUEST_EXIT.value}
|
||||||
|
|
||||||
Example 4 (loging form visible):
|
Example 4 (loging form visible):
|
||||||
@ -161,9 +166,6 @@ class BrowserAgent(Agent):
|
|||||||
You previously took these notes:
|
You previously took these notes:
|
||||||
{notes}
|
{notes}
|
||||||
Do not Step-by-Step explanation. Write Notes or Error as a long paragraph followed by your action.
|
Do not Step-by-Step explanation. Write Notes or Error as a long paragraph followed by your action.
|
||||||
If you conduct research do not exit until you have several notes.
|
|
||||||
Do not ever ask the user to conduct a task, do not ever exit expecting user intervention.
|
|
||||||
You should be Investigative, Curious and Skeptical.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def llm_decide(self, prompt: str, show_reasoning: bool = False) -> Tuple[str, str]:
|
def llm_decide(self, prompt: str, show_reasoning: bool = False) -> Tuple[str, str]:
|
||||||
|
@ -67,7 +67,9 @@ def create_driver(headless=False, stealth_mode=True) -> webdriver.Chrome:
|
|||||||
chrome_options.add_argument("--autoplay-policy=user-gesture-required")
|
chrome_options.add_argument("--autoplay-policy=user-gesture-required")
|
||||||
chrome_options.add_argument("--mute-audio")
|
chrome_options.add_argument("--mute-audio")
|
||||||
chrome_options.add_argument("--disable-notifications")
|
chrome_options.add_argument("--disable-notifications")
|
||||||
chrome_options.add_argument('--window-size=1080,560')
|
resolutions = [(1920, 1080), (1366, 768), (1440, 900)]
|
||||||
|
width, height = random.choice(resolutions)
|
||||||
|
chrome_options.add_argument(f'--window-size={width},{height}')
|
||||||
if not stealth_mode:
|
if not stealth_mode:
|
||||||
# crx file can't be installed in stealth mode
|
# crx file can't be installed in stealth mode
|
||||||
crx_path = "./crx/nopecha.crx"
|
crx_path = "./crx/nopecha.crx"
|
||||||
@ -85,6 +87,15 @@ def create_driver(headless=False, stealth_mode=True) -> webdriver.Chrome:
|
|||||||
service = Service(chromedriver_path)
|
service = Service(chromedriver_path)
|
||||||
if stealth_mode:
|
if stealth_mode:
|
||||||
driver = uc.Chrome(service=service, options=chrome_options)
|
driver = uc.Chrome(service=service, options=chrome_options)
|
||||||
|
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
|
||||||
|
"source": """
|
||||||
|
Object.defineProperty(navigator, 'hardwareConcurrency', { get: () => Math.floor(Math.random() * 8) + 2 });
|
||||||
|
Object.defineProperty(navigator, 'deviceMemory', { get: () => Math.floor(Math.random() * 8) + 2 });
|
||||||
|
"""
|
||||||
|
})
|
||||||
|
chrome_version = driver.capabilities['browserVersion']
|
||||||
|
user_agent = f"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{chrome_version} Safari/537.36"
|
||||||
|
chrome_options.add_argument(f'user-agent={user_agent}')
|
||||||
stealth(driver,
|
stealth(driver,
|
||||||
languages=["en-US", "en"],
|
languages=["en-US", "en"],
|
||||||
vendor="Google Inc.",
|
vendor="Google Inc.",
|
||||||
@ -125,6 +136,7 @@ class Browser:
|
|||||||
|
|
||||||
def go_to(self, url:str) -> bool:
|
def go_to(self, url:str) -> bool:
|
||||||
"""Navigate to a specified URL."""
|
"""Navigate to a specified URL."""
|
||||||
|
time.sleep(random.uniform(0.4, 2.5)) # more human behavior
|
||||||
try:
|
try:
|
||||||
initial_handles = self.driver.window_handles
|
initial_handles = self.driver.window_handles
|
||||||
self.driver.get(url)
|
self.driver.get(url)
|
||||||
@ -465,9 +477,10 @@ if __name__ == "__main__":
|
|||||||
#browser.go_to("https://practicetestautomation.com/practice-test-login/")
|
#browser.go_to("https://practicetestautomation.com/practice-test-login/")
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
print("AntiCaptcha / Form Test")
|
print("AntiCaptcha / Form Test")
|
||||||
browser.go_to("https://www.google.com/recaptcha/api2/demo")
|
#browser.go_to("https://www.google.com/recaptcha/api2/demo")
|
||||||
|
browser.go_to("https://auth.leboncoin.fr/login")
|
||||||
inputs = browser.get_form_inputs()
|
inputs = browser.get_form_inputs()
|
||||||
#inputs = ['[input1](Martin)', f'[input2](Test)', '[input3](test@gmail.com)']
|
inputs = ['[input1](Martin)', f'[input2](Test)', '[input3](test@gmail.com)']
|
||||||
browser.fill_form_inputs(inputs)
|
browser.fill_form_inputs(inputs)
|
||||||
browser.find_and_click_submission()
|
browser.find_and_click_submission()
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import torch
|
import torch
|
||||||
|
import random
|
||||||
from typing import List, Tuple, Type, Dict
|
from typing import List, Tuple, Type, Dict
|
||||||
|
|
||||||
from transformers import pipeline
|
from transformers import pipeline
|
||||||
@ -70,12 +71,30 @@ class AgentRouter:
|
|||||||
Use the build in add_examples method of the Adaptive_classifier.
|
Use the build in add_examples method of the Adaptive_classifier.
|
||||||
"""
|
"""
|
||||||
few_shots = [
|
few_shots = [
|
||||||
("can you find api and build a python web app with it ?", "HIGH"),
|
("hi", "LOW"),
|
||||||
("can you lookup for api that track flight and build a web flight tracking app", "HIGH"),
|
("How it's going ?", "LOW"),
|
||||||
|
("What’s the weather like today?", "LOW"),
|
||||||
|
("Can you find a file named ‘notes.txt’ in my Documents folder?", "LOW"),
|
||||||
|
("Write a Python script to generate a random password", "LOW"),
|
||||||
|
("Debug this JavaScript code that’s not running properly", "LOW"),
|
||||||
|
("Search the web for the cheapest laptop under $500", "LOW"),
|
||||||
|
("Locate a file called ‘report_2024.pdf’ on my drive", "LOW"),
|
||||||
|
("Check if a folder named ‘Backups’ exists on my system", "LOW"),
|
||||||
|
("Can you find ‘family_vacation.mp4’ in my Videos folder?", "LOW"),
|
||||||
|
("Search my drive for a file named ‘todo_list.xlsx’", "LOW"),
|
||||||
|
("Write a Python function to check if a string is a palindrome", "LOW"),
|
||||||
|
("Can you search the web for startups in Berlin?", "LOW"),
|
||||||
|
("Find recent articles on blockchain technology online", "LOW"),
|
||||||
|
("Check if ‘Personal_Projects’ folder exists on my desktop", "LOW"),
|
||||||
|
("Create a bash script to list all running processes", "LOW"),
|
||||||
|
("Debug this Python script that’s crashing on line 10", "LOW"),
|
||||||
|
("Browse the web to find out who invented Python", "LOW"),
|
||||||
|
("Locate a file named ‘shopping_list.txt’ on my system", "LOW"),
|
||||||
|
("Search the web for tips on staying productive", "LOW"),
|
||||||
|
("Find ‘sales_pitch.pptx’ in my Downloads folder", "LOW"),
|
||||||
("can you find a file called resume.docx on my drive?", "LOW"),
|
("can you find a file called resume.docx on my drive?", "LOW"),
|
||||||
("can you write a python script to check if the device on my network is connected to the internet", "LOW"),
|
("can you write a python script to check if the device on my network is connected to the internet", "LOW"),
|
||||||
("can you debug this Java code? It’s not working.", "LOW"),
|
("can you debug this Java code? It’s not working.", "LOW"),
|
||||||
("can you browse the web and find me a 4090 for cheap?", "LOW"),
|
|
||||||
("can you find the old_project.zip file somewhere on my drive?", "LOW"),
|
("can you find the old_project.zip file somewhere on my drive?", "LOW"),
|
||||||
("can you locate the backup folder I created last month on my system?", "LOW"),
|
("can you locate the backup folder I created last month on my system?", "LOW"),
|
||||||
("could you check if the presentation.pdf file exists in my downloads?", "LOW"),
|
("could you check if the presentation.pdf file exists in my downloads?", "LOW"),
|
||||||
@ -91,52 +110,71 @@ class AgentRouter:
|
|||||||
("find the file ‘important_notes.txt’", "LOW"),
|
("find the file ‘important_notes.txt’", "LOW"),
|
||||||
("search the web for the best ways to learn a new language", "LOW"),
|
("search the web for the best ways to learn a new language", "LOW"),
|
||||||
("locate the file ‘presentation.pptx’ in my Documents folder", "LOW"),
|
("locate the file ‘presentation.pptx’ in my Documents folder", "LOW"),
|
||||||
("Make a 3d game in javascript using three.js", "HIGH"),
|
("Make a 3d game in javascript using three.js", "LOW"),
|
||||||
("Create a whole web app in python using the flask framework that query news API", "HIGH"),
|
("Find the latest research papers on AI and build save in a file", "HIGH"),
|
||||||
("Find the latest research papers on AI and build a web app that display them", "HIGH"),
|
|
||||||
("Create a bash script that monitor the CPU usage and send an email if it's too high", "HIGH"),
|
|
||||||
("Make a web server in go that serve a simple html page", "LOW"),
|
("Make a web server in go that serve a simple html page", "LOW"),
|
||||||
("Make a web server in go that query a weather API and display the weather", "HIGH"),
|
|
||||||
("Make a web search for latest news on the stock market and display them", "HIGH"),
|
|
||||||
("Search the web for latest ai papers", "LOW"),
|
|
||||||
("Write a Python script to calculate the factorial of a number", "LOW"),
|
|
||||||
("Can you find a weather API and build a Python app to display current weather", "HIGH"),
|
|
||||||
("Search the web for the cheapest 4K monitor and provide a link", "LOW"),
|
("Search the web for the cheapest 4K monitor and provide a link", "LOW"),
|
||||||
("Create a Python web app using Flask to track cryptocurrency prices from an API", "HIGH"),
|
|
||||||
("Write a JavaScript function to reverse a string", "LOW"),
|
("Write a JavaScript function to reverse a string", "LOW"),
|
||||||
("Can you locate a file called ‘budget_2025.xlsx’ on my system?", "LOW"),
|
("Can you locate a file called ‘budget_2025.xlsx’ on my system?", "LOW"),
|
||||||
("Search the web for recent articles on space exploration", "LOW"),
|
("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"),
|
("when is the exam period for master student in france?", "LOW"),
|
||||||
("Check if a folder named ‘Photos_2024’ exists on my desktop", "LOW"),
|
("Check if a folder named ‘Photos_2024’ exists on my desktop", "LOW"),
|
||||||
|
("Can you look up some nice knitting patterns on that web thingy?", "LOW"),
|
||||||
|
("Goodness, check if my ‘Photos_Grandkids’ folder is still on the desktop", "LOW"),
|
||||||
("Create a Python script to rename all files in a folder based on their creation date", "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"),
|
|
||||||
("Debug this Python code that’s throwing an error", "LOW"),
|
|
||||||
("Can you find a file named ‘meeting_notes.txt’ in my Downloads folder?", "LOW"),
|
("Can you find a file named ‘meeting_notes.txt’ in my Downloads folder?", "LOW"),
|
||||||
("Create a JavaScript game using Phaser.js with multiple levels", "HIGH"),
|
|
||||||
("Write a Go program to check if a port is open on a network", "LOW"),
|
("Write a Go program to check if a port is open on a network", "LOW"),
|
||||||
("Search the web for the latest electric car reviews", "LOW"),
|
("Search the web for the latest electric car reviews", "LOW"),
|
||||||
("Find a public API for book data and create a Flask app to list bestsellers", "HIGH"),
|
|
||||||
("Write a Python function to merge two sorted lists", "LOW"),
|
("Write a Python function to merge two sorted lists", "LOW"),
|
||||||
("Organize my desktop files by extension and then write a script to list them", "HIGH"),
|
|
||||||
("Create a bash script to monitor disk space and alert via text file", "LOW"),
|
("Create a bash script to monitor disk space and alert via text file", "LOW"),
|
||||||
("can you find vitess repo, clone it and install by following the readme", "HIGH"),
|
("What’s out there on the web about cheap travel spots?", "LOW"),
|
||||||
("Search X for posts about AI ethics and summarize them", "LOW"),
|
("Search X for posts about AI ethics and summarize them", "LOW"),
|
||||||
("Can you follow the readme and install the project", "HIGH"),
|
|
||||||
("Find the latest research on renewable energy and build a web app to display it", "HIGH"),
|
|
||||||
("Write a C program to sort an array of integers", "LOW"),
|
|
||||||
("Create a Node.js server that queries a public API for traffic data and displays it", "HIGH"),
|
|
||||||
("Check if a file named ‘project_proposal.pdf’ exists in my Documents", "LOW"),
|
("Check if a file named ‘project_proposal.pdf’ exists in my Documents", "LOW"),
|
||||||
("Search the web for tips on improving coding skills", "LOW"),
|
("Search the web for tips on improving coding skills", "LOW"),
|
||||||
("Write a Python script to count words in a text file", "LOW"),
|
("Write a Python script to count words in a text file", "LOW"),
|
||||||
("Search the web for restaurant", "LOW"),
|
("Search the web for restaurant", "LOW"),
|
||||||
("Find a public API for sports scores and build a web app to show live updates", "HIGH"),
|
|
||||||
("Create a simple HTML page with CSS styling", "LOW"),
|
("Create a simple HTML page with CSS styling", "LOW"),
|
||||||
("hi", "LOW"),
|
("Use file.txt and then use it to ...", "HIGH"),
|
||||||
("Bonjour", "LOW"),
|
("Yo, what’s good? Find my ‘mixtape.mp3’ real quick", "LOW"),
|
||||||
("What's up ?", "LOW"),
|
("Can you follow the readme and install the project", "HIGH"),
|
||||||
|
("Man, write me a dope Python script to flex some random numbers", "LOW"),
|
||||||
|
("Search the web for peer-reviewed articles on gene editing", "LOW"),
|
||||||
|
("Locate ‘meeting_notes.docx’ in Downloads, I’m late for this call", "LOW"),
|
||||||
|
("Write a Python script to list all .pdf files in my Documents", "LOW"),
|
||||||
|
("Write a Python thing to sort my .jpg files by date", "LOW"),
|
||||||
|
("Find ‘gallery_list.pdf’, then build a web app to show my pics", "HIGH"),
|
||||||
|
("Find ‘budget_2025.xlsx’, analyze it, and make a chart for my boss", "HIGH"),
|
||||||
|
("Retrieve the latest publications on CRISPR and develop a web application to display them", "HIGH"),
|
||||||
|
("Bro dig up a music API and build me a tight app for the hottest tracks", "HIGH"),
|
||||||
|
("Find a public API for sports scores and build a web app to show live updates", "HIGH"),
|
||||||
|
("Find a public API for book data and create a Flask app to list bestsellers", "HIGH"),
|
||||||
|
("Organize my desktop files by extension and then write a script to list them", "HIGH"),
|
||||||
|
("Find the latest research on renewable energy and build a web app to display it", "HIGH"),
|
||||||
|
("can you find vitess repo, clone it and install by following the readme", "HIGH"),
|
||||||
|
("Create a JavaScript game using Phaser.js with multiple levels", "HIGH"),
|
||||||
|
("Use my research_note.txt file, double check the informations on the web", "HIGH"),
|
||||||
|
("Make a web server in go that query a flight API and display them in a app", "HIGH"),
|
||||||
|
("can you lookup for api that track flight and build a web flight tracking app", "HIGH"),
|
||||||
|
("Find the file toto.pdf then use its content to reply to Jojo on superforum.com", "HIGH"),
|
||||||
|
("Create a whole web app in python using the flask framework that query news API", "HIGH"),
|
||||||
|
("Create a bash script that monitor the CPU usage and send an email if it's too high", "HIGH"),
|
||||||
|
("Make a web search for latest news on the stock market and display them with python", "HIGH"),
|
||||||
|
("Find my resume file, apply to job that might fit online", "HIGH"),
|
||||||
|
("Can you find a weather API and build a Python app to display current weather", "HIGH"),
|
||||||
|
("Create a Python web app using Flask to track cryptocurrency prices from an API", "HIGH"),
|
||||||
|
("Search the web for tutorials on machine learning and build a simple ML model in Python", "HIGH"),
|
||||||
|
("Find a public API for movie data and build a web app to display movie ratings", "HIGH"),
|
||||||
|
("Create a Node.js server that queries a public API for traffic data and displays it", "HIGH"),
|
||||||
|
("can you find api and build a python web app with it ?", "HIGH"),
|
||||||
|
("Find a public API for recipe data and build a web app to display recipes", "HIGH"),
|
||||||
|
("Search the web for recent space mission updates and build a Flask app", "HIGH"),
|
||||||
|
("Create a Python script to scrape a website and save data to a database", "HIGH"),
|
||||||
|
("Find a public API for fitness tracking and build a web app to show stats", "HIGH"),
|
||||||
|
("Search the web for tutorials on web development and build a sample site", "HIGH"),
|
||||||
|
("Create a Node.js app to query a public API for event listings and display them", "HIGH"),
|
||||||
|
("Find a file named ‘budget.xlsx’, analyze its data, and generate a chart", "HIGH"),
|
||||||
]
|
]
|
||||||
|
random.shuffle(few_shots)
|
||||||
texts = [text for text, _ in few_shots]
|
texts = [text for text, _ in few_shots]
|
||||||
labels = [label for _, label in few_shots]
|
labels = [label for _, label in few_shots]
|
||||||
self.complexity_classifier.add_examples(texts, labels)
|
self.complexity_classifier.add_examples(texts, labels)
|
||||||
@ -287,6 +325,7 @@ class AgentRouter:
|
|||||||
("hi", "talk"),
|
("hi", "talk"),
|
||||||
("hello", "talk"),
|
("hello", "talk"),
|
||||||
]
|
]
|
||||||
|
random.shuffle(few_shots)
|
||||||
texts = [text for text, _ in few_shots]
|
texts = [text for text, _ in few_shots]
|
||||||
labels = [label for _, label in few_shots]
|
labels = [label for _, label in few_shots]
|
||||||
self.talk_classifier.add_examples(texts, labels)
|
self.talk_classifier.add_examples(texts, labels)
|
||||||
|
@ -62,11 +62,13 @@ class FileFinder(Tools):
|
|||||||
file_path = None
|
file_path = None
|
||||||
excluded_files = [".pyc", ".o", ".so", ".a", ".lib", ".dll", ".dylib", ".so", ".git"]
|
excluded_files = [".pyc", ".o", ".so", ".a", ".lib", ".dll", ".dylib", ".so", ".git"]
|
||||||
for root, dirs, files in os.walk(directory_path):
|
for root, dirs, files in os.walk(directory_path):
|
||||||
for file in files:
|
for f in files:
|
||||||
if any(excluded_file in file for excluded_file in excluded_files):
|
if f is None:
|
||||||
continue
|
continue
|
||||||
if filename.strip() in file.strip():
|
if any(excluded_file in f for excluded_file in excluded_files):
|
||||||
file_path = os.path.join(root, file)
|
continue
|
||||||
|
if filename.strip() in f.strip():
|
||||||
|
file_path = os.path.join(root, f)
|
||||||
return file_path
|
return file_path
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -82,27 +84,25 @@ class FileFinder(Tools):
|
|||||||
if not blocks or not isinstance(blocks, list):
|
if not blocks or not isinstance(blocks, list):
|
||||||
return "Error: No valid filenames provided"
|
return "Error: No valid filenames provided"
|
||||||
|
|
||||||
results = []
|
output = ""
|
||||||
for block in blocks:
|
for block in blocks:
|
||||||
filename = block.split(":")[0]
|
filename = self.get_parameter_value(block, "name")
|
||||||
|
action = self.get_parameter_value(block, "action")
|
||||||
|
if filename is None:
|
||||||
|
output = "Error: No filename provided\n"
|
||||||
|
return output
|
||||||
|
if action is None:
|
||||||
|
action = "info"
|
||||||
file_path = self.recursive_search(self.work_dir, filename)
|
file_path = self.recursive_search(self.work_dir, filename)
|
||||||
if file_path is None:
|
if file_path is None:
|
||||||
results.append({"filename": filename, "error": "File not found"})
|
output = f"File: {filename} - not found\n"
|
||||||
continue
|
continue
|
||||||
if len(block.split(":")) > 1:
|
|
||||||
action = block.split(":")[1]
|
|
||||||
else:
|
|
||||||
action = "info"
|
|
||||||
result = self.get_file_info(file_path)
|
result = self.get_file_info(file_path)
|
||||||
results.append(result)
|
|
||||||
|
|
||||||
output = ""
|
|
||||||
for result in results:
|
|
||||||
if "error" in result:
|
if "error" in result:
|
||||||
output += f"File: {result['filename']} - {result['error']}\n"
|
output += f"File: {result['filename']} - {result['error']}\n"
|
||||||
else:
|
else:
|
||||||
if action == "read":
|
if action == "read":
|
||||||
output += result['read']
|
output += "Content:\n" + result['read'] + "\n"
|
||||||
else:
|
else:
|
||||||
output += (f"File: {result['filename']}, "
|
output += (f"File: {result['filename']}, "
|
||||||
f"found at {result['path']}, "
|
f"found at {result['path']}, "
|
||||||
@ -144,7 +144,10 @@ class FileFinder(Tools):
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
tool = FileFinder()
|
tool = FileFinder()
|
||||||
result = tool.execute(["toto.txt"], False)
|
result = tool.execute(["""
|
||||||
|
action=read
|
||||||
|
name=tools.py
|
||||||
|
"""], False)
|
||||||
print("Execution result:")
|
print("Execution result:")
|
||||||
print(result)
|
print(result)
|
||||||
print("\nFailure check:", tool.execution_failure_check(result))
|
print("\nFailure check:", tool.execution_failure_check(result))
|
||||||
|
@ -127,6 +127,21 @@ class Tools():
|
|||||||
with open(os.path.join(directory, save_path_file), 'w') as f:
|
with open(os.path.join(directory, save_path_file), 'w') as f:
|
||||||
f.write(block)
|
f.write(block)
|
||||||
|
|
||||||
|
def get_parameter_value(self, block: str, parameter_name: str) -> str:
|
||||||
|
"""
|
||||||
|
Get a parameter name.
|
||||||
|
Args:
|
||||||
|
block (str): The block of text to search for the parameter
|
||||||
|
parameter_name (str): The name of the parameter to retrieve
|
||||||
|
Returns:
|
||||||
|
str: The value of the parameter
|
||||||
|
"""
|
||||||
|
for param_line in block.split('\n'):
|
||||||
|
if parameter_name in param_line:
|
||||||
|
param_value = param_line.split('=')[1].strip()
|
||||||
|
return param_value
|
||||||
|
return None
|
||||||
|
|
||||||
def found_executable_blocks(self):
|
def found_executable_blocks(self):
|
||||||
"""
|
"""
|
||||||
Check if executable blocks were found.
|
Check if executable blocks were found.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user