AutoBrowse é um agente de IA autônomo que pode navegar na web. Você simplesmente atribui uma tarefa ao AutoBrowse e ele a completará interagindo com o navegador da web como se fosse um ser humano.
Alguns exemplos de tarefas que você pode atribuir:
Acesse booking.com e encontre um hotel para 2 pessoas em Madrid por 2 noites a partir de 2 de novembro por menos de 200 euros por noite.
Inscreva-se em ryanair.com com o email: [email protected] e a senha C0mplexPassword!.
Vá para Craigslist e pesquise Nintendo DS. Clique no primeiro resultado.
https://drive.google.com/file/d/1Ind9z3mjHKTS-Q0vJl2FaHcPLrZtdEX0/view
Crie um ambiente Python 3.9
conda create --name py39 python=3.9
Ative o ambiente
conda activate py39
Instalar dependências
pip install -r requirements.txt
Inicie o ambiente do navegador
Verifique o README em browser-console/
para obter instruções sobre como executá-lo.
Crie um arquivo OAI_CONFIG_LIST
com o seguinte conteúdo e coloque sua chave API OpenAI:
[
{
"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> "
}
]
Execute a navegação automática
python autobrowse.py
Você será solicitado a atribuir uma tarefa ao AutoBrowse.
Você pode fazer modificações nas configurações do agente modificando o arquivo agent_config.py
. Você pode editar os prompts do sistema, alterar os modelos OpenAI usados, etc.
O AutoBrowse usa agentes autogen e um console do navegador para planejar e executar a tarefa.
O design consiste em 3 agentes:
Um assistente HTML que responde perguntas sobre o HTML da página atual aberta no navegador.
Um agente gerador de código que gera código puppeteer.js para interagir com o navegador (ou seja, navegar para uma nova página, clicar em um botão, preencher elementos do formulário)
Um agente planejador que coordena o uso dos dois agentes acima para cumprir a descrição de tarefa de alto nível fornecida pelo usuário.
Os agentes interagem com o navegador por meio de uma conexão websocket para um ambiente de navegador em sandbox que possui um endpoint para aceitar o código puppeteer.js para execução, bem como um endpoint para retornar o HTML renderizado da página aberta atual.
Como os documentos HTML podem ser bastante longos e exceder o limite de token do OpenAI, a seguinte abordagem é adotada para responder a dúvidas sobre o HTML:
O HTML retornado do ambiente do navegador é reduzido e simplificado para reduzir seu tamanho. Isso é feito mantendo apenas os atributos mais importantes como id, name, type e class . Além disso, script
, style
, noscript
, img
, svg
, link
, meta
tags são completamente removidos.
O HTML processado é dividido em 15.000 tokens (conforme contados pela OpenAI) para que possam caber facilmente na janela de contexto de 16K de gpt-3.5-turbo-16k
.
Usando RAG com embeddings OpenAI, o pedaço mais relevante é fornecido como contexto para a pergunta, e gpt-3.5-turbo
pode então responder à pergunta sobre o HTML.
O gerador de código usa gpt-4
para gerar código puppeteer.js para interagir com o navegador. Um agente proxy do usuário anexado ao gerador de código envia esse código para o ambiente do navegador para ser executado e reporta o resultado, para que o gerador de código possa alterá-lo se houver algum erro. Como a geração do código precisa ser tão precisa quanto possível, o modelo gpt-4
mais caro, é usado em favor do gpt-3.5-turbo
, mais barato.
O planejador recebe a descrição da tarefa do usuário e tenta concluí-la invocando o Assistente HTML e o Gerador de Código conforme necessário. O planejador, além do seu próprio pensamento, tem a capacidade de invocar duas funções:
ask_html_assistant()
para fazer uma pergunta ao assistente HTML sobre o HTML atual (por exemplo, extrair o HTML do formulário de inscrição), e
ask_code_generator()
para solicitar ao gerador de código que produza o código puppeteer.js para enviar ao navegador. O planejador também pode adicionar HTML recuperado do assistente HTML para fornecer mais contexto ao gerador de código.