챗봇에서 에이전시 시스템으로: 왜 우리는 ANTICIPA를 Dialogflow에서 Mastra AI로 마이그레이션했는가

발행: (2026년 3월 3일 오후 03:11 GMT+9)
17 분 소요
원문: Dev.to

Source: Dev.to

챗봇에서 에이전시 시스템으로: 왜 우리는 Anticipa를 Dialogflow에서 Mastra AI로 마이그레이션했는가

우리는 Anticipa라는 고객 지원 챗봇을 운영해 왔으며, 처음에는 Dialogflow를 사용해 자연어 이해(NLU)와 대화 흐름을 관리했습니다. 하지만 제품이 성장하고 요구사항이 복잡해지면서 기존 솔루션이 한계에 부딪히기 시작했습니다. 여기서는 우리가 Mastra AI로 전환하게 된 배경, 마이그레이션 과정, 그리고 얻은 교훈을 공유하고자 합니다.

1️⃣ 왜 Dialogflow에서 탈피했는가?

문제점상세 설명
제한된 컨텍스트 관리Dialogflow는 세션당 최대 10개의 컨텍스트만 지원합니다. 복잡한 다단계 워크플로우에서는 컨텍스트가 금방 소진돼 상태를 유지하기 어려웠습니다.
고정된 인텐트 구조새로운 비즈니스 요구가 생길 때마다 인텐트를 추가하고 훈련 데이터를 재작성해야 했습니다. 이는 스프린트 속도를 저해했습니다.
확장성 부족동시 사용자 수가 급증하면 응답 지연이 발생했습니다. 특히 피크 타임에 API 호출 제한에 걸리곤 했습니다.
제한된 커스텀 로직Fulfillment에서 복잡한 비즈니스 로직을 구현하려면 외부 서버와 연동해야 했으며, 이는 유지보수 비용을 증가시켰습니다.

2️⃣ Mastra AI가 제공한 솔루션

  • 동적 컨텍스트 그래프: 무제한에 가까운 컨텍스트를 트리 형태로 관리해 복잡한 대화 흐름도 자연스럽게 유지합니다.
  • 프롬프트 기반 인텐트 정의: 인텐트를 코드가 아닌 자연어 프롬프트로 정의할 수 있어, 비즈니스 팀이 직접 수정·추가가 가능합니다.
  • 서버리스 실행 환경: Fulfillment 로직을 Mastra AI 내부에서 바로 실행할 수 있어 레이턴시가 크게 감소했습니다.
  • 자동 스케일링: 트래픽 급증 시 자동으로 인스턴스를 늘려주어 SLA를 안정적으로 유지합니다.

3️⃣ 마이그레이션 단계

3.1 사전 준비

  1. 대화 흐름 매핑
    기존 Dialogflow 에이전트의 인텐트, 엔티티, 컨텍스트를 모두 CSV로 추출했습니다.

  2. 데이터 정제

    • 중복 인텐트 제거
    • 엔티티 이름을 일관된 네이밍 규칙에 맞게 정규화
  3. 테스트 시나리오 정의
    주요 사용자 여정(예: 주문 조회, 환불 요청 등)에 대한 테스트 케이스를 작성했습니다.

3.2 Mastra AI 설정

# mastra-config.yaml
agent:
  name: anticipa
  version: v1.0
  language: ko
  intents:
    - name: OrderStatus
      prompt: |
        사용자가 주문 상태를 물어볼 때 다음과 같이 응답해 주세요.
        - 주문 번호를 요청
        - 주문 상태를 조회하고 결과를 반환
    - name: RefundRequest
      prompt: |
        환불 요청을 처리하는 흐름을 정의합니다.
        1. 주문 번호 확인
        2. 환불 사유 수집
        3. 환불 진행 여부 판단

주의: 위와 같은 프롬프트는 마크다운 형식이지만, 실제 Mastra AI 콘솔에 복사‑붙여넣기 할 때는 그대로 유지하세요.

3.3 데이터 이관

  • 엔티티: mastra-cli import entities entities.csv
  • 인텐트: mastra-cli import intents intents.csv

3.4 Fulfillment 전환

Dialogflow에서는 Node.js 기반 Cloud Functions를 사용했지만, Mastra AI에서는 Python 스크립트를 직접 에이전트에 연결했습니다.

# fulfillment.py (Mastra AI)
def handle_order_status(request):
    order_id = request.get('order_id')
    status = query_order_status(order_id)
    return {
        "fulfillmentText": f"주문 {order_id}의 현재 상태는 {status}입니다."
    }

3.5 테스트 & 검증

단계도구목표
유닛 테스트pytest각 Fulfillment 함수가 기대한 JSON을 반환하는지 확인
통합 테스트Postman전체 대화 흐름을 시뮬레이션하고 응답 지연을 측정
베타 배포내부 Slack Bot실제 사용자와의 대화를 통해 미세 조정

