화면 자동화 에이전트 구축: 비전, 그라운딩 및 신뢰할 수 있는 UI 제어
요약
본 가이드는 화면 자동화 에이전트 구축 시 발생하는 핵심적인 기술적 난제와 신뢰성 높은 아키텍처를 제시합니다. 스크린샷 기반의 순수 픽셀 예측보다 접근성 트리나 Set-of-Mark 프롬프팅을 활용하는 하이브리드 방식이 가장 신뢰성이 높습니다. 또한, 에이전트 실행 시에는 반드시 Docker 컨테이너와 같은 격리된 환경(샌드박싱)에서 진행해야 합니다.
핵심 포인트
- 에이전트는 관찰-결정-행동-검증의 핵심 루프를 따른다.
- 가장 신뢰성 높은 패턴은 접근성 트리 우선, Set-of-Mark 사용이다.
- 실제 데스크톱 환경에서는 반드시 Docker 컨테이너로 샌드박싱해야 한다.
- 되돌릴 수 없는 행동(삭제/결제)에는 인간의 확인 절차를 추가하라.
Anthropic의 Claude computer use API는 2024년 10월에 출시되었으며, 스크린샷을 찍고 어디를 클릭할지 결정한 다음 원시 픽셀 좌표를 반환합니다. 이는 화면 에이전트에서 가장 어려운 부분이 모델 자체가 아니라 그 주변 모든 것임을 의미합니다. 즉, 스크린 캡처, 좌표의 올바른 스케일링, 동작이 제대로 작동했는지 확인하는 과정, 그리고 실패했을 때 복구하는 과정입니다.
본 가이드는 실제 환경에서 작동하는 아키텍처를 다룹니다. 데모에서 사람이 감시하지 않아도 실행할 수 있는 스크립트로 옮길 때 가장 먼저 망가지는 부분에 초점을 맞춥니다.
핵심 루프: 관찰(Observe), 결정(Decide), 행동(Act), 검증(Verify)
Claude computer use, OpenAI의 Operator, 또는 Microsoft의 OmniParser와 같은 오픈 소스 스택을 사용하는 등 모든 화면 에이전트는 동일한 루프를 실행합니다:
- 관찰 (Observe): 스크린샷과 선택적으로 접근성 트리(accessibility tree)를 캡처합니다.
- 결정 (Decide): 관찰 내용과 목표를 모델에 전송하고,
click(x, y), `type(
- 순수 픽셀 예측(Pure pixel prediction). Claude 컴퓨터 사용 및 유사 모델은 좌표를 직접 반환합니다. 이는 가장 간단한 옵션이며, 크고 레이블이 지정된 타겟에 대해 잘 작동합니다.
- Set-of-Mark 프롬프팅(Set-of-Mark prompting). UI 요소를 먼저 감지하고, 스크린샷 위에 번호가 매겨진 상자를 겹쳐 놓은 다음, 모델에게 "요소 14를 클릭하라"고 요청합니다. OmniParser는 미세 조정된 YOLO 검출기(detector)와 아이콘 캡셔닝 모델을 사용하여 이러한 경계 상자(bounding boxes)를 출력합니다. 숫자를 선택하는 것이 모델이 정확한 좌표를 추정하는 것보다 훨씬 쉽습니다.
- 접근성 트리(Accessibility tree). Windows에서는
pywinauto를 통해 UI Automation을 사용합니다. macOS에서는 AX API를 사용합니다. 웹의 경우 Playwright의page.accessibility.snapshot()을 사용합니다. 이들은 비전이 필요 없이 정확한 요소 경계와 이름을 제공합니다.
가장 신뢰할 수 있는 패턴은 하이브리드입니다. 접근성 트리가 존재하는 경우에는 이를 사용하고, 해당 트리가 비어있는 캔버스 앱(canvas apps), 게임 또는 원격 데스크톱에서는 Set-of-Mark를 사용하는 것이 좋습니다.
핵심 요약: 모델에 스크린샷을 보내기 전에 접근성 트리나 DOM이 요소 좌표를 무료로 제공할 수 있는지 확인하십시오.
샌드박싱: 절대 실제 데스크톱에서 에이전트를 실행하지 마십시오
마우스 제어 기능을 가진 에이전트는 파일을 삭제하거나, 이메일을 보내거나, 결제를 승인할 수 있습니다. Anthropic 자체의 참조 구현은 가상 X 디스플레이(Xvfb)와 경량 윈도우 관리자, 관찰을 위한 VNC가 있는 Docker 컨테이너 내부에서 실행됩니다. 해당 설정을 복사하십시오.
docker run -p 5900:5900 -p 6080:6080 \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-it ghcr.io/anthropics/anthropic-quickstarts:computer-use-demo-latest
이 명령어는 localhost:6080에서 관찰할 수 있는 일회용 Linux 데스크톱을 제공합니다. 에이전트가 오작동하면 컨테이너를 종료하십시오.
격리 외의 방어 장치(guardrails)를 추가하십시오:
- 단계 수 제한 설정 (예: 작업당 30개 행동).
- 제출, 삭제 또는 결제와 같이 되돌릴 수 없는 행동에 대해서는 인간의 확인을 요구해야 합니다.
- 자격 증명(credentials)은 프롬프트 컨텍스트에서 제외하세요.
- 화면상의 텍스트를 신뢰할 수 없는 입력으로 취급하세요. "이전 지침 무시"라고 적힌 웹페이지는 실제 프롬프트 주입(prompt-injection) 벡터입니다.
핵심 요약: 모든 에이전트 실험은 단계 제한과 파괴적인 행동에 대한 확인 게이트가 있는 컨테이너 내에서 실행해야 합니다.
배포할 만큼 신뢰성을 확보하는 방법
데모 에이전트는 때때로 성공합니다. 하지만 프로덕션(운영 환경) 에이전트는 예측 가능하게 성공해야 합니다. 네 가지 기술이 이 격차의 대부분을 해소해 줍니다.
가능한 곳에서는 결정론적 경로를 사용하세요. 로그인이나 메뉴 열기처럼 매번 단계가 동일한 경우, Playwright나 pyautogui로 스크립트화하세요. 모델은 진정으로 판단이 필요한 단계에만 할당하세요. 이는 비용, 지연 시간(latency), 실패 표면적을 줄여줍니다.
모든 단계를 궤적(trajectory)으로 기록하세요. 각 단계별로 스크린샷, 모델 출력, 행동을 JSONL 형식으로 저장합니다. 실행이 실패할 때, 정확히 재현할 수 있습니다. 또한 평가 세트(evaluation set)도 축적하게 됩니다.
공개된 테스트 스위트와 비교하여 벤치마킹하세요. OSWorld는 Ubuntu 및 Windows 앱을 아우르는 369개의 실제 컴퓨터 작업을 제공합니다. 이 작업에 대한 인간의 성능은 약 72%이며, 2024년에 출시된 모델들은 초기에는 훨씬 낮은 점수를 기록했습니다. 브라우저 전용 에이전트의 경우 WebArena가 같은 목적을 수행합니다. 둘 중 어느 것을 일부 실행해 보는 것은 프롬프트 변경이 실제로 도움이 되었는지 알려줍니다.
시간(time)이 아닌 상태(state)를 기다리세요. 고정된 sleep() 호출을 폴링(polling)으로 대체하세요. 연속적인 스크린샷을 비교하고, 픽셀 차이가 임계값 이하로 떨어지거나 예상되는 요소가 나타날 때 진행하세요.
핵심 요약: 오늘부터 궤적을 기록하고, 데모를 눈대중으로 측정하는 대신 고정된 작업 세트를 기준으로 변화를 측정해야 합니다.
고용주들이 검토하는 기술
AI 에이전트 엔지니어를 채용하는 팀들은 주로 프롬프트 작성 능력만을 찾고 있지 않습니다. 반복적으로 요구되는 사항들은 여러 영역을 결합하고 있습니다:
- 클래식 자동화: Selenium, Playwright 및 OS 입력 API.
- 컴퓨터 비전 기초: 객체 탐지 (object detection), Tesseract 또는 PaddleOCR을 사용한 OCR, 이미지 차이점 비교 (image diffing).
- LLM 도구 호출 스키마 (tool-calling schemas).
- 평가 방법론 (Evaluation discipline).
에이전트의 4K 모니터에서의 클릭 정확도가 왜 떨어졌는지 설명하고 어떻게 수정했는지 설명할 수 있다면, 단순히 API를 감싼(wrapped) 후보자들 사이에서 눈에 띌 것입니다.
핵심 요약: 화면 녹화만 하는 것이 아니라, 그라운딩 (grounding), 샌드박싱 (sandboxing), 그리고 평가표를 보여주는 포트폴리오 에이전트를 하나 구축하세요.
오늘, Anthropic의 컴퓨터 사용 데모 컨테이너를 가져와서 실제로 수행하는 반복적인 작업(예: 웹 대시보드에서 주간 보고서를 내보내기)을 하나 부여하고 모든 단계를 JSONL로 기록해 보세요. 세션이 끝날 무렵에는 작동하는 샌드박스, 연구할 실제 실패 사례들, 그리고 평가 세트의 첫 번째 항목을 갖게 될 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기