Generalisierte Super-Intelligence-Forschung, Infrastruktur und autonome Apps
Folgen Sie SuperAGI
Verbinde dich mit dem Schöpfer
Teilen Sie dieses Repository
AutoNode ist ein selbsttätiges Computersystem zur Automatisierung von Webinteraktionen und Datenextraktionsprozessen. Es nutzt fortschrittliche Technologien wie OCR (Optical Character Recognition), YOLO-Modelle (You Only Look Once) zur Objekterkennung und ein benutzerdefiniertes Site-Diagramm für die programmatische Navigation und Interaktion mit Webseiten.
Um mit AutoNode beginnen zu können, muss Python auf Ihrem System installiert sein. Befolgen Sie diese Schritte, um AutoNode zu installieren:
git clone https://github.com/TransformerOptimus/AutoNode.git
cd AutoNode
Erstellen Sie eine Kopie von .env.example und nennen Sie sie .env. Wiederholen Sie diesen Schritt für alle drei Module – Autonode, Yolo, OCR
Stellen Sie sicher, dass Docker auf Ihrem System installiert ist. Sie können es hier herunterladen und installieren.
Sobald Docker Desktop ausgeführt wird, führen Sie den folgenden Befehl im AutoNode-Verzeichnis aus:
docker compose -f docker-compose.yaml up --build
AutoNode basiert auf einem Site-Graph, der die Navigation und die auf einer Website auszuführenden Aktionen definiert. Hier ist ein grundlegender Überblick über die Verwendung von AutoNode:
Definieren Sie Ihr Ziel: Geben Sie an, was Sie mit AutoNode erreichen möchten, z. B. Datenextraktion oder Automatisierung bestimmter Webinteraktionen.
Bereiten Sie Ihr Autonode-Site-Graph vor: Erstellen Sie eine JSON-Datei, die das Site-Graph darstellt. In diesem Diagramm werden die Knoten (Webelemente) und Kanten (Aktionen) dargestellt, durch die AutoNode navigiert und mit denen er interagiert.
Bereiten Sie Ihre AutoNode-Initiator-Planer-Eingabeaufforderung vor: Mithilfe der Vorlagenstruktur für Planer-Eingabeaufforderungen in openai_prompts.py können Sie für OpenAI LLM eine neue Eingabeaufforderungsdatei im Eingabeaufforderungsverzeichnis mit der Struktur <llm_prompts.py> erstellen
Führen Sie AutoNode aus:
AutoNode kann über seine API gesteuert und genutzt werden, sodass Benutzer Webinteraktionen und Datenextraktionsaufgaben programmgesteuert automatisieren können. Dieser Leitfaden führt Sie durch den Prozess des Sendens von Anfragen an AutoNode über seinen API-Endpunkt.
Stellen Sie vor dem Start sicher, dass AutoNode auf Ihrem lokalen Computer ausgeführt wird. Sobald AutoNode betriebsbereit ist, können Sie auf die API-Dokumentation zugreifen, indem Sie Folgendes besuchen:
http://localhost:8001/docs
Über diese URL gelangen Sie zur Swagger-Benutzeroberfläche, wo Sie eine detaillierte Dokumentation zu allen verfügbaren API-Endpunkten finden, einschließlich desjenigen, der zum Initiieren von AutoNode-Aufgaben verwendet wird.
Um eine Aufgabe mit AutoNode zu automatisieren, verwenden Sie den Endpunkt /api/autonode/initiate. Dieser Endpunkt akzeptiert eine JSON-Nutzlast, die das Ziel der Aufgabe, den Pfad zur Site-Graph-JSON-Datei, den Stammknoten zum Starten der Durchquerung und die URL der Website angibt, mit der Sie interagieren möchten.
Hier ist die Struktur der JSON-Nutzlast, die Sie an den Endpunkt /api/autonode/initiate
senden müssen:
{
"site_url": "string",
"objective": "string",
"graph_path": "string",
"planer_prompt": "string"
}
Beispielanfrage: { „site_url“: „https://app.apollo.io/#/login“, „objective“: „Finden Sie die Liste von 20 CEOs und CTOs von Technologieunternehmen in San Francisco. Melden Sie sich mit den Creds bei Apollo an [email protected] und Passwort dummypassword@123", "graph_path": "autonode/site_trees/apollo.json" „planner_prompt“: „apollo“ }
site_url: Die URL der Website, die AutoNode besucht und mit der er interagiert.
Ziel: Das Ziel, das Sie auf der Website erreichen möchten. Dies kann alles sein, von der Datenextraktion bis zur Automatisierung einer Reihe von Webinteraktionen. Stellen Sie sicher, dass Sie die Anmeldeanweisungen zusammen mit den Anmeldeinformationen angeben, wenn in Ihrem Anwendungsfall eine Anmeldung erforderlich ist
graph_path: Der Pfad zur JSON-Datei, die Ihr Site-Graph enthält. Der Site-Graph definiert die Struktur und den Navigationsfluss der Website für AutoNode.
Planner_Prompt: Der Schlüssel für die Planungsaufforderung. Sie können den Schlüssel in Planning_agent.py für die AutoNode-Planer-Eingabeaufforderung ändern oder einen neuen Schlüssel zuordnen.
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 nutzt YOLO-Modelle zur Objekterkennung und OCR zur Texterkennung auf Webseiten. Diese Modelle sind entscheidend für die Identifizierung anklickbarer Elemente, das Lesen von Text aus Bildern und die dynamische Interaktion mit Webseiten.
Wir stellen einige allgemeine Yolo-Modelle bereit, die auf YOLO-V8
über Tausende von Web-Screenshots trainiert wurden. Navigieren Sie zu - yolo/web_detection_models/
dir, um diese zu finden
Sammeln Sie einen Datensatz: Sammeln Sie Bilder der Webelemente, die Sie erkennen möchten, und versehen Sie sie mit Begrenzungsrahmen.
Bereiten Sie den Datensatz vor: Teilen Sie Ihren Datensatz in Trainings- und Validierungssätze auf.
Trainieren Sie das Modell: Verwenden Sie ein YOLO-Trainingsskript, um Ihr Modell anhand des vorbereiteten Datensatzes zu trainieren. Passen Sie die Trainingsparameter an Ihre Bedürfnisse an.
Bewerten Sie das Modell: Testen Sie Ihr trainiertes Modell mit einem separaten Testsatz, um seine Leistung zu bewerten.
Mit AutoNode integrieren: Integrieren Sie nach dem Training Ihr benutzerdefiniertes YOLO-Modell mit AutoNode, indem Sie den Modellpfad in der Konfiguration angeben.
Wenn Sie nicht über genügend Ressourcen auf Ihrem lokalen Computer verfügen, können Sie die OCR- und YOLO-Module auf einem beliebigen Cloud-Server hosten. Folgende Schritte können unternommen werden:
Fügen Sie in Ihrer ocr/.env-Datei USE_REMOTE_OCR=True hinzu und legen Sie die URL für den Remote-Dienst in OCR_REMOTE_URL fest
Fügen Sie in Ihrer yolo/.env-Datei USE_REMOTE_YOLO=True hinzu und legen Sie die URL für den Remote-Dienst in YOLO_REMOTE_URL fest
Aktualisieren Sie den Pfad des Yolo-Weberkennungsmodells in Ihrer Yolo/.env-Datei und fügen Sie SAHI_MODEL_PATH und ULTRALYTICS_MODEL_PATH hinzu. Beispiel: SAHI_MODEL_PATH = yolo/web_detection_models/twitter.pt
Der Site-Graph ist eine JSON-Datei, die die Struktur und den Navigationsfluss einer Website für AutoNode beschreibt. So bereiten Sie es zu:
Identifizieren Sie Webelemente: Navigieren Sie durch Ihre Zielwebsite und identifizieren Sie die Schlüsselelemente, mit denen Sie interagieren möchten, z. B. Schaltflächen, Textfelder und Links.
Knoten definieren: Definieren Sie für jedes Webelement einen Knoten in der JSON-Datei. Fügen Sie Eigenschaften wie „node_name“, „actionable_element_type“, „location“ und „is_type“ hinzu.
Kanten definieren: Geben Sie die Beziehungen zwischen Knoten mithilfe der Eigenschaften „advanced_to“ und „advanced_from“ an, um den Navigationsfluss darzustellen.
Aktionsdetails einschließen: Geben Sie für Knoten, die eine Eingabe oder einen Klick erfordern, zusätzliche Details wie type_description oder click_action an.
Beispiel für ein einfaches Site-Graph:
{
"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": []
}
}
Screenshots an jedem Knoten zur Erkennung von Webelementen werden im Anforderungsverzeichnis im Stammordner gespeichert. Sie können sie bei Bedarf in einem AWS s3-Konto speichern oder sie je nach Ihrer Wahl lokal beibehalten oder auch nicht. Für Anwendungsfälle, die das Herunterladen von Ausgaben erfordern, müssen herunterladbare Inhalte (wie die Ausgabe in Apollo) entweder lokal oder remote gespeichert werden.
# 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)
und übergeben Sie s3_client=self.s3_client in Zeile 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()