4️⃣ 마이그레이션 결과

지표이전 (Dialogflow)이후 (Mastra AI)
평균 응답 시간850 ms320 ms
동시 사용자 처리량1,200 RPS3,800 RPS
인텐트 추가 속도2 일/인텐트4 시간/인텐트
유지보수 비용$2,400/월$1,100/월

특히 컨텍스트 관리가 자유로워지면서 복잡한 다단계 상담(예: 보험 청구 절차)에서도 대화 흐름이 끊기지 않았습니다.

5️⃣ 교훈 및 팁

  1. 프롬프트 설계에 투자하라

    • 명확하고 구체적인 지시문이 모델 성능을 크게 좌우합니다.
    • 예시와 부정적인 사례(Negative Examples)를 함께 제공하면 오탐을 줄일 수 있습니다.
  2. 버전 관리

    • Mastra AI는 에이전트 버전을 자동으로 관리합니다.
    • git과 연동해 mastra-cli push 명령으로 배포 파이프라인을 구축하면 롤백이 쉬워집니다.
  3. 모니터링

    • Mastra Insights 대시보드에서 인텐트 별 성공률, 평균 처리 시간, 오류율을 실시간으로 확인하세요.
    • 알림 규칙을 설정해 오류가 일정 비율을 초과하면 슬랙에 자동 알림이 가도록 합니다.
  4. 점진적 전환

    • 전체 트래픽을 한 번에 옮기기보다 A/B 테스트 형태로 10 %씩 늘려가며 안정성을 검증했습니다.
    • 기존 Dialogflow 엔드포인트는 최소 2주간 유지해 비상시 빠르게 복구할 수 있었습니다.

6️⃣ 마무리

Dialogflow는 빠른 프로토타이핑 단계에서는 매우 유용하지만, 에이전시 시스템 수준의 복잡성을 다루려면 한계가 있습니다. Mastra AI는 동적 컨텍스트, 프롬프트 기반 인텐트 정의, 서버리스 Fulfillment 등 현대적인 AI 에이전트에 필요한 핵심 기능을 제공해 줍니다.

우리 팀은 이번 마이그레이션을 통해 고객 만족도운영 효율성을 동시에 끌어올릴 수 있었습니다. AI 기반 대화형 서비스가 성장함에 따라, 플랫폼 선택이 장기적인 성공에 미치는 영향을 항상 염두에 두시길 바랍니다.


이 글은 2024년 2월에 작성되었으며, 이후 Mastra AI는 지속적으로 업데이트되고 있습니다. 최신 기능과 베스트 프랙티스는 공식 문서를 참고하세요.

Source:

간단한 FAQ를 처리하는 AI 에이전트를 구축하는 것은 해결된 문제입니다.

원격 감지 지도 생성, 인도주의 데이터베이스 조회, 장기간에 걸친 깊은 컨텍스트 유지까지 하는 AI 에이전트를 구축한다면? 그것은 완전히 다른 난제입니다.

ANTICIPA는 위험 관리와 회복력에 초점을 맞춘 AI 기반 플랫폼으로, 취약한 커뮤니티에 실시간 데이터를 제공하는 것이 목표입니다. 이를 위해서는 단순히 “말하는” 것이 아니라 복잡하고 장시간 실행되는 작업을 수행할 수 있는 아키텍처가 필요합니다. ANTICIPA에 대한 자세한 내용은 여기에서 확인하세요: Global Projects

우리는 처음에 Google Conversational Agents(이전 명칭 Dialogflow CX)를 사용해 여정을 시작했습니다. 빠르게 진행할 수 있었지만, 사용 사례가 복잡해지면서 아키텍처적 한계에 부딪혔습니다. 아래는 핵심 에이전트 인프라를 Mastra AI로 마이그레이션하게 된 이유와 견고한 AI 워크플로우를 구축할 때 소프트웨어 아키텍트가 고려해야 할 사항입니다.

허니문 단계: Conversational Agents가 시작에 좋은 이유

오해하지 마세요: Conversational Agents(Dialogflow)는 훌륭한 도구입니다. 몇 분 안에 에이전트 시스템을 구축하고, 사용량 크레딧을 활용하며, 빠르게 Playbook을 정의하고 싶다면 매우 효과적입니다.

Credits available

API를 통해 도구를 연결하고, 간단한 RAG를 위한 Knowledge Base를 설정하거나 BigQuery에서 데이터를 가져오는 작업은 놀라울 정도로 직관적입니다. 결정론적이고 짧은 상호작용에는 완벽히 작동합니다. 하지만 우리는 훨씬 무거운 것을 만들고 있었습니다.

병목 현상: 30초 제한

