1편에서는 AI가 실제로 브라우저를 열고, 검색하고, 결과를 찾아가는 모습을 직접 확인해봤습니다.
이제 겉으로 보이는 동작은 이해했습니다. 그렇다면 다음 질문은 자연스럽습니다.
이 모든 과정은 코드 안에서 어떻게 구현되어 있을까요?
이번 편에서는 Computer use 샘플 앱의 내부 구조를 직접 뜯어보며,
AI 에이전트가 어떤 흐름으로 동작하는지, 그리고 그 핵심 로직이 어디에 숨어 있는지 하나씩 살펴보겠습니다.
4. 코드 해설 — 내부는 어떻게 동작하나?
Computer use 샘플 앱이 어떤 구조로 돌아가는지 이해하면, 나중에 나만의 에이전트를 만들 때 큰 도움이 됩니다. 전체 프로젝트의 파일 구성부터 살펴보겠습니다.
크게 세 부분으로 나뉩니다. main.py가 전체 앱의 진입점이고, agent/agent.py가 AI 에이전트의 핵심 로직을 담당하며, computers/ 폴더에는 다양한 컴퓨터 환경 구현체가 들어 있습니다.
main.py — 앱의 메인 루프
main.py는 앱의 메인 제어 역할을 합니다. 사용자의 입력을 받아 AI 에이전트에게 전달한 후, 그 결과를 화면에 표시하는 루프를 구현하고 있습니다.
동작 흐름은 간단합니다. 먼저 LocalPlaywrightComputer를 시작해서 AI 에이전트에 넘깁니다. 그다음 사용자로부터 입력을 받고, agent.run_full_turn()을 통해 AI 에이전트가 Assistant 메시지를 반환할 때까지 반복 실행합니다. 앱이 종료될 때까지 이 과정이 계속됩니다.
computer.py — Computer 인터페이스 정의
computer.py는 다양한 환경(로컬 데스크톱, 원격 브라우저 등)에 대응하는 Computer 인터페이스를 정의합니다. 이 인터페이스가 바로 AI가 가진 "눈"과 "손"의 스펙이라고 할 수 있습니다.
주요 메서드를 보면, screenshot()으로 현재 화면의 스크린샷을 캡처하고, click(x, y)으로 지정 좌표를 클릭하며, type(text)으로 키보드 입력을 보냅니다. double_click, scroll, move, keypress, drag 같은 동작도 정의되어 있어서, 사람이 마우스와 키보드로 할 수 있는 거의 모든 조작을 AI가 수행할 수 있습니다.
agent.py가 이 앱의 심장입니다. 여기서 구현된 run_full_turn() 메서드가 바로 앞서 설명한 "보고 → 판단하고 → 행동하고 → 다시 보고"의 루프를 실행합니다.
동작 원리를 단계별로 살펴보면 이렇습니다. 먼저 computer-use-preview 모델에 추론 요청을 보냅니다. 추론 결과가 돌아오면 이를 메시지 리스트에 추가하고, handle_item() 메서드에서 결과 유형에 따라 처리합니다.
결과가 computer_call 유형이면, AI가 제안한 조작(클릭, 타이핑 등)을 실제로 컴퓨터에서 실행하고, 새 스크린샷을 찍어서 다시 메시지 리스트에 추가합니다. 결과가 function_call이면 Function Calling을 실행합니다. 결과가 message 유형이면, AI의 최종 응답이므로 이를 출력하고 루프를 종료합니다.
▶ Agent 클래스 초기화 및 handle_item() 메서드 , run_full_turn() 메서드 전체 코드는 https://github.com/ychoi-kr/gpt5-chatgpt 사이트를 참고하기 바랍니다.
utils.py — 유틸리티 함수
utils.py에는 앱 전반에서 사용되는 유틸리티 함수가 모여 있습니다. 특히 중요한 함수가 세 가지 있습니다.
create_response()는 OpenAI의 Responses API를 호출해서 Computer use의 응답을 받아옵니다. 내부적으로 /v1/responses 엔드포인트에 POST 요청을 보내는 방식입니다.
sanitize_message()는 이미지 URL 등 일부 출력을 마스킹하여 로그 크기를 줄입니다. 디버그 시 스크린샷 데이터가 콘솔을 채우는 것을 방지하는 역할이죠.
check_blocklisted_url()은 현재 표시 중인 URL이 차단 목록에 포함되어 있는지 확인합니다. AI가 위험한 사이트에 접근하지 못하게 막는 안전 장치입니다.
▶ utils.py 주요 함수 코드는 https://github.com/ychoi-kr/gpt5-chatgpt 사이트를 참고하기 바랍니다.
5. 안전하게 사용하기 — Computer use의 과제와 대응
Computer use는 AI가 사람처럼 컴퓨터를 조작하여 업무 효율화와 자동화를 실현할 수 있는 가능성을 지니고 있습니다. 반복적인 사무 작업이나 데이터 입력, 웹사이트 조작 등에서의 활용이 특히 기대되는데요, 현재 단계에서는 다음과 같은 과제도 존재합니다.
조작의 정확성
AI가 제안하는 조작이 항상 정확하다고는 할 수 없습니다. 때때로 의도하지 않은 곳을 클릭하거나, 잘못된 텍스트를 입력할 수 있습니다. 그래서 샘플 앱에서는 Playwright 브라우저라는 격리된 환경에서 실행하는 것입니다.
보안과 프라이버시
AI가 사용자를 대신해 조작하므로, 기밀 정보를 다루거나 인증 과정을 수행할 때는 특별한 주의가 필요합니다. 샘플 앱의 utils.py에 구현된 차단 목록(BLOCKED_DOMAINS)처럼, 위험한 URL에 대한 접근을 제한하는 안전 장치를 반드시 구현해야 합니다.
사용자 신뢰성 확보
사용자가 AI에 작업을 맡길 때 신뢰를 느낄 수 있도록, 투명한 동작과 충분한 피드백 제공이 필요합니다. 샘플 앱에서 --show 옵션으로 실행 중 스크린샷을 표시하거나, pending_safety_checks를 통해 위험한 행동 전에 사용자 확인을 받는 것이 좋은 사례입니다.
CUA의 추론 입출력 구조
참고로, Computer use 모델의 실제 입출력 구조를 살펴보면 이해에 도움이 됩니다. 사용자가 "고양이 이미지를 찾아주세요"라고 입력하면, 모델은 computer_call 타입의 응답을 반환하며, 그 안에 screenshot이나 click 같은 구체적인 action이 포함됩니다.
핵심 정리
Computer use는 AI에게 '눈(스크린샷 인식)'과 '손(마우스/키보드 제어)'을 부여하는 기술입니다. "스크린샷 분석 → 조작 제안 → 실행 → 다시 스크린샷" 루프를 반복하면서, 브라우저 조작부터 업무 자동화까지 가능합니다.
Computer use의 전체 코드 해설과 7가지 내장 도구를 모두 실습하고 싶다면, 《GPT-5와 ChatGPT로 시작하는 멀티모달 AI 프로그래밍 실전 입문》 5장에서 직접 확인해보세요. 텍스트 생성부터 이미지, 음성, 에이전트, 파인튜닝까지 — GPT-5 시대의 AI 프로그래밍을 한 권으로 시작할 수 있습니다.
<TIP> GA 버전 변경 사항(2026년 3월 업데이트)
이 글의 코드는 원서 기준(2025년 8월)으로, computer-use-preview 모델을 사용합니다. 현재 OpenAI는 해당 모델을 deprecated(폐기 예정)로 지정하고, gpt-5.4와 Responses API의 built-in computer 툴을 공식 표준으로 전환했습니다.
코드상 주요 변경점은 두 가지입니다. 모델명이 "computer-use-preview"에서 "gpt-5.4"로 바뀌었고, agent.py에서 툴 타입이 "type": "computer-preview"에서 "type": "computer"로 변경되었습니다. Computer use의 작동 원리(스크린숏 분석 → 조작 제안 → 실행 → 루프)와 전체 아키텍처는 그대로 유지됩니다.
GA 버전 마이그레이션 가이드는 OpenAI 공식 문서를 참고하세요.
https://developers.openai.com/api/docs/guides/tools-computer-use#migration-from-computer-use-preview
여기까지 Computer use 샘플 앱의 구조와 동작 원리를 코드 레벨에서 살펴봤습니다.
이제 AI가 단순히 답변을 생성하는 것을 넘어, 실제로 화면을 보고 판단하고 행동하는 과정이 어떻게 구현되는지 이해되셨을 겁니다.
Computer use는 시작에 불과합니다.
GPT-5 시대의 AI는 텍스트를 넘어 이미지, 음성, 에이전트까지 확장된 멀티모달 환경으로 빠르게 진화하고 있습니다.
이 흐름을 제대로 이해하고, 직접 구현까지 해보고 싶다면
《GPT-5와 ChatGPT로 시작하는 멀티모달 AI 프로그래밍 실전 입문》 도서를 꼭 읽어보시길 바랍니다.
https://wikibook.co.kr/multimodal/