AutoBrowse es un agente de IA autónomo que puede navegar por la web. Simplemente le asigna una tarea a AutoBrowse y la completará interactuando con el navegador web como si fuera un humano.
Algunos ejemplos de tareas que puedes asignarle:
Entra en booking.com y encuentra un hotel para 2 personas en Madrid por 2 noches a partir del 2 de noviembre por menos de 200 EUR la noche.
Regístrese en ryanair.com con correo electrónico: [email protected] y contraseña C0mplexPassword!.
Vaya a Craigslist y busque Nintendo DS. Haga clic en el primer resultado.
https://drive.google.com/file/d/1Ind9z3mjHKTS-Q0vJl2FaHcPLrZtdEX0/view
Crear un entorno Python 3.9
conda create --name py39 python=3.9
Activa el entorno
conda activate py39
Instalar dependencias
pip install -r requirements.txt
Inicie el entorno del navegador
Consulte el archivo README en browser-console/
para obtener instrucciones sobre cómo ejecutarlo.
Cree un archivo OAI_CONFIG_LIST
con el siguiente contenido e ingrese su clave API de 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> "
}
]
Ejecutar navegación automática
python autobrowse.py
Luego se le pedirá que asigne una tarea a AutoBrowse.
Puede realizar modificaciones en las configuraciones del agente modificando el archivo agent_config.py
. Puede editar las indicaciones del sistema, cambiar los modelos OpenAI utilizados, etc.
AutoBrowse utiliza agentes de autogen y una consola de navegador para planificar y ejecutar la tarea.
El diseño consta de 3 agentes:
Un asistente HTML que responde preguntas sobre el HTML de la página actual abierta en el navegador.
Un agente generador de código que genera código puppeteer.js para interactuar con el navegador (es decir, navegar a una nueva página, hacer clic en un botón, completar elementos del formulario)
Un agente planificador que coordina el uso de los dos agentes anteriores para cumplir con la descripción de la tarea de alto nivel proporcionada por el usuario.
Los agentes interactúan con el navegador a través de una conexión websocket a un entorno de navegador de espacio aislado que tiene un punto final para aceptar el código de puppeteer.js para ejecutar, así como un punto final para devolver el HTML renderizado de la página abierta actual.
Dado que los documentos HTML pueden ser bastante largos y exceder el límite de tokens de OpenAI, se adopta el siguiente enfoque para responder consultas sobre HTML:
El HTML devuelto por el entorno del navegador se simplifica y simplifica para reducir su tamaño. Esto se hace manteniendo solo los atributos más importantes como id, nombre, tipo y clase. Además, meta
script
, style
, noscript
, img
, svg
, link
y se eliminan por completo.
El HTML procesado se divide en 15.000 tokens (contados por OpenAI) para que puedan caber fácilmente en la ventana de contexto de 16K de gpt-3.5-turbo-16k
.
Al utilizar RAG con incrustaciones de OpenAI, el fragmento más relevante se proporciona como contexto de la pregunta, y gpt-3.5-turbo
puede responder la pregunta sobre HTML.
El generador de código utiliza gpt-4
para generar código puppeteer.js para interactuar con el navegador. Un agente proxy de usuario adjunto al generador de código envía este código al entorno del navegador para su ejecución e informa el resultado, de modo que el generador de código pueda modificar el código si hay algún error. Debido a que la generación de código debe ser lo más precisa posible, se utiliza el modelo gpt-4
más caro en lugar del gpt-3.5-turbo
más económico.
El planificador recibe la descripción de la tarea del usuario e intenta completarla invocando el Asistente HTML y el Generador de código según sea necesario. El planificador, además de su propio pensamiento, tiene la capacidad de invocar dos funciones:
ask_html_assistant()
para hacerle al asistente HTML una pregunta sobre el HTML actual (por ejemplo, extraer el HTML para el formulario de registro), y
ask_code_generator()
para pedirle al generador de código que produzca el código Puppeteer.js para enviarlo al navegador. El planificador también puede agregar HTML recuperado del asistente HTML para proporcionar más contexto al generador de código.