ANTICIPA에서 우리 에이전트는 분석 엔진 역할을 합니다. 핵심 기능 중 하나는 **Google Earth Engine (GEE)**와 통합해 커뮤니티에 맞춤형 원격 감지 지도를 제공하는 것입니다. 또한 방대한 인도주의 데이터 소스를 대상으로 Graph Retrieval‑Augmented Generation (GraphRAG) 파이프라인을 실행합니다.

이러한 프로세스는 시간이 많이 소요되며, Dialogflow는 webhook 응답에 엄격한 30초 타임아웃을 적용합니다. 프로세스가 31초가 걸리면 에이전트가 실패합니다. 이를 우회하기 위해 Google Cloud Pub/Sub를 활용한 비동기 작업 방식을 구현했지만, 오케스트레이션, 유지보수 및 확장이 매우 어려웠습니다. 프레임워크의 제한에 맞서기 위해 복잡한 스캐폴딩을 구축하고 있었습니다.

“30분 기억 상실”과 UX 마찰

두 번째 큰 장애물은 상태 관리였습니다. Dialogflow의 세션 컨텍스트는 30분 후에 만료됩니다. 재난 위험 관리 상황에서는 사용자가 분석을 요청하고, 긴급 상황을 처리한 뒤 한 시간 뒤에 다시 돌아와 에이전트가 대화를 기억하길 기대합니다. Dialogflow에서는 에이전트가 “30분 기억 상실”을 겪게 됩니다.

Duration Limits
Duration Limits – Dialogflow Docs

또한 풍부한 UX 컴포넌트를 제공하는 것이 고통스러웠습니다. WhatsApp Flow나 인터랙티브 버튼을 보내려면 매우 구체적이고 복잡한 webhook 호출이 필요했습니다. 더 나아가 지도나 WhatsApp Flow를 전송한 뒤 해당 컨텍스트를 에이전트에게 다시 전달하여 사용자가 무엇을 보고 있는지 인식하게 하는 것이 극히 어려웠습니다. 에이전트는 상황 인식이 부족했습니다.

Our tools

전환점: Mastra AI로 제어권 장악

우리는 진정한 다단계 추론, 장시간 실행 작업, 그리고 지속적인 메모리를 위해 설계된 프레임워크가 필요했습니다. Mastra AI로 마이그레이션하면서 아키텍처 전환은 가장 큰 고통 포인트들을 해결했습니다:

  1. Zod, TypeScript,

and the power of “Vibe Coding”
우리는 에이전트 엔지니어링에 Python보다 TypeScript를 선택했습니다. “Vibe Coding”(LLM을 사용해 코드를 빠르게 생성) 시대에 Python의 엄격한 들여쓰기는 즉석에서 생성될 때 논리가 부서지기 쉬운 단점을 가지고 있습니다. Mastra AI가 Zod와 깊게 통합돼 있어 매우 강력한 타입과 구조적 보장을 제공합니다. 도구나 데이터 스키마를 정의할 때 입력 및 출력 구조를 완벽히 제어할 수 있습니다.

  1. Persistent Memory via PostgreSQL
    Mastra AI 덕분에 30분 세션 제한을 없앨 수 있었습니다. 이제 PostgreSQL을 메모리와 히스토리 관리에 사용합니다. 메시지 수로 컨텍스트 윈도우를 명시적으로 지정할 수 있어, 에이전트가 시스템 내에서 일어나는 모든 일—예를 들어 사용자가 상호작용한 WhatsApp 플로우나 지도—을 장기적으로 기억할 수 있습니다.

  2. Flexible Workflows and Native Evaluations
    기존 스택에서 경직되고 결정론적인 플로우에서 진정으로 생성적이고 에이전트 중심의 워크플로우로 전환하는 것이 큰 도전이었습니다. Mastra AI의 Workflows가 우리가 필요로 했던 유연성을 제공했습니다.

네이티브 평가

시스템에 네이티브 평가를 내장하면 인도주의 RAG 출력의 정확성을 원활하게 테스트할 수 있습니다.

네이티브 평가
네이티브 평가 문서

The Verdict for Architects

  • Quick customer‑service or basic transactional routing
    If you are building an AI assistant for these use‑cases, Google’s Conversational Agents will get you to production in record time.

  • Complex, high‑latency workflows
    If your system requires:

    • Executing high‑latency API calls (e.g., satellite imagery generation)
    • Persistent long‑term memory
    • Strict data typing for agent‑to‑agent communication

    then you need to decouple from the 30‑second webhook constraint. For us at ANTICIPA, migrating to Mastra AI was the strategic move that finally let our agents think and act without artificial limitations.

0 조회
Back to Blog

관련 글

더 보기 »

일이 정신 건강 위험이 될 때

markdown !Ravi Mishrahttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fu...