본문으로 바로가기

OpenAI CUA(Computer-Using Agent) 기본 사용법과 안전 가이드

요약

CUA(컴퓨터-사용 에이전트)란?

OpenAI의 Computer-Using Agent(CUA)는 사람이 직접 컴퓨터를 사용하는 것처럼 마우스 클릭, 키 입력, 스크롤 등 다양한 컴퓨터 인터페이스 동작을 자동화해주는 AI 모델입니다. GPT-4o의 시각 처리 능력과 논리적 추론 기능을 결합하여, 화면을 보고 다음 행동을 제안할 수 있습니다. Responses API를 통해 이용할 수 있고, 실제 고도의 신뢰성이 필요한 환경에서는 아직 주의가 필요합니다.

동작 구조: 액션 루프

CUA는 “액션 → 실행 → 결과 캡처 → 재요청”의 순환 구조로 작동합니다. 예를 들어, 사용자가 “최신 뉴스를 검색해줘”라고 지시하면, 모델이 주소창 클릭을 제안하고, 코드가 해당 좌표를 클릭합니다. 이후 화면 캡처를 모델에 보내 결과를 인식시키고, 다음 동작을 이어갑니다. 이 프로세스는 목표를 달성할 때까지 반복됩니다.

환경 준비: 브라우저와 가상 머신

CUA는 실제 컴퓨터 환경에서 동작해야 하므로,

  • 간단하게 브라우저 자동화(Playwright, Selenium 등)로 시작할 수도 있고

  • 보다 복잡한 경우, Docker로 우분투 VM을 띄워서 그래픽 인터페이스와 시뮬레이션 작업을 할 수 있습니다. 안전을 위해 샌드박스 환경 사용을 추천합니다. 실제 환경 구축 예시:

// Playwright로 브라우저 인스턴스 시작
import { chromium } from playwright;
const browser = await chromium.launch({
  headless: false,
  chromiumSandbox: true,
  env: {},
  args: [--disable-extensions, --disable-file-system],
});
const page = await browser.newPage();
await page.setViewportSize({ width: 1024, height: 768 });
await page.goto(https://bing.com);

API 통신과 샘플 코드

응용프로그램에서 CUA를 활용하려면,

  1. 모델에게 원하는 작업과 환경 정보를 함께 요청

  2. 모델이 제안한 액션(예: 클릭, 타이핑 등)을 코드로 실행

  3. 화면 캡처 후 베이스64 형식으로 모델에 재전송

  4. 위 과정 반복

# Python 예시: 모델에 요청 보내기
from openai import OpenAI

client = OpenAI()
response = client.responses.create(
  model=computer-use-preview,
  tools=[{ type: computer_use_preview, display_width: 1024, display_height: 768, environment: browser }],
  input=[{
    role: user,
    content: [ { type: input_text, text: Check the latest OpenAI news on bing.com. } ]
  }],
  reasoning={ summary: concise },
  truncation=auto
)
print(response.output)

핵심 액션 실행 코드

모델이 추천한 동작(컴퓨터 액션)은 직접 환경에서 코드를 통해 구현해야 합니다. 클릭, 스크롤, 입력, 대기, 화면캡처 등은 아래 형태로 코드에 담습니다.

def handle_model_action(page, action):
    if action.type == click:
        page.mouse.click(action.x, action.y, button=action.button)
    elif action.type == type:
        page.keyboard.type(action.text)
    # 기타 액션들도 추가 구현

Safety Check(안전 체크) 관리

CUA는 취약점이나 위험 상황에서 자동으로 안전 경고를 반환할 수 있습니다. 이 경우, 안전 경고를 받은 후 직접 사용자가 “이 조치를 승인합니다”라고 명시적으로 확인해주어야 다음 단계로 넘어갈 수 있습니다. 예를 들어, 악성 명령이나 민감한 사이트 접근 등이 감지되면, pending_safety_checks 파라미터와 함께 경고 메시지가 나오며, 이를 acknowledged_safety_checks에 담아 재요청해야 합니다.

실제 구현 루프

모델이 더 이상 추천 동작을 내지 않을 때까지,

  1. 모델의 행동 제안 받기

  2. 환경(브라우저/VM 등)에 해당 동작 실행

  3. 화면 캡처 후 모델에 다시 전달

  4. 필요 시 safety check도 처리 이 과정을 반복하면 AI가 실제로 컴퓨터를 조작하게 됩니다.

import time
def computer_use_loop(instance, response):
    while True:
        # 1. 모델의 액션 받기
        # 2. 환경에서 처리
        # 3. 캡처 재송신
        # 4. 안전 체크 대응
        # (출력에서 computer_call 항목이 없으면 루프 종료)
        pass

반드시 지켜야 할 안전 가이드

  • 고위험, 민감한 작업에는 반드시 사람이 결과를 검토하고 승인하는 “human in the loop” 체계를 넣어야 합니다.

  • 모델이 외부 입력(스크린샷 등)을 이용하기에, 악성 웹사이트나 이메일 등에서 잘못된 행동을 유도당할 수 있습니다(프롬프트 인젝션). → 반드시 격리된 환경(샌드박스, 컨테이너 등)에서만 사용하세요.

  • 필요한 웹사이트, 작업, 사용자만 허용(allowlist), 불필요한 것은 금지(blocklist)로 관리

  • safety_identifier 파라미터 등을 활용해 OpenAI가 모니터링할 수 있게 하세요

  • 반드시 OpenAI의 사용 정책을 준수하세요

주요 한계와 추가 참고사항

  • 브라우저 위주의 자동화에 적합하지만, 운영체제 전체 작업에는 아직 성능이 충분하지 않습니다.

  • 모델은 종종 잘못된 행동이나 오류를 낼 수 있으니 신중히 활용해야 합니다.

  • 최신 샘플 앱, 통합 가이드는 OpenAI 공식 Github 등에서 제공됨을 참고하세요.


이렇게 하면 OpenAI의 컴퓨터 자동 제어 기능을 안전하게 실험해볼 수 있습니다.


출처 : Computer use - OpenAI API