Penelitian Kecerdasan Super Umum, Infrastruktur & Aplikasi Otonom
Ikuti SuperAGI
Terhubung dengan Sang Pencipta
Bagikan Repositori Ini
AutoNode adalah sistem komputer yang beroperasi sendiri yang dirancang untuk mengotomatiskan interaksi web dan proses ekstraksi data. Ini memanfaatkan teknologi canggih seperti OCR (Optical Character Recognition), model YOLO (You Only Look Once) untuk deteksi objek, dan grafik situs khusus untuk menavigasi dan berinteraksi dengan halaman web secara terprogram.
Untuk memulai AutoNode, Anda perlu menginstal Python di sistem Anda. Ikuti langkah-langkah berikut untuk menginstal AutoNode:
git clone https://github.com/TransformerOptimus/AutoNode.git
cd AutoNode
Buat salinan .env.example , dan beri nama .env. Ulangi langkah ini untuk ketiga modul - autonode, yolo, ocr
Pastikan Docker diinstal pada sistem Anda. Anda dapat mengunduh dan menginstalnya dari sini.
Setelah Anda menjalankan Docker Desktop, jalankan perintah berikut di direktori AutoNode:
docker compose -f docker-compose.yaml up --build
AutoNode beroperasi berdasarkan grafik situs yang menentukan navigasi dan tindakan yang akan dilakukan di situs web. Berikut gambaran dasar tentang cara menggunakan AutoNode:
Tentukan Tujuan Anda: Tentukan apa yang ingin Anda capai dengan AutoNode, seperti ekstraksi data atau otomatisasi interaksi web tertentu.
Siapkan Grafik Situs Autonode Anda: Buat file JSON yang mewakili grafik situs. Grafik ini menguraikan node (elemen web) dan tepi (tindakan) yang akan dinavigasi dan berinteraksi dengan AutoNode.
Mempersiapkan Anda prompt perencana inisiator AutoNode : Menggunakan struktur template yang diberikan untuk prompt perencana di openai_prompts.py, untuk OpenAI LLM, Anda dapat membuat file prompt baru di direktori prompt dengan struktur <llm_prompts.py>
Jalankan AutoNode:
AutoNode dapat dikontrol dan dimanfaatkan melalui API-nya, memungkinkan pengguna mengotomatiskan interaksi web dan tugas ekstraksi data secara terprogram. Panduan ini akan memandu Anda melalui proses pengiriman permintaan ke AutoNode menggunakan titik akhir API-nya.
Sebelum memulai, pastikan AutoNode berjalan di mesin lokal Anda. Setelah AutoNode aktif dan berjalan, Anda dapat mengakses dokumentasi API dengan mengunjungi:
http://localhost:8001/docs
URL ini akan membawa Anda ke UI Swagger, tempat Anda dapat menemukan dokumentasi terperinci tentang semua titik akhir API yang tersedia, termasuk yang digunakan untuk memulai tugas AutoNode.
Untuk mengotomatiskan tugas dengan AutoNode, Anda akan menggunakan titik akhir /api/autonode/initiate. Titik akhir ini menerima muatan JSON yang menentukan tujuan tugas, jalur ke file JSON grafik situs, simpul akar untuk memulai traversal, dan URL situs web yang ingin Anda gunakan untuk berinteraksi.
Berikut adalah struktur payload JSON yang perlu Anda kirim ke titik akhir /api/autonode/initiate
:
{
"site_url": "string",
"objective": "string",
"graph_path": "string",
"planer_prompt": "string"
}
Contoh permintaan: { "site_url": "https://app.apollo.io/#/login", "objective": "Temukan daftar 20 ceo, cto perusahaan teknologi di san francisco. Masuk ke apollo menggunakan kredensial [email protected] dan kata sandi dummypassword@123", "graph_path": "autonode/site_trees/apollo.json" "planner_prompt": "apollo" }
site_url: URL situs web yang akan dikunjungi dan berinteraksi dengan AutoNode.
objektif: Tujuan yang ingin Anda capai di situs web. Ini bisa berupa apa saja mulai dari ekstraksi data hingga otomatisasi serangkaian interaksi web. Pastikan Anda memberikan instruksi login bersama dengan kredensial jika login diperlukan dalam kasus penggunaan Anda
graph_path: Jalur ke file JSON yang berisi grafik situs Anda. Grafik situs mendefinisikan struktur dan alur navigasi situs web untuk AutoNode.
planner_prompt: Kunci untuk perencanaan cepat. Anda dapat mengubah atau memetakan kunci baru di Planning_agent.py untuk perintah perencana 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 menggunakan model YOLO untuk deteksi objek dan OCR untuk pengenalan teks pada halaman web. Model ini sangat penting untuk mengidentifikasi elemen yang dapat diklik, membaca teks dari gambar, dan berinteraksi dengan halaman web secara dinamis.
Kami menyediakan beberapa model yolo umum yang dilatih di YOLO-V8
melalui ribuan tangkapan layar web. Navigasikan ke - yolo/web_detection_models/
dir untuk menemukannya
Kumpulkan Kumpulan Data: Kumpulkan gambar elemen web yang ingin Anda deteksi dan beri anotasi dengan kotak pembatas.
Siapkan Kumpulan Data: Bagi kumpulan data Anda menjadi kumpulan pelatihan dan validasi.
Latih Modelnya: Gunakan skrip pelatihan YOLO untuk melatih model Anda pada kumpulan data yang telah disiapkan. Sesuaikan parameter pelatihan sesuai dengan kebutuhan Anda.
Evaluasi Model: Uji model terlatih Anda pada set pengujian terpisah untuk mengevaluasi performanya.
Integrasikan dengan AutoNode: Setelah dilatih, integrasikan model YOLO kustom Anda dengan AutoNode dengan menentukan jalur model dalam konfigurasi.
Jika Anda tidak memiliki sumber daya yang cukup di mesin lokal, Anda dapat menghosting modul OCR dan YOLO di server cloud mana pun. Langkah-langkah berikut dapat diambil:
Di file ocr/.env Anda, tambahkan USE_REMOTE_OCR=True dan atur url untuk layanan jarak jauh di OCR_REMOTE_URL
Di file yolo/.env Anda, tambahkan USE_REMOTE_YOLO=True dan atur url untuk layanan jarak jauh di YOLO_REMOTE_URL
Perbarui jalur model deteksi web yolo di file yolo/.env Anda, tambahkan SAHI_MODEL_PATH dan ULTRALYTICS_MODEL_PATH. Contoh: SAHI_MODEL_PATH = yolo/web_detection_models/twitter.pt
Grafik situs adalah file JSON yang menjelaskan struktur dan alur navigasi situs web untuk AutoNode. Berikut cara mempersiapkannya:
Identifikasi Elemen Web: Jelajahi situs web target Anda dan identifikasi elemen kunci yang ingin Anda gunakan untuk berinteraksi, seperti tombol, kotak teks, dan tautan.
Tentukan Node: Untuk setiap elemen web, tentukan sebuah node dalam file JSON. Sertakan properti seperti node_name, actionable_element_type, location, dan is_type.
Tentukan Tepian: Tentukan hubungan antar node menggunakan properti berdekatan_ke dan berdekatan_dari untuk mewakili alur navigasi.
Sertakan Detail Tindakan: Untuk node yang memerlukan pengetikan atau klik, berikan detail tambahan seperti type_description atau click_action.
Contoh grafik situs sederhana:
{
"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": []
}
}
Tangkapan layar di setiap node untuk deteksi elemen web disimpan dalam direktori permintaan di folder root. Anda dapat menyimpannya di akun AWS s3 jika Anda mau, atau menyimpannya secara lokal atau tidak keduanya sesuai pilihan Anda. Untuk kasus penggunaan yang memerlukan pengunduhan keluaran, konten yang dapat diunduh (seperti keluaran di apollo) perlu disimpan secara lokal atau jarak jauh.
# 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)
dan teruskan s3_client=self.s3_client pada baris 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()