Background
Currently, all Auto-GPT can do is view_webpage. This returns the body text of the webpage, or a summarized version thereof. This is quite limiting compared to a human's capability to literally browse a website.
Also, it doesn't distinguish between primary content and annoying popups very well, clouding the LLM's perception of the page (partially addressed by #3519).
Proposal 🏗️
- New command
browse_website(url: str, task: str)
BrowserAgent that is attached to a browser window through a Selenium/Playwright instance
- Executes the given task (e.g. "find the price of the book") and returns the result to the parent
Agent
- Specialized set of available actions/commands:
follow_link(url: str): asserts that the given link is on the page and navigates there
go_back(): goes to the previous page
make_screenshot()
report_task_result(result: str) for when the task has been completed
terminate(reason: str) for when the task can't be completed
input_text(input_field_id: str, text: str)
click_button(button_id: str)
- ...
- Tailored prompt
- AI config (personality)
- User-given task
- Browsing history
- Current page content (truncated / summary)
- Available actions
- Response format
Primary requirements
- Must always
report_task_result with a result that makes sense for the given task
- Must recognize when it can't fulfill a task and
terminate if so
Parts
Related
Background
Currently, all Auto-GPT can do is
view_webpage. This returns the body text of the webpage, or a summarized version thereof. This is quite limiting compared to a human's capability to literally browse a website.Also, it doesn't distinguish between primary content and annoying popups very well, clouding the LLM's perception of the page (partially addressed by #3519).
Proposal 🏗️
browse_website(url: str, task: str)BrowserAgentthat is attached to a browser window through a Selenium/Playwright instanceAgentfollow_link(url: str): asserts that the given link is on the page and navigates therego_back(): goes to the previous pagemake_screenshot()report_task_result(result: str)for when the task has been completedterminate(reason: str)for when the task can't be completedinput_text(input_field_id: str, text: str)click_button(button_id: str)Primary requirements
report_task_resultwith a result that makes sense for the given taskterminateif soParts
browse_website#2454Related