핵심 개념과 구성 요소

핵심 개념과 구성 요소

A2A는 에이전트가 어떻게 상호작용하는지 정의하는 핵심 개념들을 사용해요. A2A 호환 시스템을 개발하거나 통합하려면 이 핵심 구성 요소들을 이해해야 해요.

출처: 문서

본문

A2A 상호작용의 핵심 주체

  • 사용자(User): 최종 사용자로, 인간 운영자일 수도 자동화된 서비스일 수도 있어요. 사용자는 하나 이상의 AI 에이전트의 도움이 필요한 요청을 시작하거나 목표를 정의해요.
  • A2A 클라이언트(Client Agent): 사용자를 대신해 행동하는 애플리케이션, 서비스, 또는 또 다른 AI 에이전트예요. 클라이언트는 A2A 프로토콜을 사용해 통신을 시작해요.
  • A2A 서버(원격 에이전트, Remote Agent): A2A 프로토콜을 구현한 HTTP 엔드포인트를 노출하는 AI 에이전트 또는 에이전트형 시스템이에요. 클라이언트의 요청을 받고 태스크를 처리하며 결과나 상태 업데이트를 반환해요. 클라이언트에게 원격 에이전트는 불투명한(블랙박스) 시스템이에요. 내부 동작, 메모리, 도구는 숨겨져 있죠.

기본 통신 요소

다음 표는 A2A의 기본 통신 요소를 설명해요. (테이블 생략)

상호작용 메커니즘

A2A 프로토콜은 여러 상호작용 패턴을 지원해요. 각각은 응답성과 지속성에 대한 서로 다른 요구에 맞아요. 이를 통해 태스크의 복잡성이나 지속 시간과 무관하게 에이전트들이 안정적으로 정보를 교환해요.

  • 요청/응답(폴링, Request/Response): 클라이언트가 요청을 보내고 서버가 응답해요. 장기 실행 태스크의 경우 클라이언트는 주기적으로 서버를 폴링해 업데이트를 받아요.
  • Server-Sent Events(SSE) 스트리밍: 클라이언트가 열린 HTTP 연결 위에 스트림을 엽니다. 실시간·점진적 결과나 상태 업데이트를 서버로부터 받아요.
  • 푸시 알림(Push Notifications): 서버가 중요한 태스크 업데이트 시 클라이언트가 제공한 웹훅을 호출해요. 매우 오래 실행되는 태스크나 연결이 끊긴 클라이언트에 적합해요.

스트리밍과 푸시 알림에 대한 자세한 내용은 Streaming & Asynchronous Operations를 참고하세요.

Agent Cards

Agent Card는 JSON 문서예요. 디지털 명함 역할을 하죠. 최초 발견과 상호작용 설정을 위한 핵심 메타데이터를 제공해요. 클라이언트는 이를 파싱해서 에이전트가 태스크에 적합한지, 요청을 어떻게 구성할지, 안전하게 통신하는 방법을 판단해요. 카드에는 정체성, 서비스 엔드포인트(URL), A2A 역량, 인증 요구사항, 스킬이 나열돼 있어요.

메시지와 파트(Messages and Parts)

메시지는 클라이언트와 에이전트 사이의 한 번의 통신 턴을 나타내요. 역할("user" 또는 "agent")과 고유한 messageId를 포함해요. 실제 콘텐츠를 담는 세밀한 컨테이너인 하나 이상의 Part 객체를 포함해요. 이 설계 덕분에 A2A는 양식 독립적(modality independent)이 될 수 있어요.

Part 객체는 oneof 필드 구조를 사용해 여러 유형의 콘텐츠를 담을 수 있는 유연한 컨테이너예요. Part는 다음 콘텐츠 필드 중 정확히 하나를 포함해야 해요.

  • text: 평문 텍스트 콘텐츠를 담은 문자열.
  • raw: 이진 파일 데이터(인라인)를 담은 바이트 배열.
  • url: 외부 파일 콘텐츠를 참조하는 문자열 URI.
  • data: 머신이 읽을 수 있는 데이터를 위한 구조화된 JSON 값(예: 객체, 배열).

추가로 모든 Part는 다음을 포함할 수 있어요.

  • mediaType: 콘텐츠의 MIME 타입(예: "text/plain", "image/png", "application/json").
  • filename: 파일 또는 콘텐츠의 선택적 이름.
  • metadata: 추가 컨텍스트를 위한 키-값 맵.

아티팩트(Artifacts)

아티팩트는 원격 에이전트가 태스크 중 생성하는 유형의 산출물 또는 구체적 결과예요. 일반 메시지와 달리 아티팩트는 실제 전달물(deliverable)이에요. 아티팩트는 고유한 artifactId, 사람이 읽을 수 있는 이름, 그리고 하나 이상의 part 객체를 가져요. 아티팩트는 태스크 수명주기와 밀접하게 연결되며 증분 단위로 클라이언트에 스트리밍될 수 있어요.

에이전트 응답: 태스크 또는 메시지

에이전트 응답은 새 Task일 수도(에이전트가 장기 실행 연산을 수행해야 할 때), Message일 수도(에이전트가 즉시 응답할 수 있을 때) 있어요. 자세한 내용은 Life of a Task를 참고하세요.

기타 중요한 개념

  • 컨텍스트(contextId): 서버가 생성한 식별자예요. 관련 Task 객체들을 묶고 일련의 상호작용에 걸쳐 컨텍스트를 전달하는 데 사용해요.
  • 전송과 형식(Transport and Format): A2A 통신은 HTTP(S) 위에서 이루어져요. 모든 요청·응답의 페이로드 형식으로 JSON-RPC 2.0이 사용돼요.
  • 인증과 권한 부여(Authentication & Authorization): A2A는 표준 웹 보안 관행에 기반을 둬요. 인증 요구사항은 Agent Card에 선언되고, 자격 증명(예: OAuth 토큰, API 키)은 대개 A2A 프로토콜 메시지와 분리된 HTTP 헤더로 전달돼요. 자세한 내용은 Enterprise-Ready Features를 참고하세요.
  • 에이전트 발견(Agent Discovery): 클라이언트가 Agent Card를 찾아 사용 가능한 A2A 서버와 그 역량을 파악하는 과정이에요. 자세한 내용은 Agent Discovery를 참고하세요.
  • 확장(Extensions): A2A는 에이전트가 AgentCard의 일부로 커스텀 프로토콜 확장을 선언할 수 있게 해요. 자세한 내용은 Extensions를 참고하세요.

더 알아보기 (Learn more)