구글 Gemini API 기반, 아이들 학습을 돕는 똑똑한 멀티모달 에이전트 'Sweets Vault' 등장!
구글 Agent Development Kit(ADK)와 Gemini API를 활용하여 아이들의 학습을 돕는 멀티모달 에이전트(Multimodal Agent) 'Sweets Vault'를 개발
이미지 업로드(Image Upload)를 통한 학습 내용 검증, 음성 대화(Verbal Interaction), 하드웨어 연동(Hardware Integration)을 통해 인터랙티브한 학습 경험 제공
Gemini API의 멀티모달 기능과 ADK를 사용하여 에이전트의 상태 관리(State Management), 도구 호출(Tool Calling), 하드웨어 제어(Hardware Control) 구현
로컬 환경(Local Environment)에서 실행되며, FT232H USB to GPIO 컨버터 및 Raspberry Pi를 활용하여 물리적 하드웨어와 연결
향후 Gemini Live API를 활용한 음성 및 비디오 입출력 지원, 전자기석(Electro Magnet)을 활용한 물리적 잠금 장치 완성 계획
멀티모달 에이전트(Multimodal Agent) 아키텍처 분석
본 시스템은 Gemini API를 핵심 엔진으로, ADK(Agent Development Kit)를 통해 에이전트의 동작을 제어한다. 특히, 멀티모달 입력(Multimodal Input)을 활용하여 이미지와 텍스트를 처리하고, 도구 호출(Tool Calling) 기능을 통해 하드웨어 제어 명령을 실행한다.
FastAPI 기반의 백엔드(Backend)는 에이전트의 로직을 담당하며, 상태 관리(State Management)를 통해 대화의 맥락을 유지한다.
FT232H USB to GPIO 컨버터와 Raspberry Pi를 활용하여 물리적 하드웨어와 연결, REST API를 통해 LED Matrix 제어
결과적으로, Gemini API의 강력한 성능과 ADK의 유연성을 결합하여, 실세계(Real World)와 상호작용하는 에이전트를 구축했다.
Gemini API를 활용한 멀티모달 검증
본 시스템은 Gemini API의 멀티모달 기능을 활용하여 아이들의 학습 내용을 검증한다. 이미지 입력(Image Input)을 통해 학습 내용을 시각적으로 확인하고, 자연어 처리(Natural Language Processing)를 통해 질문에 대한 답변을 평가한다.
프롬프트 엔지니어링(Prompt Engineering)을 통해 에이전트의 역할과 동작 방식을 명확하게 정의
상태 관리(State Management)를 통해 대화의 흐름을 추적하고, 할루시네이션(Hallucination)을 방지
다국어 지원(Multilingual Support)을 위해 AGENT_LANGUAGE 변수를 활용하여, 영어와 폴란드어(Polish)를 지원
결과적으로, 멀티모달 검증(Multimodal Verification)을 통해 아이들의 학습 참여를 유도하고, 정확한 평가를 수행한다.
상태 관리(State Management) 및 도구 호출(Tool Calling) 구현
본 시스템은 ToolContext를 활용하여 에이전트의 상태를 관리하고, 도구 호출(Tool Calling)을 통해 하드웨어를 제어한다. ToolContext는 세션 상태를 저장하고, 각 도구의 실행 결과를 추적하는 데 사용된다.
_get_task_status 함수를 통해 특정 작업의 완료 여부를 확인하고, _set_task_status 함수를 통해 상태를 업데이트
get_progress, complete_task, unlock_drawer 등 3가지 도구를 정의하여, 작업 진행 상황 확인, 작업 완료 처리, 서랍 잠금 해제 기능 구현
상태 관리(State Management)를 위해 플랫 구조(Flat Structure)를 사용, 복잡한 시스템에서는 데이터베이스(Database) 사용 고려
결과적으로, 상태 관리(State Management)와 도구 호출(Tool Calling)을 통해 에이전트의 동작을 제어하고, 하드웨어와 연동한다.
하드웨어 통합(Hardware Integration) 및 물리적 상호작용
본 시스템은 FT232H USB to GPIO 컨버터와 Raspberry Pi를 활용하여 물리적 하드웨어와 연결하고, unlock_drawer 도구를 통해 서랍을 제어한다. HardwareInterface 클래스를 통해 하드웨어 제어 로직을 캡슐화한다.
LED Matrix 제어를 위해 Raspberry Pi의 REST API를 활용
전자기석(Electro Magnet)을 사용하여 서랍을 잠금 해제하는 기능 구현 예정
멀티모달 검증(Multimodal Verification) 성공 시, unlock_drawer 도구를 호출하여 물리적 보상 제공
결과적으로, 물리적 상호작용(Physical Interaction)을 통해 아이들의 학습 동기를 부여하고, 몰입감 있는 학습 경험을 제공한다.
에이전트 프롬프트(Agent Prompt) 설계
본 시스템은 프롬프트 엔지니어링(Prompt Engineering)을 통해 에이전트의 역할과 동작 방식을 명확하게 정의한다. 프롬프트(Prompt)는 에이전트의 행동 지침, 사용자 역할, 작업 검증 절차 등을 포함한다.
MAIN RULES 섹션에서 에이전트의 역할, 사용 언어, 사용자 유형 정의
TASK VERIFICATION PROCESS 섹션에서 작업 검증 절차를 단계별로 설명
SUCCESS AND REWARD 및 FAILURE 섹션에서 성공 및 실패 시의 동작 정의
결과적으로, 정교한 프롬프트(Prompt) 설계를 통해 에이전트의 정확성과 신뢰성을 높이고, 사용자 경험을 개선한다.
향후 발전 방향 및 기술적 고려 사항
본 시스템은 Gemini Flash API를 사용하여 높은 성능과 멀티모달 기능을 제공하지만, 텍스트 입력과 텍스트 출력을 지원한다. 향후 Gemini Live API를 활용하여 음성 및 비디오 입출력을 지원할 계획이다.
전자기석(Electro Magnet)을 활용한 물리적 잠금 장치 완성 예정
상태 관리(State Management) 및 도구 호출(Tool Calling) 기능 개선
확장성(Scalability) 및 유지보수성(Maintainability) 향상을 위한 아키텍처 개선
결과적으로, 지속적인 기술 발전(Continuous Technological Advancement)을 통해 더욱 향상된 학습 경험을 제공할 것으로 기대된다.