6 готових до копіювання JSON-шаблонів · A2A v1.0

Приклади A2A Agent Card

Перегляньте практичні шаблони A2A v1.0, зрозумійте їхні проєктні рішення, а потім адаптуйте будь-який приклад для власного агента.

Публічне виявлення агентів

Використовуйте ці приклади, щоб сформувати JSON, який інший клієнт A2A отримує перед тим, як вирішити, чи може ваш агент виконати завдання.

Подання на маркетплейс

Адаптуйте провайдера, навички, теги, можливості, і метадані безпеки, щоб рецензенти розуміли, що робить агент і хто ним керує.

Внутрішні каталоги агентів

Стандартизуйте описи кінцевих точок, автентифікації, і навичок у внутрішніх агентах, перш ніж команди інтегрують їх у робочі процеси.

JSON-шаблони

Приклади Agent Card для агентів підтримки, бронювання, покупок, програмування, дослідження, і робочих процесів.

Перевірити шаблон
Фільтр

Агент підтримки клієнтів

Обробляє питання про товари, запити щодо замовлень, повернення, і передачу ескалацій.

Чому це побудовано саме так

  • Облікові дані клієнта OAuth 2.0 захищають дані замовлень: Agent Card оголошує URL токена та область дії, щоб клієнти могли автентифікуватися без позасмугової документації.
  • streaming і pushNotifications обидва дорівнюють true, оскільки розмови підтримки тривають довго, а оновлення розв'язання надходять асинхронно.
  • Єдина навичка обмежена однією межею завдання (класифікувати, вирішити, ескалувати) замість розпливчастого опису «допомагати клієнтам», щоб маршрутизатори могли точно її зіставити.
