Начало / Протокол
Протокол
Привязки, версии и параметры сервиса
Протокол описывает, как клиент и агент обмениваются данными. Модель данных и операции сформулированы независимо от транспорта, а на практике вы выбираете одну из привязок и пользуетесь одиннадцатью операциями.
Привязки#
A2A определён в трёх привязках. Все они ДОЛЖНЫ давать функционально эквивалентные представления структур данных.
| Привязка | Как устроена |
|---|---|
| JSON-RPC 2.0 | Запросы JSON-RPC по HTTP, потоковая передача через Server-Sent Events. Раздел 9 оригинала. |
| gRPC | Службы и вызовы gRPC на основе a2a.proto. Раздел 10 оригинала. |
| HTTP+JSON/REST | Ресурсные адреса и методы HTTP, например POST /message:send. Раздел 11 оригинала. |
Для HTTP+JSON/REST зарегистрирован тип содержимого application/a2a+json. Протокол можно переносить и на другие транспорты: см. страницу «Custom Protocol Bindings» оригинальной документации.
Пример запроса в привязке HTTP+JSON:
POST /message:send HTTP/1.1
Host: agent.example.com
Content-Type: application/a2a+json
A2A-Version: 1.0
Authorization: Bearer token
{
"message": {
"role": "ROLE_USER",
"parts": [{"text": "Найди рестораны рядом"}],
"messageId": "msg-uuid"
}
}Версионирование#
Версия протокола задаётся элементами Major.Minor версии спецификации, например 1.0. Номера патчей не влияют на совместимость: их НЕ СЛЕДУЕТ указывать в запросах, ответах и Agent Card, и они НЕ ДОЛЖНЫ учитываться, когда клиент и сервер согласуют версию.
Что делает клиент#
- Клиент ДОЛЖЕН отправлять заголовок
A2A-Versionс каждым запросом. Это сохраняет совместимость после того, как агент обновится до новой версии протокола. Исключение — клиенты версии 0.3: при пустом заголовке считается, что версия 0.3. - Версию МОЖНО передать и параметром запроса
A2A-Version=1.0вместо заголовка. - Клиентским агентам, которым нужны новейшие возможности, СЛЕДУЕТ запрашивать конкретные версии и избегать автоматического отката на старые, чтобы незаметно не потерять функциональность.
Что делает сервер#
- Агент ДОЛЖЕН обрабатывать запрос по семантике запрошенной версии (совпадение
Major.Minor). Если интерфейс эту версию не поддерживает, агент ДОЛЖЕН вернутьVersionNotSupportedError. - Пустое значение агент ДОЛЖЕН трактовать как версию 0.3.
- Агент МОЖЕТ открыть несколько интерфейсов одного транспорта с разными версиями, по одному и тому же или по разным адресам.
Инструменты и SDK#
Библиотеки и SDK, которые реализуют A2A, ДОЛЖНЫ помогать клиентам управлять версиями: например, согласовывать транспорт и версию протокола.
Параметры сервиса#
Параметры сервиса — пары «ключ — значение», которые передаются вместе с операциями и применимы ко всем запросам. Ключи не зависят от регистра, значения зависят. Способ передачи определяет привязка: HTTP-заголовки для HTTP-привязок, метаданные для gRPC. Пользовательские привязки ДОЛЖНЫ описать этот способ.
| Имя | Описание | Пример значения |
|---|---|---|
A2A-Extensions |
Список URI расширений через запятую, которые клиент хочет использовать в запросе. | https://example.com/extensions/geolocation/v1 |
A2A-Version |
Версия протокола A2A, которую использует клиент. Если версия не поддерживается, агент возвращает VersionNotSupportedError. |
1.0 |
Все параметры сервиса, определённые спецификацией, начинаются с a2a-, чтобы не конфликтовать с параметрами транспорта и инфраструктуры.
Операции#
Одиннадцать операций делятся на четыре группы. Таблица с запросами, ответами и описанием приведена на странице «Методы».
- Отправка сообщений:
SendMessage,SendStreamingMessage. - Работа с задачами:
GetTask,ListTasks,CancelTask,SubscribeToTask. - Push-уведомления:
CreateTaskPushNotificationConfig,GetTaskPushNotificationConfig,ListTaskPushNotificationConfigs,DeleteTaskPushNotificationConfig. - Agent Card:
GetExtendedAgentCard.
Дальше#
- Методы: операции и их поведение.
- Обновления задач: опрос, поток и push.
- Ошибки: категории и ошибки A2A.
- Миграция с 0.3 на 1.0: что изменилось в протоколе.