AutoBrowse 是一个可以浏览网页的自主人工智能代理。您只需给 AutoBrowse 一个任务,它就会像人类一样通过与网络浏览器交互来完成该任务。
您可以给它的一些任务示例:
从 11 月 2 日开始,前往 booking.com 在马德里寻找一家适合 2 人入住的酒店,入住 2 晚,每晚价格低于 200 欧元。
使用电子邮件注册 ryanair.com:[email protected] 和密码 C0mplexPassword!。
前往 Craigslist 并搜索 Nintendo DS。单击第一个结果。
https://drive.google.com/file/d/1Ind9z3mjHKTS-Q0vJl2FaHcPLrZtdEX0/view
创建Python 3.9环境
conda create --name py39 python=3.9
激活环境
conda activate py39
安装依赖项
pip install -r requirements.txt
启动浏览器环境
检查browser-console/
下的自述文件,了解如何运行它的说明。
创建包含以下内容的文件OAI_CONFIG_LIST
并放入您的 OpenAI API 密钥:
[
{
"model" : " gpt-4 " ,
"api_key" : " <your-api-key> "
},
{
"model" : " gpt-3.5-turbo " ,
"api_key" : " <your-api-key> "
},
{
"model" : " gpt-3.5-turbo-16k " ,
"api_key" : " <your-api-key> "
}
]
运行自动浏览
python autobrowse.py
然后系统将提示您向 AutoBrowse 分配任务。
您可以通过修改agent_config.py
文件来修改代理配置。您可以编辑系统提示、更改使用的 OpenAI 模型等。
AutoBrowse 使用 autogen 代理和浏览器控制台来计划和执行任务。
该设计由 3 个代理组成:
HTML 助手,用于回答有关浏览器中打开的当前页面的 HTML 的问题。
代码生成器代理,生成 puppeteer.js 代码以与浏览器交互(即导航到新页面、单击按钮、填写表单元素)
一个规划代理,协调上述两个代理的使用,以完成用户提供的高级任务描述。
代理通过与沙盒浏览器环境的 Websocket 连接与浏览器交互,该环境具有接受要执行的 puppeteer.js 代码的端点,以及返回当前打开页面的渲染 HTML 的端点。
由于 HTML 文档可能很长并且可能超出 OpenAI 的令牌限制,因此采用以下方法来回答有关 HTML 的查询:
从浏览器环境返回的 HTML 被剥离和简化以减小其大小。这是通过仅保留最重要的属性(如 id、name、type 和 class)来完成的。此外, script
、 style
、 noscript
、 img
、 svg
、 link
、 meta
标签都被删除。
处理后的 HTML 被分成 15,000 个令牌(由 OpenAI 计算),以便它们可以轻松适应gpt-3.5-turbo-16k
的 16K 上下文窗口。
使用带有 OpenAI 嵌入的 RAG,提供最相关的块作为问题的上下文,然后gpt-3.5-turbo
可以回答有关 HTML 的问题。
代码生成器使用gpt-4
生成 puppeteer.js 代码以与浏览器交互。附加到代码生成器的用户代理将该代码发送到浏览器环境来执行并报告结果,以便代码生成器可以在出现任何错误时修改代码。由于代码生成需要尽可能准确,因此使用更昂贵的gpt-4
模型,而不是更便宜的gpt-3.5-turbo
。
规划器接收来自用户的任务描述,并根据需要尝试通过调用 HTML 助手和代码生成器来完成它。规划器除了自己的思考之外,还能够调用两个函数:
ask_html_assistant()
向 HTML 助手询问有关当前 HTML 的问题(例如,提取注册表单的 HTML),以及
ask_code_generator()
要求代码生成器生成 puppeteer.js 代码发送到浏览器。规划者还可以添加从 HTML 助手检索到的 HTML,以为代码生成器提供更多上下文。