How I Coded a USEFUL AI Agent in 48 Hours (from scratch)
1. AI 에이전트의 핵심 개념 - ChatGPT에 도구를 준다면?
AI 에이전트를 가장 쉽게 설명하자면 "도구를 사용할 수 있는 ChatGPT"입니다. 일반적인 챗봇은 대화만 할 수 있지만, 에이전트는 실제로 작업을 수행할 수 있는 도구들을 갖추고 있죠.
크리스의 일일 계획 앱 Ellie를 위한 에이전트는 다음과 같은 도구들을 사용할 수 있습니다:
- 도구 호출 루프의 이해 AI 에이전트의 핵심은 "루프"입니다. 사용자의 요청을 받으면 필요한 도구를 호출하고, 그 결과를 보고 추가 도구가 필요한지 판단합니다. 충분한 정보를 얻을 때까지 이 과정을 반복합니다.
- 실제 예시로 보는 작동 원리 "이번 주 언제 헬스장에 갈 수 있을까?"라는 질문을 받으면:
- 단순하지만 강력한 구조 복잡해 보이지만 실제로는 LLM + 도구 정의 + 루프 처리만 있으면 됩니다. 이 간단한 구조로 놀라운 기능을 구현할 수 있습니다.
2. 첫 번째 도구 구현하기 - 작업 생성 기능
크리스가 가장 먼저 구현한 것은 '작업 생성' 도구입니다. 이 과정을 통해 AI 에이전트 개발의 기본 패턴을 이해할 수 있습니다.
도구 정의의 3요소
- 이름: create_task
- 설명: "새로운 작업을 생성합니다"
- 파라미터: 작업 제목, 날짜, 우선순위 등
- 도구 정의 코드 구조 도구는 JSON 형식으로 정의됩니다. 특히 '설명' 부분이 중요한데, LLM이 이를 읽고 언제 이 도구를 사용해야 할지 판단하기 때문입니다.
- 실제 실행 함수 구현execute_tool 함수에서 도구 이름을 확인하고, 해당하는 백엔드 API를 호출합니다. 크리스의 경우 이미 존재하는 API를 활용해 몇 줄의 코드로 구현했습니다.
- 결과 반환의 중요성 도구 실행 결과를 LLM에게 명확히 전달해야 합니다. "작업이 성공적으로 생성되었습니다" 같은 메시지로 다음 행동을 결정할 수 있게 합니다.
3. 복잡한 시나리오 처리 - 여러 도구의 연계
단일 도구만으로는 한계가 있습니다. 실제 유용한 에이전트는 여러 도구를 연계해서 사용할 수 있어야 합니다.
"치과 예약을 1시간 앞으로 옮겨줘"라는 요청을 처리하려면:
- 먼저 '치과 예약' 작업을 검색
- 해당 작업의 시간을 1시간 앞으로 업데이트
- 검색 도구 추가 작업을 검색하는 도구를 추가합니다. 설명, 라벨, 날짜 범위로 검색할 수 있도록 파라미터를 정의합니다.
- 업데이트 도구 구현 검색 결과로 얻은 작업 ID를 사용해 시간, 제목, 상태 등을 변경할 수 있는 도구를 만듭니다.
- 도구 간 데이터 전달 첫 번째 도구의 결과가 두 번째 도구의 입력이 됩니다. LLM이 이 흐름을 자연스럽게 이해하고 처리하는 것이 인상적입니다.
4. 캘린더 통합의 도전 - 복잡성 다루기
캘린더 기능은 Google, Outlook, Apple 캘린더를 모두 지원해야 하므로 복잡도가 높습니다. 하지만 기존 백엔드 코드를 활용하면 쉽게 구현할 수 있습니다.
- 캘린더 목록 조회 사용자가 연결한 모든 캘린더를 가져오고, 주 캘린더를 식별하는 도구를 만듭니다.
- 이벤트 조회 및 분석 특정 캘린더의 이벤트를 가져와 빈 시간을 찾는 로직을 구현합니다. LLM이 이를 해석해 사용자에게 적절한 시간을 제안합니다.
- 다중 사용자 일정 조정 "시실리아와 나의 공통 시간 찾기"같은 복잡한 요청은 초기에 어려움이 있었습니다. 시스템 프롬프트에 구체적인 워크플로우를 명시하여 해결했습니다.
5. 프롬프트 엔지니어링의 중요성 - AI를 올바르게 가이드하기
AI 에이전트가 복잡한 작업을 수행하려면 명확한 지침이 필요합니다. 크리스가 사용한 프롬프트 전략을 살펴봅시다.
- 구체적인 워크플로우 제시 "두 사람의 일정을 조정할 때는 다음 순서를 따르세요:
- 각자의 캘린더 목록 가져오기
- 주 캘린더 식별하기
- 두 캘린더의 이벤트 조회
- 겹치지 않는 시간 찾기"
- 예시를 통한 학습 구체적인 예시를 프롬프트에 포함시키면 LLM의 이해도가 크게 향상됩니다.
- 모델 선택의 중요성 GPT-4o mini는 빠르고 저렴하지만 복잡한 작업에는 한계가 있었습니다. 특정 작업을 위해 더 강력한 모델을 호출하는 도구를 만드는 것도 좋은 전략입니다.
6. Zapier MCP 통합 - 게임 체인저
가장 혁신적인 부분은 Zapier MCP(Model Context Protocol) 통합입니다. 이를 통해 직접 구현하지 않고도 수천 개의 앱과 연동할 수 있습니다.
실제 사용 예시 "브라이언이 서버 비용 검토하라고 Slack 메시지 보냈는데, 찾아서 오늘 할 일로 만들어줘"
- MCP 클라이언트 설정 약 30분, 100줄 미만의 코드로 MCP 클라이언트를 구현했습니다. Anthropic의 문서를 따라 JavaScript로 구현하면 됩니다.
- 도구 통합 방식 Zapier의 도구들은 기존 Ellie 도구 배열에 자동으로 추가됩니다. 에이전트는 이를 네이티브 도구처럼 사용할 수 있습니다.
- 무한한 확장 가능성 GitHub, Linear, Todoist, Gmail 등 Zapier가 지원하는 모든 서비스와 연동 가능합니다. "Linear의 오늘 작업을 모두 Ellie로 가져와줘"같은 복잡한 워크플로우도 가능합니다.
Zapier MCP - Connect your AI to any app instantly
7. 실전 AI 코딩 팁 - 2일 만에 완성한 비결
크리스가 단 48시간 만에 실용적인 AI 에이전트를 만들 수 있었던 비결을 정리해보겠습니다.
- 기존 코드 최대한 활용 백엔드 API가 이미 있다면 도구 구현은 정말 간단합니다. 새로 만들지 말고 있는 것을 감싸기만 하세요.
- 단순하게 시작하기 채팅 UI는 Cursor로 3개 프롬프트만에 생성했습니다. 핵심 기능에 집중하고 UI는 나중에 개선하세요.
- 안전장치 필수 무한 루프 방지를 위해 최대 3회 루프 제한을 설정했습니다. API 비용 폭탄을 막는 필수 안전장치입니다.
- 점진적 복잡도 증가
- 실시간 테스트와 반복 각 기능을 추가할 때마다 즉시 테스트하고 개선합니다. 완벽을 추구하지 말고 작동하는 버전을 먼저 만드세요.
- 문서화의 힘 Anthropic과 Zapier의 문서를 Cursor에 입력하면 대부분의 구현 코드를 자동으로 생성할 수 있습니다.
8. 향후 발전 방향과 가능성
크리스는 이 프로토타입을 실제 제품으로 발전시킬 계획입니다.
- 모바일 통합 iPhone 버전에 음성 인식을 추가하여 "시리야"처럼 사용할 수 있게 만들 예정입니다.
- 베타 테스트 전략 소수의 사용자에게 먼저 공개하여 엣지 케이스를 발견하고 실용성을 검증합니다.
- 비용 최적화 LLM 비용이 계속 낮아지고 있어 이제는 대규모 배포가 현실적입니다.