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를 활용하려면,
모델에게 원하는 작업과 환경 정보를 함께 요청
모델이 제안한 액션(예: 클릭, 타이핑 등)을 코드로 실행
화면 캡처 후 베이스64 형식으로 모델에 재전송
위 과정 반복
# 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에 담아 재요청해야 합니다.
실제 구현 루프
모델이 더 이상 추천 동작을 내지 않을 때까지,
모델의 행동 제안 받기
환경(브라우저/VM 등)에 해당 동작 실행
화면 캡처 후 모델에 다시 전달
필요 시 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의 컴퓨터 자동 제어 기능을 안전하게 실험해볼 수 있습니다.