customer-support.json
{
  "name": "Агент підтримки клієнтів",
  "description": "Відповідає на запитання служби підтримки клієнтів, отримує контекст замовлення та передає невирішені проблеми команді людей.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/customer-support",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Приклад Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "resolve-customer-support-request",
      "name": "Вирішити запит служби підтримки клієнтів",
      "description": "Класифікує запит служби підтримки клієнтів, збирає необхідний контекст, пропонує вирішення та посилює, коли впевненість низька.",
      "tags": [
        "support",
        "orders",
        "returns"
      ],
      "examples": [
        "Допоможіть повернути замовлення."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/customer-support/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Агент бронювання

Знаходить доступні слоти для зустрічей і готує підтвердження бронювання.

Чому це побудовано саме так

  • Ключа API в заголовку тут достатньо: бронювання обмежені орендарем, але не несуть проблему делегованої згоди користувача, яку вирішує OAuth.
  • defaultOutputModes — лише application/json, що сигналізує, що виклики отримують структуровані пропозиції бронювання, а не прозу.
  • pushNotifications дорівнює true, щоб агент міг підтвердити бронювання після того, як бекенд, що утримує слот, стабілізується, без опитування з боку клієнта.
booking.json
{
  "name": "Агент бронювання",
  "description": "Шукає доступність, пропонує варіанти бронювання та готує бронювання зустрічей для затвердження.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/booking",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Приклад Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "find-and-prepare-booking",
      "name": "Знайти та підготувати бронювання",
      "description": "Перевіряє наявність ресурсів, порівнює вікна бронювання та повертає структуровану пропозицію бронювання.",
      "tags": [
        "booking",
        "calendar",
        "availability"
      ],
      "examples": [
        "Знайдіть 30-хвилинну зустріч завтра вдень."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Агент покупок

Порівнює товари, наявність, ціни, і обмеження покупки.

Чому це побудовано саме так

  • Ранжовані рекомендації транслюються в міру їх обчислення, тому streaming дорівнює true, а pushNotifications залишається false — після завершення відповіді нічого не відбувається.
  • Опис навички зобов'язує повертати компроміси та обґрунтування, що повідомляє оркестраторам, що цей агент пояснює рейтинги, а не просто перелічує товари.
  • Області дії OAuth обмежують дані, пов'язані з покупкою; публічна демонстрація покупок могла б повністю відмовитися від безпеки і залишитися дійсною Agent Card.
shopping.json
{
  "name": "Агент покупок",
  "description": "Порівнює продукти з обмеженнями користувачів і повертає ранжовані варіанти покупки з компромісами.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/shopping",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Приклад Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "compare-shopping-options",
      "name": "Порівняйте варіанти покупок",
      "description": "Оцінює продукти-кандидати, фільтрує за обмеженнями та повертає ранжовані рекомендації з обґрунтуванням.",
      "tags": [
        "shopping",
        "commerce",
        "recommendations"
      ],
      "examples": [
        "Порівняйте легкі ноутбуки до 1200 доларів."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/shopping/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Агент програмування

Переглядає завдання з кодом, пропонує патчі, і пояснює рішення щодо реалізації.

Чому це побудовано саме так

  • extendedAgentCard дорівнює true: публічна Agent Card перелічує загальну навичку «реалізувати зміну коду», тоді як специфічні для репозиторію навички розкриваються лише автентифікованим клієнтам через GetExtendedAgentCard.
  • Оголошено як text/plain, так і application/json виходи, оскільки агент повертає зрозумілі людині пояснення разом із патчами, придатними для машинного застосування.
  • Потокова передача важлива для довгих циклів компіляції та тестування; клієнти бачать проміжний прогрес замість мовчазного багатохвилинного виклику.
coding.json
{
  "name": "Агент програмування",
  "description": "Допомагає в розробці програмного забезпечення, аналізуючи код, пропонуючи зміни та повертаючи примітки щодо реалізації.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/coding",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Приклад Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "implement-code-change",
      "name": "Впровадити зміну коду",
      "description": "Читає запит на кодування, перевіряє відповідні файли, повертає пропозицію виправлення та підсумовує кроки перевірки.",
      "tags": [
        "coding",
        "review",
        "patches"
      ],
      "examples": [
        "Додайте розбивку на сторінки до API користувачів."
      ]
    }
  ],
  "securitySchemes": {
    "apiKey": {
      "apiKeySecurityScheme": {
        "location": "header",
        "name": "X-API-Key"
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ]
}

Агент досліджень

Збирає джерела, видобуває докази, і повертає структуровані дослідницькі нотатки.

Чому це побудовано саме так

  • Взагалі немає securitySchemes: кінцева точка навмисно публічна, і пропуск поля — правильний спосіб це висловити — порожня карта схем була б неоднозначною.
  • Вхід — лише text/plain, оскільки дослідницькі брифи починаються з питань природною мовою; структурований вихід надходить у вигляді нотаток application/json.
  • Це мінімально корисна Agent Card v1.0: ідентичність, один інтерфейс, можливості, режими, і одна добре позначена тегами навичка.
research.json
{
  "name": "Агент досліджень",
  "description": "Збирає вихідний матеріал, вилучає докази та створює структуровані дослідницькі нотатки з цитатами.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/research",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Приклад Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "prepare-research-brief",
      "name": "Підготуйте резюме дослідження",
      "description": "Здійснює пошук у затверджених джерелах, вилучає заяви та докази та повертає стислий огляд дослідження.",
      "tags": [
        "research",
        "evidence",
        "citations"
      ],
      "examples": [
        "Підготуйте цитований короткий запис про політику щодо відновлюваної енергії."
      ]
    }
  ]
}

Агент внутрішнього робочого процесу

Координує затвердження, перевірки статусу, і оновлення офісного робочого процесу.

Чому це побудовано саме так

  • application/json — єдиний режим вводу та виводу: цей агент викликається іншими системами, ніколи людьми, які вводять прозу.
  • OAuth 2.0 плюс extendedAgentCard підходить для корпоративних аудитів — команди безпеки можуть публічно бачити вимоги до автентифікації, тоді як чутливі навички робочого процесу залишаються за автентифікацією.
  • pushNotifications є важливими, оскільки ланцюги затвердження займають години або дні; вебхуки замінюють опитування для змін стану.
internal-workflow.json
{
  "name": "Агент внутрішнього робочого процесу",
  "description": "Координує внутрішні затвердження, перевіряє стан системи та готує оновлення робочого процесу для операційних груп.",
  "supportedInterfaces": [
    {
      "url": "https://api.example.com/a2a/workflow",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "provider": {
    "organization": "Приклад Inc.",
    "url": "https://example.com"
  },
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": true,
    "extendedAgentCard": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "coordinate-internal-workflow",
      "name": "Скоординуйте внутрішній робочий процес",
      "description": "Отримує наміри робочого процесу, перевіряє вимоги політики, збирає схвалення та звітує про остаточний статус.",
      "tags": [
        "workflow",
        "operations",
        "approval"
      ],
      "examples": [
        "Запит на схвалення для розгортання оновлення платіжної відомості."
      ]
    }
  ],
  "securitySchemes": {
    "oauth2": {
      "oauth2SecurityScheme": {
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://api.example.com/a2a/workflow/oauth/token",
            "scopes": {
              "agent.invoke": "Invoke agent skills"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "oauth2": [
        "agent.invoke"
      ]
    }
  ]
}

Адаптуйте впевнено

Як адаптувати приклад Agent Card

Кожен приклад Agent Card навмисно достатньо повний для копіювання, але Agent Card не слід публікувати без змін. Ставтеся до неї як до карти полів для вашого власного сервера A2A: замініть ідентичність, кінцеву точку, провайдера, автентифікацію, можливості, режими, і деталі навичок на виробничі значення.

Найсильніші Agent Card пояснюють межу завдання агента як простою мовою, так і машинозчитуваними метаданими. Клієнт повинен мати можливість визначити, що агент може робити, чого не може, який URL викликати, і чи потрібні облікові дані.

Перед публікацією

Замініть кожен URL example.com на розгорнуту кінцеву точку A2A та веб-сайт провайдера.

Перепишіть назву навички, опис, теги (обов'язкові в v1.0), і приклади для реальної межі завдання.

Встановіть provider.organization і підвищуйте version верхнього рівня щоразу, коли змінюється вміст Agent Card.

Видаляйте поля автентифікації лише тоді, коли кінцева точка навмисно публічна.

Тримайте defaultInputModes і defaultOutputModes узгодженими з тим, що ваш сервер фактично приймає і повертає.

Перевірте остаточний JSON і опублікуйте його за адресою /.well-known/agent-card.json на домені вашого сервісу.

Готові до створення

Почніть з прикладу, а потім зробіть його своїм.

Відкрийте будь-який шаблон у генераторі Agent Card, перегляньте JSON, і перевірте його перед публікацією.