Конспект: Протокол Agent2Agent (A2A) от Google
Дмитрий Жечков https://t.me/llm_notes1. Основная концепция A2A 📝
Определение:
- Открытый протокол для обеспечения взаимодействия между ИИ-агентами
- Позволяет агентам общаться независимо от базовой платформы или разработчика
- Ориентирован на выполнение задач и обмен информацией
Ключевое отличие от MCP (Model Context Protocol):
- MCP (от Anthropic) фокусируется на предоставлении инструментов и контекста для отдельных агентов
- A2A фокусируется на коммуникации между агентами и координации их действий
- A2A дополняет MCP, а не конкурирует с ним
2. Архитектура протокола 🏗️
Участники взаимодействия:
- Пользователь: конечный пользователь (человек или сервис)
- Клиент: сущность, запрашивающая действие от удаленного агента
- Удаленный агент (сервер): "черный ящик", выполняющий запрошенные действия
Транспортный уровень:
- Использует HTTP для обмена данными между клиентом и удаленным агентом
- Применяет JSON-RPC 2.0 как формат обмена данными
- Поддерживает SSE (Server-Sent Events) для потоковой передачи обновлений
3. Ключевые возможности A2A 🔑
1. Безопасное сотрудничество:
- Следует спецификации аутентификации Open API
- Не передает информацию об идентификации внутри протокола A2A
- Использует материалы аутентификации (токены) вне полосы передачи
- Передает требования аутентификации в заголовках HTTP
2. Управление задачами и состояниями:
- Задачи (Tasks) - основные объекты для совместной работы агентов
- Поддерживает асинхронные и долгосрочные задачи
- Отслеживает статус выполнения задач (submitted, working, input-required, completed, canceled, failed)
- Позволяет клиентам опрашивать агентов для получения обновлений
3. Согласование пользовательского опыта:
- Агенты могут обмениваться сообщениями (Messages) с различными типами контента
- Поддерживает различные модальности (текст, файлы, структурированные данные)
- Позволяет согласовывать формат взаимодействия между агентами
4. Обнаружение возможностей:
- Использует "Agent Card" в формате JSON для описания возможностей агента
- Позволяет клиентам идентифицировать наиболее подходящего агента для задачи
- Включает информацию о навыках, поддерживаемых модальностях и требованиях аутентификации
4. Основные объекты протокола 📦
Task (Задача):
json
{
"id": "string",
"sessionId": "string",
"status": {
"state": "working",
"message": { /* Message object */ },
"timestamp": "ISO datetime"
},
"history": [ /* Message objects */ ],
"artifacts": [ /* Artifact objects */ ],
"metadata": { /* Custom metadata */ }
}
Artifact (Артефакт):
json
{
"name": "string",
"description": "string",
"parts": [ /* Part objects */ ],
"metadata": { /* Custom metadata */ },
"index": 0,
"append": false,
"lastChunk": false
}
Message (Сообщение):
json
{
"role": "user" | "agent",
"parts": [ /* Part objects */ ],
"metadata": { /* Custom metadata */ }
}
Part (Часть):
- TextPart: текстовое содержимое
- FilePart: файловое содержимое (с поддержкой base64 или URI)
- DataPart: структурированные данные
5. Уникальные особенности A2A 🌟
Асинхронность:
- Поддержка как стандартных запрос/ответ паттернов, так и потоковых обновлений
- Возможность получения push-уведомлений при отключении
- Поддержка очень длительных задач и участия человека в процессе
Модальная агностичность:
- Работа не только с текстом, но и с аудио, видео, формами, iframe и др.
- Возможность согласования поддерживаемых типов контента между агентами
Непрозрачное выполнение:
- Агенты не обязаны делиться своими мыслями, планами или инструментами
- Обмен только контекстом, статусом, инструкциями и данными
Корпоративная готовность:
- Встроенная поддержка корпоративной аутентификации и авторизации
- Поддержка отслеживания и мониторинга
- Соответствие требованиям безопасности и конфиденциальности
6. Методы взаимодействия 🔄
Основные методы:
- tasks/send: отправка новой задачи или продолжение существующей
- tasks/get: получение информации о задаче и сгенерированных артефактах
- tasks/cancel: отмена ранее отправленной задачи
- tasks/pushNotification/set: настройка push-уведомлений для задачи
- tasks/sendSubscribe: создание задачи с подпиской на потоковые обновления
- tasks/resubscribe: повторная подписка на обновления задачи
Поддержка многоходовых диалогов:
- Задача может приостанавливаться, если требуется дополнительный ввод от пользователя
- Клиент может предоставить дополнительную информацию для возобновления задачи
7. Практические сценарии использования 💼
Подбор кандидатов:
- Агент менеджера по найму взаимодействует с агентами поиска кандидатов
- Координация процесса собеседования и проверки биографии
- Автоматизация всего процесса найма
Другие потенциальные сценарии:
- Автоматизация заказа оборудования и IT-поддержки
- Координация между агентами обслуживания клиентов
- Планирование цепочки поставок
- Интеграция различных корпоративных систем
8. Сравнение A2A и MCP 🔍

9. Текущий статус и перспективы 🔮
Текущий статус:
- Опубликована предварительная спецификация и документация https://google.github.io/A2A/#/documentation
- Доступны примеры кода и образцы использования https://github.com/google/A2A/tree/main/samples
- Более 50 партнеров-участников
Планы развития:
- Выпуск производственной версии протокола в течение года
- Расширение функциональности и примеров использования
- Создание стабильных SDK на основе спецификации
Как присоединиться:
- Изучение спецификации на GitHub https://github.com/google/A2A
- Экспериментирование с примерами кода
- Предложение идей и участие в развитии протокола