Recherche généralisée sur la super intelligence, infrastructure et applications autonomes
Suivre SuperAGI
Connectez-vous avec le Créateur
Partager ce référentiel
AutoNode est un système informatique autonome conçu pour automatiser les interactions Web et les processus d'extraction de données. Il exploite des technologies avancées telles que les modèles OCR (Optical Character Recognition), YOLO (You Only Look Once) pour la détection d'objets et un graphique de site personnalisé pour naviguer et interagir avec les pages Web par programmation.
Pour démarrer avec AutoNode, vous devez avoir Python installé sur votre système. Suivez ces étapes pour installer AutoNode :
git clone https://github.com/TransformerOptimus/AutoNode.git
cd AutoNode
Créez une copie de .env.example et nommez-la .env. Répétez cette étape pour les trois modules - autonode, yolo, ocr
Assurez-vous que Docker est installé sur votre système. Vous pouvez le télécharger et l'installer à partir d'ici.
Une fois Docker Desktop exécuté, exécutez la commande suivante dans le répertoire AutoNode :
docker compose -f docker-compose.yaml up --build
AutoNode fonctionne sur la base d'un site-graph qui définit la navigation et les actions à effectuer sur un site Internet. Voici un aperçu de base de la façon d'utiliser AutoNode :
Définissez votre objectif : spécifiez ce que vous souhaitez réaliser avec AutoNode, comme l'extraction de données ou l'automatisation d'interactions Web spécifiques.
Préparez votre graphique de site Autonode : créez un fichier JSON qui représente le graphique de site. Ce graphique présente les nœuds (éléments Web) et les bords (actions) avec lesquels AutoNode naviguera et interagira.
Préparez l'invite du planificateur d'initiateur AutoNode : à l'aide de la structure de modèle donnée pour les invites du planificateur dans openai_prompts.py, pour OpenAI LLM, vous pouvez créer un nouveau fichier d'invite dans le répertoire d'invites avec la structure <llm_prompts.py>
Exécutez AutoNode :
AutoNode peut être contrôlé et utilisé via son API, permettant aux utilisateurs d'automatiser les interactions Web et les tâches d'extraction de données par programme. Ce guide vous guidera tout au long du processus d'envoi de requêtes à AutoNode à l'aide de son point de terminaison API.
Avant de commencer, assurez-vous qu'AutoNode est exécuté sur votre ordinateur local. Une fois AutoNode opérationnel, vous pouvez accéder à la documentation de l'API en visitant :
http://localhost:8001/docs
Cette URL vous mènera à l'interface utilisateur de Swagger, où vous pourrez trouver une documentation détaillée sur tous les points de terminaison d'API disponibles, y compris celui utilisé pour lancer les tâches AutoNode.
Pour automatiser une tâche avec AutoNode, vous utiliserez le point de terminaison /api/autonode/initiate. Ce point de terminaison accepte une charge utile JSON qui spécifie l'objectif de la tâche, le chemin d'accès au fichier JSON du graphique de site, le nœud racine pour démarrer la traversée et l'URL du site Web avec lequel vous souhaitez interagir.
Voici la structure de la charge utile JSON que vous devez envoyer au point de terminaison /api/autonode/initiate
:
{
"site_url": "string",
"objective": "string",
"graph_path": "string",
"planer_prompt": "string"
}
Exemple de requête : { "site_url": "https://app.apollo.io/#/login", "objective": "Trouvez la liste des 20 PDG, CTO d'entreprises technologiques à San Francisco. Connectez-vous à Apollo en utilisant les identifiants [email protected] et mot de passe dummypassword@123", "graph_path": "autonode/site_trees/apollo.json" "planner_prompt": "Apollon" }
site_url : l'URL du site Web qu'AutoNode visitera et avec lequel il interagira.
objectif : l'objectif que vous souhaitez atteindre sur le site Web. Cela peut aller de l’extraction de données à l’automatisation d’une série d’interactions Web. Assurez-vous de fournir les instructions de connexion ainsi que les informations d'identification si la connexion est requise dans votre cas d'utilisation.
graph_path : Le chemin d'accès au fichier JSON qui contient votre graphique de site. Le graphique du site définit la structure et le flux de navigation du site Web pour AutoNode.
Planner_prompt : la clé de l'invite de planification. Vous pouvez modifier ou mapper une nouvelle clé dans planning_agent.py pour l'invite du planificateur 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 utilise les modèles YOLO pour la détection d'objets et l'OCR pour la reconnaissance de texte sur les pages Web. Ces modèles sont cruciaux pour identifier les éléments cliquables, lire le texte des images et interagir dynamiquement avec les pages Web.
Nous fournissons quelques modèles yolo généraux formés sur YOLO-V8
sur des milliers de captures d'écran Web. Accédez à - yolo/web_detection_models/
dir pour les trouver.
Collecter un ensemble de données : rassemblez des images des éléments Web que vous souhaitez détecter et annotez-les avec des cadres de délimitation.
Préparez l'ensemble de données : divisez votre ensemble de données en ensembles de formation et de validation.
Entraîner le modèle : utilisez un script de formation YOLO pour entraîner votre modèle sur l'ensemble de données préparé. Ajustez les paramètres d’entraînement en fonction de vos besoins.
Évaluez le modèle : testez votre modèle entraîné sur un ensemble de tests distinct pour évaluer ses performances.
Intégration à AutoNode : une fois formé, intégrez votre modèle YOLO personnalisé à AutoNode en spécifiant le chemin du modèle dans la configuration.
Si vous ne disposez pas de suffisamment de ressources sur votre machine locale, vous pouvez héberger les modules OCR et YOLO sur n'importe quel serveur cloud. Les mesures suivantes peuvent être prises :
Dans votre fichier ocr/.env, ajoutez USE_REMOTE_OCR=True et définissez l'url du service distant dans OCR_REMOTE_URL
Dans votre fichier yolo/.env, ajoutez USE_REMOTE_YOLO=True et définissez l'url du service distant dans YOLO_REMOTE_URL
Mettez à jour le chemin du modèle de détection Web yolo dans votre fichier yolo/.env, ajoutez SAHI_MODEL_PATH et ULTRALYTICS_MODEL_PATH. Exemple : SAHI_MODEL_PATH = yolo/web_detection_models/twitter.pt
Le site-graph est un fichier JSON qui décrit la structure et le flux de navigation d'un site Web pour AutoNode. Voici comment le préparer :
Identifiez les éléments Web : naviguez sur votre site Web cible et identifiez les éléments clés avec lesquels vous souhaitez interagir, tels que les boutons, les zones de texte et les liens.
Définir des nœuds : pour chaque élément Web, définissez un nœud dans le fichier JSON. Incluez des propriétés telles que node_name, actionable_element_type, location et is_type.
Définir les bords : spécifiez les relations entre les nœuds à l'aide des propriétés adjacent_to et adjacent_from pour représenter le flux de navigation.
Inclure les détails de l'action : pour les nœuds qui nécessitent une saisie ou un clic, fournissez des détails supplémentaires tels que type_description ou click_action.
Exemple de graphique de site 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": []
}
}
Les captures d'écran de chaque nœud pour la détection des éléments Web sont stockées dans le répertoire des requêtes du dossier racine. Vous pouvez les stocker sur un compte AWS s3 si vous le souhaitez, ou les conserver localement ou ni l'un ni l'autre selon votre choix. Pour les cas d'utilisation nécessitant le téléchargement d'une sortie, le contenu téléchargeable (comme la sortie dans Apollo) doit être stocké localement ou à distance.
# 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)
et passez s3_client=self.s3_client à la ligne 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()