일반화된 슈퍼 인텔리전스 연구, 인프라 및 자율 앱
SuperAGI 팔로우
제작자와 연결
이 저장소 공유
AutoNode는 웹 상호 작용 및 데이터 추출 프로세스를 자동화하도록 설계된 자체 운영 컴퓨터 시스템입니다. OCR(광학 문자 인식), 객체 감지를 위한 YOLO(You Only Look Once) 모델, 프로그래밍 방식으로 웹 페이지를 탐색하고 상호 작용하는 사용자 정의 사이트 그래프와 같은 고급 기술을 활용합니다.
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 LLM의 경우 openai_prompts.py에서 플래너 프롬프트에 제공된 템플릿 구조를 사용하여 <llm_prompts.py> 구조의 프롬프트 디렉터리에 새 프롬프트 파일을 생성할 수 있습니다.
AutoNode를 실행합니다:
AutoNode는 API를 통해 제어 및 활용될 수 있으므로 사용자는 프로그래밍 방식으로 웹 상호 작용 및 데이터 추출 작업을 자동화할 수 있습니다. 이 가이드에서는 API 엔드포인트를 사용하여 AutoNode에 요청을 보내는 프로세스를 안내합니다.
시작하기 전에 AutoNode가 로컬 머신에서 실행되고 있는지 확인하세요. AutoNode가 실행되면 다음을 방문하여 API 문서에 액세스할 수 있습니다.
http://localhost:8001/docs
이 URL은 AutoNode 작업을 시작하는 데 사용되는 항목을 포함하여 사용 가능한 모든 API 끝점에 대한 자세한 문서를 찾을 수 있는 Swagger UI로 이동합니다.
AutoNode로 작업을 자동화하려면 /api/autonode/initiate 엔드포인트를 사용합니다. 이 엔드포인트는 작업 목표, 사이트 그래프 JSON 파일의 경로, 순회를 시작할 루트 노드, 상호 작용하려는 웹 사이트의 URL을 지정하는 JSON 페이로드를 허용합니다.
/api/autonode/initiate
엔드포인트로 보내야 하는 JSON 페이로드의 구조는 다음과 같습니다.
{
"site_url": "string",
"objective": "string",
"graph_path": "string",
"planer_prompt": "string"
}
요청 예시: { "site_url": "https://app.apollo.io/#/login", "objective": "샌프란시스코에 있는 기술 회사의 CEO, CTO 20명의 목록을 찾습니다. 자격 증명을 사용하여 Apollo에 로그인합니다. [email protected] 및 비밀번호 dummypassword@123", "graph_path": "autonode/site_trees/apollo.json" "planner_prompt": "아폴로" }
site_url: AutoNode가 방문하고 상호 작용할 웹 사이트의 URL입니다.
목표: 웹사이트에서 달성하려는 목표입니다. 이는 데이터 추출부터 일련의 웹 상호 작용 자동화에 이르기까지 무엇이든 될 수 있습니다. 사용 사례에 로그인이 필요한 경우 자격 증명과 함께 로그인 지침을 제공해야 합니다.
graph_path: 사이트 그래프가 포함된 JSON 파일의 경로입니다. 사이트 그래프는 AutoNode에 대한 웹사이트의 구조와 탐색 흐름을 정의합니다.
planner_prompt: 계획 프롬프트의 핵심입니다. AutoNode 플래너 프롬프트에 대한 Planning_agent.py에서 새 키를 변경하거나 매핑할 수 있습니다.
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-V8
에서 훈련된 몇 가지 일반 yolo 모델을 제공하고 있습니다. 해당 모델을 찾으려면 yolo/web_detection_models/
dir로 이동하세요.
데이터 세트 수집: 감지하려는 웹 요소의 이미지를 수집하고 경계 상자로 주석을 추가합니다.
데이터 세트 준비: 데이터 세트를 훈련 세트와 검증 세트로 분할합니다.
모델 훈련: YOLO 훈련 스크립트를 사용하여 준비된 데이터 세트에서 모델을 훈련합니다. 필요에 따라 훈련 매개변수를 조정하십시오.
모델 평가: 학습된 모델을 별도의 테스트 세트에서 테스트하여 성능을 평가합니다.
AutoNode와 통합: 학습이 완료되면 구성에서 모델 경로를 지정하여 사용자 정의 YOLO 모델을 AutoNode와 통합하세요.
로컬 컴퓨터에 리소스가 충분하지 않은 경우 모든 클라우드 서버에서 OCR 및 YOLO 모듈을 호스팅할 수 있습니다. 다음 단계를 수행할 수 있습니다.
ocr/.env 파일에 USE_REMOTE_OCR=True를 추가하고 OCR_REMOTE_URL에 원격 서비스의 URL을 설정합니다.
yolo/.env 파일에 USE_REMOTE_YOLO=True를 추가하고 YOLO_REMOTE_URL에 원격 서비스의 URL을 설정합니다.
yolo/.env 파일에서 yolo 웹 감지 모델 경로를 업데이트하고 SAHI_MODEL_PATH 및 ULTRALYTICS_MODEL_PATH를 추가하세요. 예: SAHI_MODEL_PATH = yolo/web_Detection_models/twitter.pt
사이트 그래프는 AutoNode용 웹사이트의 구조와 탐색 흐름을 설명하는 JSON 파일입니다. 준비하는 방법은 다음과 같습니다.
웹 요소 식별: 대상 웹사이트를 탐색하고 버튼, 텍스트 상자, 링크 등 상호 작용하려는 주요 요소를 식별합니다.
노드 정의: 각 웹 요소에 대해 JSON 파일에 노드를 정의합니다. node_name, actionable_element_type, location 및 is_type과 같은 속성을 포함합니다.
가장자리 정의: 인접_to 및 인접_from 속성을 사용하여 탐색 흐름을 나타내는 노드 간의 관계를 지정합니다.
작업 세부정보 포함: 입력이나 클릭이 필요한 노드의 경우 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)
84번째 줄에 s3_client=self.s3_client를 전달하세요.
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()