MCP와 같이 자주 나오는 A2A에 대해 알아본 내용을 정리하였습니다.
정의
에이전트 간에 직접 통신하게 하여 다양한 시스템과 애플리케이션 간의 소통하는 방법에 대한 프로토콜의 일종
특징
- 에이전트 간의 수평적인 상호 운용 프로토콜
- 표준화된 통신 방식 : HTTP, JSON-RPC, Server-Sent Events(SSE) 등의 웹표준 사용
- 보안 중심 : Oauth 2.0 등 안전한 에이전트 간 통신 보장
- 멀티 모달 데이터 지원 : Text, Audio, Video, JSON 등 다양한 데이터 형식 간의 상호작용 지원
- 오픈소스 표준
구성요소
- Agent Card
- 에이전트의 기능, 기술, 엔드포인트 URL, 인증 요구 사항 등의
- 에이전트 카드를 통해서 작업에 필요한 에이전트를 식별한다.
- A2A Client
- A2A Server의 서비스를 소비하는 에이전트로 서버에게 요청하여 서비스를 제공받는다.
- A2A Server
- HTTP 엔드포인트를 통해 A2A 프로토콜 메서드를 구현한 후, 클라이언트에게서 전달받은 요청을 처리하여 응답한다.
- 작업(Task)
- 클라이언트가 에이전트에게 전달하는 작업 단위
- submitted, working, input-required, completed, failed, canceled 등의 상태를 가진다.
- Message
- 클라이언트 에이전트와 서버 에이전트가 메시지를 통하여 통신하며 작업 상황을 조정하거나 명확하게 할 수 있다.
- 부분 (Part)
- 아티팩트 (Artifact)
- 작업 중 에이전트가 생성한 출력물로, 생성된 파일이나 최종 구조화된 데이터를 포함하며 Parts를 포함.
작동 방법
- 발견
- client는 Agent Card를 통해 Server의 기능, API, 기술 등을 확인하여 어떠한 요청을 처리할 수 있는지 파악한다.
- 작업 요청
- client는 단순 요청인 tasks/send, 스트리밍인 tasks/sendSubscribe API를 호출하여 작업을 생성하여 초기 메시지와 Task ID를 Server(Agent)에게 전송합니다.
- 처리(Execution): Server(Agent)는 작업을 처리하며, 단순 요청에서는 최종 결과를, 스트리밍 시 SSE로 실시간 상태를 반환한다.
- 추가 입력
- Server(Agent)가 추가 정보를 요구하면, Client는 동일한 Task ID로 API를 통해 후속 메시지를 전송하며, 이 과정이 반복될 수 있다.
- 완료
- completed, failed, canceled 중 하나의 최종 상태로 종료되머, 최종 결과는 응답 또는 SSE를 통해 client에게 전달된다.
- push
- Client가 webhook을 등록하게 되면, Server는 작업 상태/ 결과 변경 시 해당 URL로 HPPT POST 알림을 보낸다.
참고
https://marcus-story.tistory.com/160