Investigación de superinteligencia generalizada, infraestructura y aplicaciones autónomas
Seguir SuperAGI
Conéctate con el Creador
Compartir este repositorio
AutoNode es un sistema informático autónomo diseñado para automatizar las interacciones web y los procesos de extracción de datos. Aprovecha tecnologías avanzadas como OCR (reconocimiento óptico de caracteres), modelos YOLO (solo miras una vez) para la detección de objetos y un gráfico de sitio personalizado para navegar e interactuar con páginas web mediante programación.
Para comenzar con AutoNode, necesita tener Python instalado en su sistema. Siga estos pasos para instalar AutoNode:
git clone https://github.com/TransformerOptimus/AutoNode.git
cd AutoNode
Cree una copia de .env.example y asígnele el nombre .env. Repita este paso para los tres módulos: autonode, yolo, ocr
Asegúrese de que Docker esté instalado en su sistema. Puedes descargarlo e instalarlo desde aquí.
Una vez que tenga Docker Desktop ejecutándose, ejecute el siguiente comando en el directorio de AutoNode:
docker compose -f docker-compose.yaml up --build
AutoNode opera en base a un gráfico de sitio que define la navegación y las acciones a realizar en un sitio web. A continuación se ofrece una descripción básica de cómo utilizar AutoNode:
Defina su objetivo: especifique lo que desea lograr con AutoNode, como la extracción de datos o la automatización de interacciones web específicas.
Prepare su Autonode-Site-Graph: cree un archivo JSON que represente el gráfico del sitio. Este gráfico describe los nodos (elementos web) y los bordes (acciones) por los que AutoNode navegará e interactuará.
Prepare el mensaje del planificador del iniciador de AutoNode: utilizando la estructura de plantilla proporcionada para los mensajes del planificador en openai_prompts.py, para OpenAI LLM, puede crear un nuevo archivo de mensajes en el directorio de mensajes con la estructura <llm_prompts.py>.
Ejecute AutoNodo:
AutoNode se puede controlar y utilizar a través de su API, lo que permite a los usuarios automatizar interacciones web y tareas de extracción de datos mediante programación. Esta guía lo guiará a través del proceso de envío de solicitudes a AutoNode utilizando su punto final API.
Antes de comenzar, asegúrese de que AutoNode se esté ejecutando en su máquina local. Una vez que AutoNode esté en funcionamiento, puede acceder a la documentación de la API visitando:
http://localhost:8001/docs
Esta URL lo llevará a la interfaz de usuario de Swagger, donde podrá encontrar documentación detallada sobre todos los puntos finales de API disponibles, incluido el que se utiliza para iniciar las tareas de AutoNode.
Para automatizar una tarea con AutoNode, utilizará el punto final /api/autonode/initiate. Este punto final acepta una carga útil JSON que especifica el objetivo de la tarea, la ruta al archivo JSON del gráfico del sitio, el nodo raíz para iniciar el recorrido y la URL del sitio web con el que desea interactuar.
Aquí está la estructura de la carga útil JSON que necesita enviar al punto final /api/autonode/initiate
:
{
"site_url": "string",
"objective": "string",
"graph_path": "string",
"planer_prompt": "string"
}
Solicitud de ejemplo: { "site_url": "https://app.apollo.io/#/login", "objective": "Encuentre la lista de 20 directores ejecutivos y directores de empresas de tecnología en San Francisco. Inicie sesión en Apollo usando los creds [email protected] y contraseña dummypassword@123", "graph_path": "autonode/site_trees/apollo.json" "planner_prompt": "apollo" }
site_url: La URL del sitio web que AutoNode visitará e interactuará con él.
Objetivo: El objetivo que desea alcanzar en el sitio web. Esto podría ser cualquier cosa, desde la extracción de datos hasta la automatización de una serie de interacciones web. Asegúrese de proporcionar las instrucciones de inicio de sesión junto con las credenciales si es necesario iniciar sesión en su caso de uso.
graph_path: la ruta al archivo JSON que contiene su gráfico de sitio. El gráfico del sitio define la estructura y el flujo de navegación del sitio web de AutoNode.
planificador_prompt: la clave para el aviso de planificación. Puede cambiar o asignar una nueva clave en planificación_agent.py para el aviso del planificador de AutoNode.
curl -X 'POST'
'http://localhost:8001/api/autonode/initiate'
-H 'accept: application/json'
-H 'Content-Type: application/json'
-d '{
"site_url": "https://example.com/products",
"objective": "Extract product details",
"graph_path": "/path/to/your/site-graph.json"
"planner_prompt": "planner_key"
}'
AutoNode utiliza modelos YOLO para la detección de objetos y OCR para el reconocimiento de texto en páginas web. Estos modelos son cruciales para identificar elementos en los que se puede hacer clic, leer texto de imágenes e interactuar dinámicamente con páginas web.
Proporcionamos algunos modelos generales de yolo entrenados en YOLO-V8
a través de miles de capturas de pantalla web. Navegue hasta - yolo/web_detection_models/
dir para encontrarlos.
Recopile un conjunto de datos: recopile imágenes de los elementos web que desea detectar y anótelos con cuadros delimitadores.
Prepare el conjunto de datos: divida su conjunto de datos en conjuntos de entrenamiento y validación.
Entrene el modelo: utilice un script de entrenamiento de YOLO para entrenar su modelo en el conjunto de datos preparado. Ajusta los parámetros de entrenamiento según tus necesidades.
Evalúe el modelo: pruebe su modelo entrenado en un conjunto de pruebas independiente para evaluar su rendimiento.
Integre con AutoNode: una vez entrenado, integre su modelo YOLO personalizado con AutoNode especificando la ruta del modelo en la configuración.
Si no tiene suficientes recursos en su máquina local, puede alojar los módulos OCR y YOLO en cualquier servidor en la nube. Se pueden tomar los siguientes pasos:
En su archivo ocr/.env, agregue USE_REMOTE_OCR=True y configure la URL para el servicio remoto en OCR_REMOTE_URL
En su archivo yolo/.env, agregue USE_REMOTE_YOLO=True y configure la URL para el servicio remoto en YOLO_REMOTE_URL
Actualice la ruta del modelo de detección web de yolo en su archivo yolo/.env, agregue SAHI_MODEL_PATH y ULTRALYTICS_MODEL_PATH. Ejemplo: SAHI_MODEL_PATH = yolo/web_detection_models/twitter.pt
El gráfico del sitio es un archivo JSON que describe la estructura y el flujo de navegación de un sitio web para AutoNode. Aquí te explicamos cómo prepararlo:
Identifique elementos web: navegue por su sitio web de destino e identifique los elementos clave con los que desea interactuar, como botones, cuadros de texto y enlaces.
Definir nodos: para cada elemento web, defina un nodo en el archivo JSON. Incluya propiedades como node_name, actionable_element_type, ubicación y is_type.
Definir bordes: especifique las relaciones entre los nodos utilizando las propiedades adyacente_to y adyacente_from para representar el flujo de navegación.
Incluir detalles de acción: para los nodos que requieren escribir o hacer clic, proporcione detalles adicionales como type_description o click_action.
Ejemplo de un gráfico de sitio simple:
{
"1": {
"node_type": "clickable_and_typeable",
"node_name": "Login Button",
"actionable_element_type": "button",
"location": [100, 200],
"is_type": false,
"adjacent_to": ["2"]
},
"2": {
"node_type": "clickable_and_typeable",
"node_name": "Username Field",
"actionable_element_type": "textbox",
"location": [150, 250],
"is_type": true,
"type_description": "Enter username here",
"adjacent_to": []
}
}
Las capturas de pantalla en cada nodo para la detección de elementos web se almacenan en el directorio de solicitudes en la carpeta raíz. Puede almacenarlos en una cuenta de AWS s3 en caso de que lo desee, conservarlos localmente o ninguna de las dos opciones, según su elección. Para los casos de uso que requieren la descarga de resultados, el contenido descargable (como los resultados en Apollo) debe almacenarse de forma local o remota.
# Uncomment If you have aws account and want to store result in your AWS S3
# self.s3_client = S3Helper(access_key=self.config.AWS_ACCESS_KEY_ID,
# secret_key=self.config.AWS_SECRET_ACCESS_KEY,
# bucket_name=self.config.bucket_name)
y pase s3_client=self.s3_client en la línea 84
s3_client=None
# Uncomment If you have aws account and want to store result in your AWS S3
s3_client.upload_file(file_path=screenshot_filename)
# Uncomment If you have aws account and want to store result in your AWS S3
s3_client.upload_file(file_path=download_file_path)
finally:
# Comment if you don't want to delete screenshots locally
if os.path.exists(screenshots_dir):
logger.info(f"Deleting request directory {screenshots_dir}")
shutil.rmtree(screenshots_dir)
session.close()