1. 프로젝트 개요
A2A(Agent2Agent)는 서로 다른 프레임워크, 팀, 회사에서 구축한 AI 에이전트가 서로를 발견하고 직접 통신할 수 있게 해주는 공급업체 중립적인 오픈 프로토콜입니다. LangGraph, CrewAI, Semantic Kernel 또는 다른 어떤 스택으로 구축된 에이전트도 서로 대화할 공통된 방법이 없다는 문제를 해결합니다.
2. 배경 및 포지셔닝
AI 에이전트가 확산됨에 따라 각 프레임워크와 공급업체는 에이전트 간 상호작용을 위한 자체 폐쇄적 방식을 구축하는 경향이 있어 사일로가 생성되었습니다. 한 플랫폼에서 구축된 에이전트는 일반적으로 다른 플랫폼에서 구축된 에이전트에 작업을 위임하거나 결과를 받을 수 없습니다. A2A는 에이전트가 협업을 위한 공유된 오픈 프로토콜을 제공하여 이러한 사일로를 허물기 위해 만들어졌습니다. 이를 통해 에이전트는 고정된 API를 통해 호출되는 단순한 도구로 축소되지 않고, 자체 상태, 메모리, 추론을 가진 자율적인 동료로서 정보를 교환하고 작업을 조정할 수 있습니다.
프로젝트 문서에 명시된 핵심 사명은 복잡한 다중 에이전트 협업을 가능하게 하고 에이전트가 상호 운용되는 방식에 대한 개방형 표준을 촉진하는 것입니다. 에이전트는 내부 메모리, 독점 로직 또는 특정 도구 구현을 공유할 필요 없이 함께 작업할 수 있습니다. 각 에이전트는 표준화된 "에이전트 카드"를 통해 선택한 것만 노출하며, 나머지 내부는 불투명하게 유지됩니다.
A2A는 의도적으로 Model Context Protocol(MCP)과 상호 보완적이며 경쟁하지 않습니다. MCP는 단일 에이전트가 도구, 데이터 소스 및 API에 연결하는 방식을 표준화합니다. A2A는 독립적인 에이전트가 조직 및 프레임워크 경계를 넘어 서로를 발견하고 통신하는 방식을 표준화합니다. 둘 다 사용하는 시스템은 MCP를 사용하여 개별 에이전트에 도구를 제공하고, A2A를 사용하여 해당 에이전트가 다른 에이전트와 협업할 수 있게 합니다.
이 프로토콜은 Linux Foundation 프로젝트로 관리되며, 기술 운영 위원회는 AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP 및 ServiceNow의 구성원으로 구성되어 단일 공급업체의 제품이 아닌 진정한 업계 전반의 표준이 되려는 의도를 반영합니다.
3. 기능 범주
📜 프로토콜 사양
A2A의 메시지 형식, 전송 방식 및 동작에 대한 공식 정의로, 저장소의 /specification 아래에 유지됩니다.
- HTTP(S)를 통한 JSON-RPC 2.0 와이어 형식
- 기능 발견을 위한 에이전트 카드 스키마
- 작업 수명 주기 및 상태 전환 규칙
- 스트리밍 및 푸시 알림 메시지 형식
- 시간이 지남에 따라 새로운 기능을 추가하기 위한 계층적 확장 승격 프로세스
목적: 구현자에게 단일하고 버전이 관리되는 진실의 원천을 제공하여 독립적인 A2A 구현이 상호 운용 가능하도록 유지합니다.
🧰 언어 SDK
공식 클라이언트 및 서버 라이브러리로, 개발자가 와이어 프로토콜을 직접 구현할 필요가 없습니다.
- Python SDK (
a2a-sdk) - JavaScript/TypeScript SDK (
@a2a-js/sdk) - Go SDK (
a2a-go) - Java SDK
- .NET / C# SDK
- Rust SDK
목적: 팀이 프로토콜 처리를 직접 작성하지 않고도 에이전트 스택에서 이미 사용하는 언어로 A2A를 채택할 수 있게 합니다.
📚 문서 및 가이드
프로젝트 문서 사이트에 게시된 개념 및 참고 자료로, 핵심 개념, 작업 수명 주기, 에이전트 발견, 엔터프라이즈 기능, 스트리밍 및 다중 테넌시를 다룹니다.
- SDK별 시작 가이드
- 핵심 개념(에이전트 카드, 작업, 메시지, 아티팩트)
- 엔터프라이즈 대비 지침(인증, 관찰 가능성)
- 프로토콜 확장 메커니즘
목적: 프로토콜 구현자와 애플리케이션 개발자 모두가 A2A 개념을 이해하고 올바르게 적용할 수 있도록 돕습니다.
🧪 샘플 및 참조 구현
동반 a2a-samples 저장소에 유지 관리되는 예제 에이전트 및 클라이언트/서버 쌍으로, 프레임워크 간 실제 상호 운용 시나리오를 보여줍니다.
목적: 채택자에게 사양만으로 시작하는 대신 작동하고 실행 가능한 참조 코드를 제공합니다.
4. 주요 특징
- 표준화된 에이전트 간 메시징 — 통신은 독점 프로토콜이 아닌 널리 지원되고 잘 이해되는 전송 방식인 HTTP(S)를 통한 JSON-RPC 2.0으로 실행됩니다.
- 발견을 위한 에이전트 카드 — 각 에이전트는 기능을 설명하는 기계 판독 가능한 카드를 게시하므로 다른 에이전트(또는 오케스트레이터)가 대역 외 조정 없이 이를 찾아 올바르게 호출할 수 있습니다.
- 다중 상호작용 모드 — 단순 동기 요청/응답, 장기 실행 응답 스트리밍을 위한 Server-Sent Events(SSE), 단일 연결보다 오래 지속되는 작업을 위한 비동기 푸시 알림을 지원합니다.
- 풍부한 콘텐츠 교환 — 메시지는 채팅 스타일 문자열뿐만 아니라 일반 텍스트, 파일 및 구조화된 JSON 페이로드를 전달할 수 있습니다.
- 설계상 불투명성 — 에이전트는 내부 메모리, 도구 또는 독점 로직을 노출하지 않고 작업에서 협업합니다. 이는 관련 에이전트가 서로 다른 조직에 속할 때 중요합니다.
- 다국어, 다중 공급업체 거버넌스 — 공식 SDK는 6개 언어를 지원하며, 프로토콜 자체는 Linux Foundation 아래의 교차 회사 기술 운영 위원회가 이끌어 단일 공급업체 종속 위험을 줄입니다.
5. 역할별 사용 사례
- 일반 개발자: 선택한 프레임워크에서 에이전트를 구축하고 에이전트 카드를 통해 노출하여 다른 에이전트나 오케스트레이션 계층이 상대방별로 사용자 지정 통합 코드를 작성하지 않고도 발견하고 호출할 수 있게 합니다.
- 플랫폼/통합 엔지니어: A2A를 사내 에이전트와 타사 또는 파트너 에이전트 간의 상호 운용 계층으로 사용하여 각 측의 내부 구현을 비공개로 유지하면서 하위 작업 위임을 가능하게 합니다.
- 다중 에이전트 아키텍처를 평가하는 프로젝트 관리자/기술 리더: A2A의 작업 수명 주기와 스트리밍 모델을 사용하여 팀이나 공급업체 전반에서 장기 실행 다단계 에이전트 워크플로우를 조정하고 모니터링하는 방법을 계획합니다.
6. 시작하기
필요한 것 찾기 — SDK를 선택하기 전에 프로토콜 문서 사이트와 저장소의 사양 디렉토리에서 핵심 개념(에이전트 카드, 작업, 메시지)을 이해하는 것으로 시작합니다.
https://a2a-protocol.org/latest/
설치/통합 — 스택에 맞는 SDK를 선택합니다.
pip install a2a-sdk # Python
npm install @a2a-js/sdk # JavaScript / TypeScript
go get github.com/a2aproject/a2a-go # Go
그런 다음 동반 샘플 저장소에서 실행 가능한 예제를 살펴봅니다.
https://github.com/a2aproject/a2a-samples
기여 — 프로젝트의 CONTRIBUTING.md에 따라 사양 또는 SDK에 대해 이슈를 제기하고, 토론에 참여하거나 풀 리퀘스트를 엽니다.
https://github.com/a2aproject/A2A/blob/main/CONTRIBUTING.md
7. 프로젝트 구조
A2A/
├── specification/ # 공식 A2A 프로토콜 사양(진실의 원천)
├── docs/ # 문서 사이트 콘텐츠 및 가이드
├── scripts/ # 유틸리티 및 유지 관리 스크립트
├── CONTRIBUTING.md # 기여 지침
├── LICENSE # Apache-2.0 라이선스
└── README.md
주요 디렉토리: specification/은 모든 SDK와 구현이 따라야 하는 버전 관리된 프로토콜 계약을 정의합니다. docs/는 a2a-protocol.org의 공개 문서 사이트를 지원합니다. 언어 SDK와 샘플 에이전트는 동일한 a2aproject GitHub 조직 아래 별도의 동반 저장소(예: a2a-python, a2a-js, a2a-samples)에서 유지 관리됩니다.
8. 관련 생태계
- Model Context Protocol(MCP) — 단일 에이전트를 도구 및 데이터 소스에 연결하기 위한 보완 표준입니다. A2A와 MCP는 일반적으로 동일한 시스템에서 함께 사용됩니다.
- 에이전트 프레임워크 — LangGraph, CrewAI, Semantic Kernel 및 유사한 프레임워크는 A2A가 상호 운용되도록 설계된 시스템 유형입니다.
- Linux Foundation — 다중 회사 기술 운영 위원회와 함께 프로젝트를 호스팅하고 관리합니다.
- DeepLearning.AI — A2A 프로토콜을 다루는 교육 과정을 게시했습니다.
a2a-samples— 지원되는 언어로 된 실행 가능한 예제 에이전트 및 클라이언트의 동반 저장소입니다.
9. 라이선스
✅ Apache License 2.0에 따라 상업용 제품을 포함하여 무료로 사용, 수정 및 배포할 수 있습니다.
✅ 다른 Apache-2.0 라이선스 프로젝트와 마찬가지로 특허 허여가 포함됩니다.
✅ GitHub Issues, Discussions 및 풀 리퀘스트를 통해 기여를 받습니다.
❌ 보증은 제공되지 않습니다. 소프트웨어는 "있는 그대로" 배포됩니다.
ℹ️ 재배포 또는 수정된 버전은 Apache-2.0에서 요구하는 대로 원본 저작권, 라이선스 및 모든 NOTICE 파일 귀속을 유지해야 합니다.
10. FAQ
Q: A2A는 MCP와 어떻게 다른가요?
A: MCP는 하나의 에이전트가 자체 도구와 데이터 소스에 연결하는 방식을 표준화합니다. A2A는 독립적인 에이전트가 서로를 발견하고 통신하는 방식을 표준화합니다. 많은 시스템이 둘을 함께 사용합니다.
Q: A2A를 사용하려면 모든 에이전트가 동일한 프레임워크로 구축되어야 하나요?
A: 아닙니다. 그것이 A2A가 해결하는 핵심 문제입니다. 서로 다른 프레임워크(LangGraph, CrewAI, Semantic Kernel, 사용자 지정 스택 등)로 구축된 에이전트는 각각 A2A 호환 에이전트 카드와 엔드포인트를 노출하는 한 상호 운용할 수 있습니다.
Q: A2A는 어떤 전송 방식을 사용하나요?
A: HTTP(S)를 통한 JSON-RPC 2.0이며, 스트리밍을 위한 Server-Sent Events(SSE)와 장기 실행 작업을 위한 비동기 푸시 알림을 지원합니다.
Q: 공식 SDK가 있는 언어는 무엇인가요?
A: Python, JavaScript/TypeScript, Go, Java, .NET/C# 및 Rust입니다.
Q: A2A를 내 에이전트에 통합하기 전에 작동하는 예제를 어디에서 볼 수 있나요?
A: a2a-samples 저장소(https://github.com/a2aproject/a2a-samples)에 실행 가능한 참조 에이전트와 클라이언트가 포함되어 있습니다.
11. 빠른 링크
- 저장소: https://github.com/a2aproject/A2A
- 공식 문서: https://a2a-protocol.org/latest/
- 기여 가이드: https://github.com/a2aproject/A2A/blob/main/CONTRIBUTING.md
- 샘플 저장소: https://github.com/a2aproject/a2a-samples
12. 요약
A2A는 AI 에이전트가 프레임워크, 공급업체 및 조직을 넘어 서로를 발견하고 협업할 수 있는 공통의 개방형 언어를 제공하여 프레임워크별 도구만으로는 해결할 수 없는 격차를 메웁니다. 통제할 수 없는 에이전트와 상호 운용해야 하는 다중 에이전트 시스템을 구축하는 팀, 즉 내부 플랫폼 팀, 통합 엔지니어 및 둘 이상의 공급업체나 스택에 걸친 에이전트 아키텍처를 설계하는 모든 사람에게 가장 적합합니다.