GUI Agent 로 키오스크의 어려움을 극복해볼순 없을까?

시도하고자 했던 것과 그 이유를 알려주세요.

우리 팀은 AI로 세대 간의 지식 격차를 줄이고, 선한 영향력을 나누자는 미션 아래, 디지털 기기 조작에 어려움을 겪는 분들을 돕는 키오스크 자동 제어 에이전트(Kiosk Agent)를 개발했습니다. 단순히 정보를 제공하는 AI를 넘어, 사용자의 음성이나 간단한 명령을 받아 실제 안드로이드 키오스크 화면을 보고, 추론하고, 직접 조작(VLA: Vision-Language-Action)하는 에이전트를 만드는 것이 목표였습니다.

KakaoTalk_Video_2026-01-14-17-58-03.mp4
20.9MB

진행방법

어떤 도구를 사용했고, 어떻게 활용하셨나요?

  • VLM (Vision-Language Model): Gemini 3 Flash 및 Pro 모델을 활용하여 고차원적인 화면 분석과 정교한 추론을 수행했습니다.

  • Framework: 에이전트의 복잡한 상태 관리와 안정적인 루프 제어를 위해 LangGraph를 사용했습니다.

  • Communication: 에이전트와 UI 간의 표준화된 실시간 상태 공유를 위해 AG-UI Protocol(SSE 기반)을 구현했습니다.

  • Interface: Google Cloud STT와 CosyVoice3 TTS를 통합하여 자연스러운 음성 상호작용 인터페이스를 구축했습니다.

사용한 프롬프트 전문

Plaintext

당신은 안드로이드 키오스크 화면을 조작하는 전문 에이전트입니다.
현재 화면 스크린샷과 사용자의 요청이 주어집니다.

1. 화면의 버튼, 텍스트, 아이콘 위치를 분석하세요.
2. 사용자의 요청을 달성하기 위한 다음 최적의 액션을 결정하세요.
3. 만약 사용자의 주관적인 선택(예: 메뉴 옵션)이 필요하다면 INTERRUPT 액션을 사용해 질문하세요.

출력 형식 (JSON):
{
  "thought": "사용자가 아메리카노를 주문했으므로 커피 메뉴 버튼을 찾습니다.",
  "action": "CLICK",
  "coordinates": [x, y],
  "plan": ["메뉴 선택", "장바구니 담기", "결제하기"]
}

결과와 배운 점

배운 점과 나만의 꿀팁

  • VLA 패러다임의 효율성: 화면을 시각적으로 이해하는 Vision 기반 에이전트가 복잡한 키오스크 UI 환경에서 텍스트 기반보다 훨씬 유연하게 작동함을 확인했습니다.

  • LangGraph를 통한 제어: 에이전트의 논리 흐름을 상태 기계(State Machine)로 관리하여 휴먼 인 더 루프(HITL) 기능을 구현함으로써 사용자 확인이 필요한 시점에 정확히 멈추고 질문하는 안정성을 확보했습니다.

  • 실시간 모니터링: AG-UI 프로토콜을 통해 에이전트의 사고 과정과 조작 상태를 실시간 대시보드로 시각화하여 신뢰도를 높였습니다.

과정 중의 시행착오

  • 정밀한 좌표 제어: VLM이 분석한 좌표를 실제 안드로이드 ADB 명령 좌표로 매핑하는 과정에서 해상도 보정 등 정밀한 튜닝이 필요했습니다.

  • 복잡한 레이아웃 분석: 복잡한 키오스크 화면에서 정확한 버튼 위치를 인식하기 위해 Gemini 3 Pro와 같은 고성능 모델의 추론 능력이 필수적이었습니다.

앞으로의 계획

  • 온디바이스 확장: Gemma 모델을 통합하여 로컬 환경에서 실행 가능한 경량 에이전트를 구현할 예정입니다.

  • 멀티 에이전트 협업: CrewAI와 같은 프레임워크를 활용하여 더 복잡한 작업을 수행하는 멀티 에이전트 시스템으로 확장하고자 합니다.

링크 : https://github.com/Pseudo-Lab/Agent_Studio

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요