본문 바로가기

인공지능

Google ADK와 A2A 프로토콜로 구현하는 크로스 언어 멀티 에이전트 아키텍처 정리

728x90
반응형
728x170

AI 기반 서비스가 실제 운영 환경으로 들어가면 한 가지 언어, 한 가지 에이전트만으로는 한계가 분명해집니다. 데이터 과학 팀은 Python으로 LLM 기반 에이전트를 만들고, 보안이나 시스템 팀은 Go로 빠르고 안정적인 검증 로직을 구현하는 경우가 흔합니다. 문제는 이들이 서로 다른 언어와 환경에서도 하나의 파이프라인처럼 협업할 수 있느냐입니다.
이 글에서는 Google의 Agent Development Kit(ADK)Agent2Agent Protocol(A2A)를 활용해, Python 에이전트와 Go 에이전트가 계약 컴플라이언스 파이프라인에서 어떻게 협업하는지 구조와 개념 중심으로 정리합니다.

반응형

단일 에이전트 접근 방식의 한계

많은 AI 프로젝트는 하나의 거대한 에이전트와 프롬프트로 시작합니다. 데모에서는 잘 작동하지만, 운영 환경에서는 다음 문제가 드러납니다.

  • 컨텍스트 품질 저하
    도구가 많아질수록 모델은 어떤 도구를 언제 써야 하는지 헷갈리기 시작합니다.
  • 장애 전파 범위 증가
    사소한 기능 하나에서 오류가 나면 전체 파이프라인이 멈춥니다.
  • 테스트 불가능성
    하나의 프롬프트에 모든 책임이 얽혀 있어, 부분 테스트나 회귀 검증이 어렵습니다.

이 문제를 해결하는 접근이 바로 에이전트 분리와 파이프라인화입니다.


멀티 에이전트 파이프라인 개념

이 사례에서는 계약 컴플라이언스라는 하나의 업무를 세 개의 역할로 나눕니다.

  1. 계약 정보 추출 에이전트 (Python)
    LLM을 사용해 계약서에서 주요 필드를 추출
  2. 컴플라이언스 검증 에이전트 (Go)
    정책 규칙 기반의 결정론적 검증 수행
  3. 리포트 생성 에이전트 (Python)
    결과를 사람이 읽을 수 있는 보고서로 정리

각 에이전트는 자신의 역할만 수행하며, 서로의 내부 구현을 알 필요가 없습니다.


A2A 프로토콜이 해결하는 문제

A2A 프로토콜은 서로 다른 언어와 프레임워크로 만든 에이전트가 협업할 수 있도록 하는 공통 규약입니다. 핵심은 다음 세 가지입니다.

1. 에이전트 디스커버리

각 에이전트는 Agent Card라는 JSON 메타데이터를 제공합니다.
이를 통해 이름, 기능, 지원 인터페이스, 입력·출력 형식을 사전에 알 수 있습니다.

2. 표준화된 통신

모든 통신은 JSON-RPC 2.0 기반으로 이루어집니다.
텍스트 데이터와 구조화된 JSON 데이터가 명확히 구분되어 전달됩니다.

3. 태스크 생명주기 관리

요청은 모두 태스크 단위로 관리되며, submitted → working → completed / failed 상태를 가집니다.
이 덕분에 동기·비동기 작업을 동일한 방식으로 처리할 수 있습니다.


Google ADK의 역할

Google ADK는 멀티 에이전트 구성을 실제 코드로 쉽게 구현할 수 있도록 돕는 도구입니다.

  • RemoteA2aAgent 추상화
    원격 A2A 에이전트를 마치 로컬 클래스처럼 사용할 수 있습니다.
  • 에이전트 오케스트레이션
    순차 실행, 상태 공유, 실패 처리 흐름을 코드로 명확히 정의할 수 있습니다.
  • 상태 기반 파이프라인
    각 단계의 결과를 공용 상태에 저장해, 다음 에이전트가 이어받습니다.

Python과 Go 에이전트 협업 구조

Python 측 구성

  • 계약서에서 필드를 추출하는 에이전트는 Gemini 모델을 사용
  • Go로 작성된 컴플라이언스 서비스는 RemoteA2aAgent로 래핑
  • 모든 에이전트를 순차적으로 실행하는 코디네이터 에이전트가 전체 흐름을 관리

Go 측 구성

  • 표준 HTTP 서버
  • A2A 규격을 따르는 JSON-RPC 엔드포인트 하나만 제공
  • LLM 없이 순수 정책 로직으로 결과를 반환

이 구조 덕분에 Python 에이전트는 Go 내부 로직을 전혀 몰라도 되고, Go 서비스 역시 Python 실행 환경을 알 필요가 없습니다.


운영 환경을 고려한 설계 포인트

이 사례에서 눈여겨볼 부분은 실패를 전제로 한 설계입니다.

  • Go 에이전트가 응답하지 않으면 파이프라인은 중단되지 않고 MANUAL_REVIEW 상태로 전환
  • 사람 검토로 자연스럽게 이어지는 안전 장치 확보
  • 결정론적 검증 로직은 동일 입력에 대해 항상 동일 결과를 반환해 감사와 재현이 용이

728x90

이 아키텍처가 주는 메시지는 분명합니다.

  • AI 시스템은 더 이상 “프롬프트 체인”이 아니라 분산 시스템이다
  • 언어 선택은 팀의 전문성과 목적에 맞게 자유로워야 한다
  • LLM이 필요한 영역과 결정론적 로직이 필요한 영역은 분리해야 한다

Google ADK와 A2A 프로토콜을 활용하면, Python의 AI 생태계와 Go의 안정성을 동시에 가져갈 수 있습니다.
앞으로의 멀티 에이전트 시스템은 “더 똑똑한 단일 에이전트”가 아니라, 잘 나뉘고 잘 연결된 에이전트 팀이 경쟁력이 될 것입니다.

300x250

https://developers.googleblog.com/build-cross-language-multi-agent-team-with-google-agent-development-kit-and-a2a/

 

Build Cross-Language Multi-Agent Team with Google’s Agent Development Kit and A2A- Google Developers Blog

How a Python agent and a Go agent collaborate on contract compliance using the Agent2Agent protocol Your contract compliance pipeline has a problem. The data science team wrote a brilliant extraction agent in Python. It uses Gemini to parse legal contracts

developers.googleblog.com

728x90
반응형
그리드형