Skip to content

3. 에이전트 기술 및 에이전트 카드

A2A 에이전트가 어떤 작업을 수행하기 전에, 자신이 무엇을 할 수 있는지(기술)와 다른 에이전트나 클라이언트가 이러한 기능에 대해 어떻게 알 수 있는지(에이전트 카드)를 정의해야 합니다.

a2a-samples/samples/python/agents/helloworld/에 있는 helloworld 예제를 사용하겠습니다.

에이전트 기술

에이전트 기술(Agent Skill)은 에이전트가 수행할 수 있는 특정 기능이나 함수를 설명합니다. 이는 클라이언트에게 에이전트가 어떤 종류의 작업에 적합한지 알려주는 구성 요소입니다.

AgentSkill의 주요 속성 (a2a.types에 정의됨):

  • id: 기술에 대한 고유 식별자입니다.
  • name: 사람이 읽을 수 있는 이름입니다.
  • description: 기술이 수행하는 작업에 대한 더 자세한 설명입니다.
  • tags: 분류 및 검색을 위한 키워드입니다.
  • examples: 샘플 프롬프트 또는 사용 사례입니다.
  • inputModes / outputModes: 입력 및 출력에 지원되는 미디어 유형입니다 (예: "text/plain", "application/json").

__main__.py에서 Helloworld 에이전트에 대한 기술이 어떻게 정의되는지 확인할 수 있습니다:

skill = AgentSkill(
    id='hello_world',
    name='Returns hello world',
    description='just returns hello world',
    tags=['hello world'],
    examples=['hi', 'hello world'],
)

이 기술은 매우 간단합니다: "Returns hello world"라는 이름이며 주로 텍스트를 다룹니다.

에이전트 카드

에이전트 카드(Agent Card)는 A2A 서버가 일반적으로 .well-known/agent.json 엔드포인트에서 제공하는 JSON 문서입니다. 이는 에이전트의 디지털 명함과 같습니다.

AgentCard의 주요 속성 (a2a.types에 정의됨):

  • name, description, version: 기본 ID 정보입니다.
  • url: A2A 서비스에 도달할 수 있는 엔드포인트입니다.
  • capabilities: streaming 또는 pushNotifications와 같이 지원되는 A2A 기능을 지정합니다.
  • defaultInputModes / defaultOutputModes: 에이전트의 기본 미디어 유형입니다.
  • skills: 에이전트가 제공하는 AgentSkill 객체 목록입니다.

helloworld 예제는 다음과 같이 에이전트 카드를 정의합니다:

# This will be the public-facing agent card
public_agent_card = AgentCard(
    name='Hello World Agent',
    description='Just a hello world agent',
    url='http://0.0.0.0:9999/',
    version='1.0.0',
    defaultInputModes=['text'],
    defaultOutputModes=['text'],
    capabilities=AgentCapabilities(streaming=True),
    skills=[skill],  # Only the basic skill for the public card
    supportsAuthenticatedExtendedCard=True,
)

이 카드는 에이전트 이름이 "Hello World Agent"이고, http://localhost:9999/에서 실행되며, 텍스트 상호 작용을 지원하고, hello_world 기술을 가지고 있음을 알려줍니다. 또한 특정 자격 증명이 필요하지 않음을 의미하는 공개 인증을 나타냅니다.

에이전트 카드를 이해하는 것은 클라이언트가 에이전트를 발견하고 상호 작용하는 방법을 배우는 방법이므로 매우 중요합니다.