본문 바로가기
AI 공부/AI 에이전트 (AI Agents)

🤖 AI끼리 말이 안 통해? 구글 A2A가 해결한다! 📡

by 데이터 AI 벌집 2025. 4. 14.
반응형

며칠 전, 저는 AI 에이전트들이 서로 "말을 못 알아듣는" 상황에 부딪혔습니다. OpenAI의 챗봇은 사람의 질문에 대답은 잘하는데, 뒤에 붙은 툴 에이전트에게 계산을 요청할 때마다 형식을 틀리게 보내고, 요약해주는 Claude는 검색 에이전트의 응답을 무슨 말인지 모른다며 씹어버리는 일이 반복됐죠. AI끼리 말이 안 통하면, 결국 인간 개발자가 중간에서 “통역사”가 되어야 합니다. API 호출 코드를 갈아엎고, JSON 형식을 바꿔주고, 오류 포맷을 매번 새로 해석해야 하죠. 이게 바로 오늘날 멀티 에이전트 AI 개발의 현실입니다.

 

🤖 AI끼리 말이 안 통해? 구글 A2A가 해결한다! 📡


🚧 멀티 에이전트 시스템의 통신 지옥

여러 개의 LLM, 검색 시스템, 계산 모듈, 사용자 입력 분석기 등을 조합하면 강력한 시스템을 만들 수 있습니다. 하지만 문제는 “연결”입니다. 각 에이전트가 제각기 말투(API 형식, 요청/응답 구조 등)를 가지고 있고, 서로의 언어를 모르면 결국 번역기(커스텀 어댑터 코드)를 개발자가 일일이 짜야 하죠.

 

구글 에이전트

 

👉 그래서 구글이 제안한 것이 바로 A2A (Agent-to-Agent) 프로토콜입니다.


🌉 A2A는 "에이전트 간 통신의 HTTP"다

A2A는 간단히 말해, AI끼리 말 통하게 해주는 표준 규칙입니다. 사람으로 치면 영어처럼, 에이전트 간 통신을 위한 공통 언어를 정의해주는 거죠.

 

A2A는 다음을 표준화합니다:

  • 📬 메시지 구조: 어떤 형식으로 말할 것인가
  • 🧠 역할과 대화 흐름: 사용자인지, 도우미인지, 누가 언제 말하는가
  • 🛠 함수 호출 구조: 계산, 검색 등 기능 요청을 어떻게 표현할까
  • ❗ 에러 응답 방식: 오류를 어떻게 전달할까

이로써 “말귀 안 통하는 AI”들을 하나의 언어로 연결할 수 있게 된 겁니다.

 

🌉 A2A는 "에이전트 간 통신의 HTTP"다


🐍 Python A2A: 파이썬 개발자를 위한 A2A 구현

Google이 A2A 명세는 공개했지만, 실제로 써먹을 수 있게 만들어준 건 아니었습니다. 그래서 등장한 것이 바로 Python A2A 라이브러리입니다.

 

이 라이브러리는 다음을 목표로 합니다:

  • 🧩 범용성: 어떤 프레임워크든 사용 가능 (Flask, FastAPI, Django 등)
  • 🔧 실전성: robust한 에러 핸들링과 메시지 관리
  • 🧠 심플함: 5줄로 에이전트 생성 가능
  • 💡 모듈성: 다른 에이전트와 쉽게 연결, 교체 가능

✈️ 시나리오: AI 여행 가이드 만들기

예를 들어, 사용자가 "파리 3박 4일 여행 계획 짜줘"라고 요청한다고 해볼까요?

 

이를 처리하려면 다음이 필요합니다:

  1. 🌤 날씨 에이전트 → 파리 날씨 확인
  2. 🧠 LLM 에이전트 → 날씨에 맞는 일정 구성
  3. 📍 장소 정보 에이전트 → 추천 장소 검색
  4. ✍️ 요약 에이전트 → 사용자에게 보기 좋게 정리

이걸 A2A 없이 만들려면? 각기 다른 API 호출 코드와 포맷을 수십 줄씩 짜야겠죠. 하지만 A2A가 있다면?

 
weather = weather_agent.ask("파리 날씨 어때?")
plan = llm_agent.ask(f"날씨는 {weather}, 일정 짜줘")
places = place_agent.ask(f"추천 장소 알려줘: {plan}")
final_summary = summarizer_agent.ask(f"이걸 보기 좋게 정리해줘: {places}")

 

마치 함수처럼 호출만 하면 됩니다. 에이전트가 A2A를 사용하므로 서로 메시지를 알아서 이해하고 처리합니다.


💡 개발자가 직접 만드는 A2A 에이전트

1. 에이전트 만들기

from python_a2a import A2AServer, Message, TextContent, run_server

class EchoBot(A2AServer):
    def handle_message(self, message):
        return Message(
            content=TextContent(text=f"[Echo] {message.content.text}"),
            role="agent",
            parent_message_id=message.message_id
        )

if __name__ == "__main__":
    run_server(EchoBot(), port=7000)

2. 메시지 보내기

from python_a2a import A2AClient, Message, TextContent

client = A2AClient("http://localhost:7000/a2a")
msg = Message(content=TextContent(text="Hello Echo!"), role="user")
response = client.send_message(msg)
print(response.content.text)  # [Echo] Hello Echo!

🧠 실제 워크플로우 예시: 리서치 조수 만들기

  1. 질문 입력 →
  2. 검색 쿼리 생성 →
  3. 정보 수집 →
  4. 요약 정리 →
  5. 결과 전달
query = "Llama3와 GPT-4의 차이점"
search_queries = llm.ask(f"'{query}'에 대한 검색 쿼리 3개 생성해줘")
search_results = search_agent.ask(f"{search_queries}를 기반으로 정보 수집해줘")
summary = summarize_agent.ask(f"{search_results}를 요약해줘")

 

에이전트가 모두 A2A 호환이면, 이 구조 그대로 Claude나 다른 LLM으로 갈아끼워도 코드 변경이 거의 없습니다.


🧪 Python A2A로 직접 시작해보세요

설치

pip install python-a2a

통합 옵션

pip install "python-a2a[openai]"
pip install "python-a2a[all]"

GitHub 문서


🧭 정리하며: “연결”이 핵심이다

AI는 점점 “모듈”처럼 변하고 있습니다. GPT는 언어 처리, Claude는 요약, Gemini는 검색, Groq은 계산… 각각의 강점이 다른 시대.

이제 중요한 건 어떻게 이들을 연결하느냐입니다.

 

Python A2A는 바로 그 연결을 단순하게, 표준화된 방식으로 해결해줍니다. 당신의 AI 시스템도 이제 복잡한 스파게티 코드가 아니라, 모듈형으로 쌓아 올린 LEGO처럼 구성될 수 있습니다.

반응형