언어 동반자 AI 에이전트 구축

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

Source: Dev.to

배경

지난 몇 주 동안 Google의 ADK(Agent Development Kit)를 학습하고 AI 에이전트 과정의 캡스톤 프로젝트를 진행했습니다. 프론트엔드 배경(최근 백엔드 작업 포함)에서 AI 에이전트의 UI/UX를 탐구하고, 사용자가 컨텍스트를 전환하지 않고도 작업을 수행할 수 있는 특화된 인터페이스를 실험하고 싶었습니다.

문제 정의

몇 년째 중국어(만다린)를 배우고 있으며 AI를 언어 동반자로 활용하고 있습니다. 큰 불편함은 대화, 편집기, 브라우저 사이를 오가며 비디오나 추가 자료를 찾아야 한다는 점입니다. 대화, 설명, 인터랙티브 퀴즈가 한 곳에 모여 있기를 원했습니다.

초기 설정 문제

  • 개발 환경 – Kaggle 노트북은 학습에 좋지만 프로덕션 수준 프로젝트에는 제한적입니다.
  • Python 버전 차이 – ADK 예제는 학습 자료와 약간 다른 Python 설정을 사용하고 있어 어떤 도구를 채택해야 할지 고민했습니다. uvicorn과 타입이 지정된 Python을 도입하고, 결국 Dockerfile을 만들어 환경을 격리했습니다.

몇 일간 설정에 매달린 뒤, 환경을 완벽히 만들기보다 프롬프트와 에이전트 아키텍처를 다듬는 데 초점을 옮겼습니다.

에이전트 아키텍처

서브‑에이전트

  1. Prompt Inspector – 사용자의 목표를 분석합니다.
  2. Meaning Extractor – 입력의 의미론적 의미를 파악합니다.
  3. Vocabulary Retriever – 관련 어휘 항목을 찾습니다.
  4. Pattern Finder – 일반적인 언어 패턴을 식별합니다.
  5. Summarizer – 이전 에이전트들의 출력을 종합합니다.

배운 교훈

  • docstring에 작은 변화(예: “English language” 언급)만으로도 에이전트가 비영어 입력을 거부하게 되었습니다.
  • Summarizer가 처음엔 서브‑에이전트 결과를 무시하고, 때때로 자신의 요약을 다시 요약했습니다. 명시적인 조건문을 추가해 이 행동을 해결했습니다.

상호작용 흐름

  1. 구문 설명 – 에이전트가 특정 문장을 분해해 의미, 어휘, 패턴을 제공합니다.
  2. 주제 설명 – 에이전트가 예시 구문을 생성하고, 각 구문에 동일한 서브‑에이전트를 적용해 보다 넓은 맥락 이해를 제공합니다.

메모리와 상태

코스 노트북에서는 세션 및 장기 메모리 처리를 쉽게 할 수 있다고 제안했지만, ADK 러너와 세션을 설정하는 것이 번거로웠습니다. 프로토타입에서는 지속 메모리를 생략하고 핵심 기능에 집중했습니다.

Human‑in‑the‑Loop & Elicitation

elicitation이라 불리는 Human‑in‑the‑Loop 패턴을 탐색했습니다. 외부 호출을 조정하기 위해 FastMCP를 사용해 MCP(Multi‑Component Protocol) 서버를 구축했으며, 이는 요청 처리를 단순화합니다. 공식 클라우드 서비스에 아직 배포되지 않아 로컬에서 스트리밍 HTTP 인터페이스로 서버를 실행합니다.

퀴즈 생성 워크플로우

  1. ADK가 대화 컨텍스트를 포착하고 MCP 요청을 생성합니다.
  2. 퀴즈 페이지가 만들어지고, 사용자에게 링크가 반환됩니다.
  3. 사용자가 퀴즈를 완료하면 에이전트에게 채점 요청을 할 수 있습니다.
  4. 답변은 외부 데이터베이스에 저장돼 지속성과 공유가 가능합니다.
  5. AI 에이전트가 퀴즈를 채점합니다(개방형 질문 포함) – 이는 LLM 없이는 어려운 작업입니다.

결과

프로토타입은 다음과 같은 AI 기반 언어 튜터를 제공합니다:

  • 구문 및 주제를 상세한 언어 분석과 함께 설명합니다.
  • 메인 대화와 별도로 존재하는 인터랙티브 퀴즈를 생성합니다.
  • 퀴즈 결과를 지속하고 AI 기반 채점을 제공합니다.

향후 작업

  • MCP 서버를 클라우드 플랫폼에 배포해 접근성을 높입니다.
  • 견고한 세션 및 장기 메모리 처리를 구현합니다.
  • Summarizer를 개선해 서브‑에이전트 출력을 일관되게 포함시킵니다.
  • 퀴즈 시스템을 확장해 더 풍부한 질문 유형과 협업 공유를 지원합니다.

결론

이 언어 동반자를 구축하면서 Google ADK의 강력함과 FastMCP가 제공하는 보일러플레이트 코드의 편리함을 체감했습니다. 아직 프로덕션 수준에 도달하려면 작업이 남아 있지만, 프로젝트는 대화형 AI와 인터랙티브 언어 학습 도구를 통합하는 실현 가능한 접근 방식을 보여줍니다.

Back to Blog

관련 글

더 보기 »