A2A Protocol
Глава 11 из 12
Зачем A2A?
Когда в системе работают несколько агентов, им нужно договариваться: кто что делает, кто кому передаёт результат, как уточнять детали. Без стандарта каждый разработчик изобретает свой протокол — JSON-схемы, REST-ручки, форматы ошибок.
Agent2Agent (A2A) Protocol — открытый стандарт, разработанный Google и переданный Linux Foundation в апреле 2025 года. Он определяет единый язык для взаимодействия агентов независимо от фреймворка, языка или вендора.
A2A vs MCP
A2A и MCP — не конкуренты, а взаимодополняющие стандарты:
| MCP | A2A | |
|---|---|---|
| Что соединяет | Агент → Инструменты | Агент → Агент |
| Формат | JSON-RPC | JSON-RPC, gRPC, HTTP/REST |
| Discovery | Клиент сам знает сервер | Agent Card через /.well-known/agent.json |
| Модель | Запрос → Ответ | Task-oriented: клиент ставит задачу, агент выполняет |
| Long-running tasks | Не предусмотрено | Polling, Streaming, Push-уведомления |
| UX negotiation | Нет | Изображения, видео, веб-формы, контент-тайпы |
MCP отвечает за "как агенту подключиться к данным и инструментам", A2A — за "как агентам сотрудничать друг с другом".
Ключевые понятия
Протокол работы
A2A использует архитектуру клиент — сервер. Агент-клиент находит агента-сервера через Agent Card, отправляет задачу и получает результат:
- Discovery: клиент запрашивает
/.well-known/agent.json - Task submission: клиент отправляет POST с
task_idиquery - Execution: сервер выполняет задачу (возможно, с уточнениями)
- Delivery: клиент получает результат через polling, streaming или push
Модель данных
A2A определяет canonical data model через Protocol Buffers. Вот ключевые типы на TypeScript:
Agent Card
Каждый A2A-совместимый агент публикует Agent Card — JSON-документ с описанием своих возможностей. Это аналог OpenAPI-спецификации или well-known эндпоинта в OAuth:
Сервер (A2A Agent)
Сервер реализует два эндпоинта: /.well-known/agent.json для discovery и /a2a/task для приёма задач. Для long-running задач — отдельный эндпоинт для проверки статуса:
Клиент (A2A Consumer)
Клиент находит агента через discovery, отправляет задачу и опрашивает статус через polling. Для быстрых задач можно использовать streaming:
Симуляция A2A-диалога
Ниже — симуляция диалога между агентом-консьержем и агентом-пиццерией по протоколу A2A. Клиент находит агента, отправляет задачу, получает уточняющий вопрос и финальный результат:
Экосистема A2A
A2A поддерживается ведущими фреймворками: