أبحاث الذكاء الفائق المعمم والبنية التحتية والتطبيقات المستقلة
اتبع سوبراجي
تواصل مع الخالق
شارك هذا المستودع
AutoNode هو نظام كمبيوتر ذاتي التشغيل مصمم لأتمتة تفاعلات الويب وعمليات استخراج البيانات. إنه يستفيد من التقنيات المتقدمة مثل OCR (التعرف البصري على الأحرف)، ونماذج YOLO (أنت تنظر مرة واحدة فقط) لاكتشاف الكائنات، ورسم بياني مخصص للموقع للتنقل والتفاعل مع صفحات الويب برمجيًا.
للبدء في استخدام AutoNode، تحتاج إلى تثبيت Python على نظامك. اتبع هذه الخطوات لتثبيت AutoNode:
git clone https://github.com/TransformerOptimus/AutoNode.git
cd AutoNode
قم بإنشاء نسخة من .env.example، وقم بتسميتها .env. كرر هذه الخطوة لجميع الوحدات الثلاث - autonode، yolo، ocr
تأكد من تثبيت Docker على نظامك. يمكنك تنزيله وتثبيته من هنا.
بمجرد تشغيل Docker Desktop، قم بتشغيل الأمر التالي في دليل AutoNode:
docker compose -f docker-compose.yaml up --build
يعمل AutoNode بناءً على رسم بياني للموقع يحدد التنقل والإجراءات التي سيتم تنفيذها على موقع الويب. فيما يلي نظرة عامة أساسية حول كيفية استخدام AutoNode:
حدد هدفك: حدد ما تريد تحقيقه باستخدام AutoNode، مثل استخراج البيانات أو أتمتة تفاعلات الويب المحددة.
قم بإعداد Autonode-Site-Graph: قم بإنشاء ملف JSON الذي يمثل الرسم البياني للموقع. يوضح هذا الرسم البياني العقد (عناصر الويب) والحواف (الإجراءات) التي سيتنقل فيها AutoNode ويتفاعل معها.
إعداد موجه مخطط بادئ AutoNode الخاص بك: باستخدام بنية القالب المقدمة لمطالبات المخطط في openai_prompts.py، بالنسبة لـ OpenAI LLM، يمكنك إنشاء ملف مطالبة جديد في دليل المطالبات بالبنية <llm_prompts.py>
تشغيل العقدة التلقائية:
يمكن التحكم في AutoNode واستخدامه من خلال واجهة برمجة التطبيقات (API)، مما يسمح للمستخدمين بأتمتة تفاعلات الويب ومهام استخراج البيانات برمجيًا. سيرشدك هذا الدليل خلال عملية إرسال الطلبات إلى AutoNode باستخدام نقطة نهاية API الخاصة به.
قبل البدء، تأكد من تشغيل AutoNode على جهازك المحلي. بمجرد تشغيل AutoNode، يمكنك الوصول إلى وثائق API عن طريق زيارة:
http://localhost:8001/docs
سينقلك عنوان URL هذا إلى واجهة مستخدم Swagger، حيث يمكنك العثور على وثائق مفصلة حول جميع نقاط نهاية واجهة برمجة التطبيقات المتاحة، بما في ذلك تلك المستخدمة لبدء مهام AutoNode.
لأتمتة مهمة باستخدام AutoNode، ستستخدم نقطة النهاية /api/autonode/initiate. تقبل نقطة النهاية هذه حمولة JSON التي تحدد هدف المهمة، والمسار إلى ملف JSON للرسم البياني للموقع، والعقدة الجذرية لبدء الاجتياز، وعنوان URL لموقع الويب الذي ترغب في التفاعل معه.
فيما يلي بنية حمولة JSON التي تحتاج إلى إرسالها إلى نقطة النهاية /api/autonode/initiate
:
{
"site_url": "string",
"objective": "string",
"graph_path": "string",
"planer_prompt": "string"
}
طلب مثال: { "site_url": "https://app.apollo.io/#/login"، "objective": "ابحث عن قائمة تضم 20 رئيسًا تنفيذيًا ومديرًا للتكنولوجيا في شركات التكنولوجيا في سان فرانسيسكو. قم بتسجيل الدخول إلى apollo باستخدام الاعتمادات [email protected] وكلمة المرور dummypassword@123"، "graph_path": "autonode/site_trees/apollo.json" "planner_prompt": "أبولو" }
site_url: عنوان URL لموقع الويب الذي سيزوره AutoNode ويتفاعل معه.
الهدف: الهدف الذي تريد تحقيقه على الموقع. يمكن أن يكون هذا أي شيء بدءًا من استخراج البيانات وحتى أتمتة سلسلة من تفاعلات الويب. تأكد من تقديم تعليمات تسجيل الدخول إلى جانب بيانات الاعتماد إذا كان تسجيل الدخول مطلوبًا في حالة الاستخدام الخاصة بك
graph_path: المسار إلى ملف JSON الذي يحتوي على الرسم البياني للموقع الخاص بك. يحدد الرسم البياني للموقع البنية وتدفق التنقل لموقع الويب الخاص بـ AutoNode.
Planner_prompt: مفتاح التخطيط السريع. يمكنك تغيير أو تعيين مفتاح جديد في Planning_agent.py لموجه مخطط 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 نماذج YOLO للكشف عن الكائنات وOCR للتعرف على النص على صفحات الويب. تعتبر هذه النماذج ضرورية لتحديد العناصر القابلة للنقر، وقراءة النص من الصور، والتفاعل مع صفحات الويب ديناميكيًا.
نحن نقدم بعض نماذج yolo العامة المدربة على YOLO-V8
عبر آلاف لقطات شاشة الويب، انتقل إلى - yolo/web_detection_models/
dir للعثور على تلك النماذج
جمع مجموعة بيانات: اجمع صورًا لعناصر الويب التي تريد اكتشافها وقم بالتعليق عليها باستخدام المربعات المحيطة.
قم بإعداد مجموعة البيانات: قم بتقسيم مجموعة البيانات الخاصة بك إلى مجموعات تدريب ومجموعات التحقق من الصحة.
تدريب النموذج: استخدم برنامج تدريب YOLO لتدريب النموذج الخاص بك على مجموعة البيانات المعدة. اضبط معلمات التدريب وفقًا لاحتياجاتك.
تقييم النموذج: اختبر نموذجك المدرب في مجموعة اختبار منفصلة لتقييم أدائه.
التكامل مع AutoNode: بمجرد التدريب، قم بدمج نموذج YOLO المخصص الخاص بك مع AutoNode عن طريق تحديد مسار النموذج في التكوين.
إذا لم يكن لديك موارد كافية على جهازك المحلي، فيمكنك استضافة وحدات OCR وYOLO على أي خادم سحابي. ويمكن اتخاذ الخطوات التالية:
في ملف ocr/.env، أضف USE_REMOTE_OCR=True وقم بتعيين عنوان url للخدمة البعيدة في OCR_REMOTE_URL
في ملف yolo/.env الخاص بك، أضف USE_REMOTE_YOLO=True وقم بتعيين عنوان url للخدمة عن بعد في YOLO_REMOTE_URL
قم بتحديث مسار نموذج اكتشاف الويب yolo في ملف yolo/.env، وأضف SAHI_MODEL_PATH وULTRALYTICS_MODEL_PATH. مثال: SAHI_MODEL_PATH = yolo/web_detection_models/twitter.pt
الرسم البياني للموقع هو ملف JSON يصف البنية وتدفق التنقل لموقع الويب الخاص بـ AutoNode. وإليك كيفية تحضيره:
تحديد عناصر الويب: انتقل عبر موقع الويب المستهدف وحدد العناصر الأساسية التي تريد التفاعل معها، مثل الأزرار ومربعات النص والروابط.
تحديد العقد: لكل عنصر ويب، حدد عقدة في ملف JSON. قم بتضمين خصائص مثل Node_name، وactionable_element_type، والموقع، وis_type.
تعريف الحواف: حدد العلاقات بين العقد باستخدام خصائص مجاورة_إلى ومجاورة_من لتمثيل تدفق التنقل.
تضمين تفاصيل الإجراء: بالنسبة للعقد التي تتطلب الكتابة أو النقر، قم بتوفير تفاصيل إضافية مثل type_description أو click_action.
مثال على رسم بياني بسيط للموقع:
{
"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": []
}
}
يتم تخزين لقطات الشاشة في كل عقدة لاكتشاف عناصر الويب في دليل الطلبات في المجلد الجذر. يمكنك تخزينها على حساب AWS s3 في حالة رغبتك في ذلك، أو الاحتفاظ بها محليًا أو لا حسب اختيارك. بالنسبة لحالات الاستخدام التي تتطلب تنزيل المخرجات، يجب تخزين المحتوى القابل للتنزيل (مثل المخرجات في apollo) إما محليًا أو عن بُعد.
# 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)
وقم بالتمرير s3_client=self.s3_client على السطر 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()