엔터프라이즈 AI 캘린더 에이전트 구축: Google의 (ADK)와 Gemini 2.5와 함께한 여정

발행: (2025년 12월 14일 오후 11:59 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

Introduction

우리는 최근 Google과 Kaggle이 주관한 5일 AI 에이전트 집중 과정을 마쳤습니다. 과정을 시작하기 전엔 LLM을 주로 강력한 텍스트 생성기로만 생각했었습니다. 이제는 복잡한 작업을 추론·계획·실행할 수 있는 자율 시스템의 “두뇌”로 바라보고 있습니다. 이 글에서는 저의 여정, AI 에이전트에 대한 이해를 바꾼 개념들, 그리고 최종 프로젝트인 기업용 회의 일정 자동화 AI 캘린더 에이전트에 대해 자세히 소개합니다.

Key Concepts

  • Tools – LLM에게 외부 시스템과 상호작용할 “손”을 제공합니다.
  • Reasoning Traces (Chain‑of‑Thought) – 모델의 사고 과정을 명시적으로 드러냅니다.
  • ReAct pattern – 추론과 행동을 하나의 루프에서 결합합니다.

또한 다음과 같은 조합 가능한 에이전트 패턴을 탐구했습니다:

  • Routing – 작업을 전문화된 서브‑에이전트에게 전달합니다.
  • Evaluator‑Optimizer – 한 에이전트가 다른 에이전트의 작업을 비판합니다.
  • Orchestrator‑Workers – 중앙 두뇌가 병렬 작업을 관리합니다.

Capstone Project: AI Calendar Agent

Problem Statement

기업에서 회의를 잡는 일은 단순히 시간을 정하는 것을 넘어 다음과 같은 복잡성을 포함합니다:

  • 여러 시간대에 걸친 다양한 캘린더 확인
  • 적절한 수용 인원과 편의시설을 갖춘 회의실 찾기
  • 원격 동료의 휴일 및 근무 시간 고려
  • “가능하면 아침에”와 같은 부드러운 제약 조건 처리

Architecture

우리는 **Google Agent Development Kit (ADK)**와 Gemini 2.5‑Flash를 활용해 계층형 다중 에이전트 설계로 에이전트를 구축했습니다:

Sub‑AgentResponsibility
Coordinator전문화된 에이전트에게 작업을 위임합니다.
Availability CheckerADK 도구를 사용해 Google Calendar API에서 FreeBusy 데이터를 병렬로 가져와 확인 시간을 ~10 초에서 ~1.5 초로 단축합니다.
Facility Manager수용 인원과 편의시설을 기준으로 회의실을 검색합니다.
Event Validator정책을 적용하고 휴일과 대조하여 검증합니다.
Event CreatorGoogle Calendar API와 연동해 이벤트를 생성합니다.

Challenges & Solutions

Context Window Management

Problem: 캘린더 API에서 반환되는 긴 JSON 응답이 모델의 컨텍스트 윈도우를 가득 채웠습니다.
Solution: 오래된 대화를 스마트하게 요약하면서 최신 상호작용은 그대로 유지하는 Context Truncation Strategy를 구현해 토큰 사용량을 약 70 % 절감했습니다.

Debugging Agent Behavior

Problem: 전통적인 디버깅(변수 확인)만으로는 에이전트를 충분히 파악할 수 없습니다.
Solution: [PLANNING], [DECISION], [VALIDATION] 같은 태그와 함께 에이전트 내부 독백을 기록하는 ReasoningEngine을 개발했습니다. 이를 통해 “블랙 박스”를 투명하게 만들고 프롬프트를 미세 조정할 수 있었습니다.

Memory & Persistence

ADK의 SQLite 영속성 레이어를 활용해 에이전트는:

  • Resume sessions – 대화를 중단했다가 나중에 이어서 진행할 수 있습니다.
  • Recall preferences – “앨리스는 금요일에 재택근무한다”와 같은 장기적인 사실을 기억합니다.

Infinite Loop Trap

Problem: 에이전트가 가용성을 무한히 확인하는 상황에 빠지는 경우가 있었습니다.
Solution: 엄격한 종료 조건과 “포기” 백업 로직을 추가했습니다.

Tool Definition

도구의 이름과 설명을 명확히 정의하는 것이 필수적이었습니다. 정의가 모호하면 LLM이 도구를 올바르게 호출하지 못합니다.

Team Collaboration

다양한 시간대에 걸쳐 원격으로 작업하면서 간결한 커뮤니케이션과 솔직한 진행 상황 보고가 중요했습니다.

Lessons Learned

  • 루프 기반 에이전트 아키텍처는 지속적인 관찰·추론·행동·반성을 가능하게 합니다.
  • 잘 정의된 도구와 명시적인 추론 트레이스는 신뢰성을 크게 향상시킵니다.
  • 에이전트를 디버깅하려면 코드 실행뿐 아니라 사고 과정에 대한 가시성이 필요합니다.
  • 메모리와 영속성은 실제 활용도에 있어 핵심 요소입니다.

Future Work

  1. Phase 2: 팀원, 회의실, 휴일 이름에 대한 퍼지 검색을 추가합니다.
  2. Phase 3: 세분화된 권한 부여와 접근 제어를 구현합니다.

Code Repository

전체 소스 코드는 GitHub에서 확인할 수 있습니다:
TheCapstoneTeam/calendar_agent

Acknowledgements

Google과 Kaggle에게 이 놀라운 학습 기회를 제공해 주신 것에 감사드립니다!

Back to Blog

관련 글

더 보기 »