AI VIDEO BRIEFING
ADK·MCP 멀티 에이전트 구축법 — 구글의 영화 추천 에이전트로 본 실전 패턴
구글 ADK와 MCP, Gemini 3 Flash로 영화 평·추천·관심목록 에이전트를 한데 묶은 사례. 설명 기반 라우팅, 실시간 웹 접근, 3단 안전 콜백, 세션 상태 유지 등 프로덕션 패턴을 정리했다.

핵심 메시지
쉽게 이해하기
영상은 "Critiques Cut"이라는 영화 도우미 에이전트를 예로 든다. 사용자가 "다크 나이트 리뷰해줘"라고 한 문장만 입력하면, 뒤에서 평론 에이전트·추천 에이전트·관심목록 관리 에이전트가 협업해 결과를 만들어 낸다. 핵심은 영화라는 소재가 아니라, 같은 패턴을 고객 지원·리서치·이커머스 같은 영역에 그대로 옮길 수 있다는 점이다.
라우팅 방식이 인상적이다. 각 하위 에이전트에는 description 필드가 있고, 사용자 메시지가 들어오면 루트 에이전트의 LLM이 그 설명들을 읽어 가장 적합한 에이전트를 고른다. 즉 의도 분류를 LLM이 description 기반으로 처리하므로, 개발자가 조건 분기 코드를 작성하지 않는다. 그래서 description을 잘 쓰는 일이 곧 설계의 핵심이 된다.
MCP는 에이전트를 외부 도구 서버에 연결하는 통로다. 영상에서는 오픈소스 fetch 서버를 붙여 "임의의 URL을 가져오는" 도구 하나를 에이전트에 부여한다. ADK의 MCP 툴셋이 서버를 자식 프로세스로 띄우고, 표준 입출력 전송을 관리하고, 노출된 도구를 발견해 에이전트에 연결하는 전체 생명주기를 한 번의 선언으로 처리한다. 덕분에 평론 에이전트가 로튼토마토 페이지를 실제로 읽어 평점을 가져온다.
관심목록은 MCP 대신 직접 만든 파이썬 함수 도구로 구현했다. ADK는 함수 시그니처와 docstring을 읽어 도구 스키마를 자동 생성한다. 여기에 Pydantic 모델로 타입 안전성을 더해, 허용된 동작(추가·삭제·조회)을 enum으로 제약하고 결과를 구조화했다. 특히 tool_context 파라미터를 선언하면 ADK가 실행 시점에 세션 맥락을 주입해, 관심목록을 세션 상태에서 읽고 다시 쓰며 턴을 넘어 보존한다.
안전성은 세 단계 콜백으로 처리한다. before_model 콜백은 LLM 호출 전에 사용자 입력을 정규식으로 검사해 "이전 지시 무시" 같은 프롬프트 인젝션을 잡아내고, 매치되면 모델을 아예 호출하지 않고 즉시 거절 응답을 돌려 토큰과 지연을 0으로 만든다. after_model 콜백은 모델 출력에서 이메일·전화번호 등 개인정보를 걸러내고, before_tool 콜백은 도구 실행 전 인자(제목 길이, 목록 상한 등)를 검증한다. 전체 프로젝트는 단 네 개의 파이썬 파일로 구성된다.
주요 인사이트
- 라우팅을 코드가 아니라 description으로 다루면, 새로운 기능을 추가할 때 분기문을 고치는 대신 설명을 다듬는 식으로 확장할 수 있다.
- 정규식 기반 입력 검사는 결정론적이고 비용이 0이라, 알려진 공격 패턴에는 LLM 판별보다 효율적이다. 새로운 공격에 대비한 LLM 분류기는 그 위에 얹는 방어 심화(defense in depth) 구조가 합리적이다.
- 에이전트 상태를 모듈 전역 변수가 아니라 ADK의 세션 상태 엔진에 저장하면, 별개의 턴이나 다른 에이전트에서도 같은 데이터를 안전하게 읽고 쓸 수 있다.
- 명령어 템플릿팅(중괄호 구문)으로 세션 상태 값을 프롬프트에 자동 주입하면, "이미 목록에 있는 영화는 추천하지 말라" 같은 맥락 인지 동작을 별도 코드 없이 구현할 수 있다.
- 루트 에이전트의 글로벌 명령은 계층 전체에 적용되어, 어느 하위 에이전트가 활성화되든 일관된 형식과 주제 이탈 방지를 보장한다.
자주 묻는 질문
ADK에서 어떤 에이전트가 요청을 처리할지는 어떻게 정해지나요?
루트 에이전트의 LLM이 각 하위 에이전트의 description 필드를 읽고 사용자 메시지의 의도에 가장 잘 맞는 에이전트를 선택합니다. 개발자가 if-else 같은 라우팅 로직을 직접 작성하지 않습니다.
에이전트가 실시간 데이터를 어떻게 가져오나요?
MCP의 fetch 서버를 도구로 연결해 실제 URL의 페이지 내용을 텍스트로 받아 추론합니다. 영상에서는 평론 에이전트가 로튼토마토 페이지를 직접 읽어 평점을 가져왔고, 별도의 영화 API나 하드코딩된 데이터를 쓰지 않았습니다.
프롬프트 인젝션은 어떻게 막나요?
before_model 콜백에서 사용자 입력을 정규식 패턴으로 검사합니다. "이전 지시 무시" 같은 패턴이 매치되면 콜백이 응답을 즉시 반환해 LLM 호출 자체를 건너뛰므로, 토큰 소비와 모델 지연이 발생하지 않습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