Протоколы MCP (Model Context Protocol) и A2A (Agent-to-Agent) быстро меняют наши традиционные представления об архитектуре программного обеспечения. Независимо от того, занимаетесь ли вы разработкой стратегии или созданием решений, мы расскажем о них, чтобы избежать распространенных ошибок, допускаемых при интеграции новых технологий.
К концу этой статьи вы все поймете:
- Что такое MCP и зачем его использовать
- Что такое A2A и какое место он занимает в вашем стеке
- Когда использовать каждый протокол
- Почему в будущем вы, скорее всего, будете использовать оба варианта
Что такое MCP и A2A – и почему это должно вас волновать?
Мы находимся на переднем крае одного из крупнейших сдвигов парадигмы в современной истории. Искусственный интеллект в том или ином контексте используется практически всеми на повседневной основе. В рабочих процессах и архитектуре модель, используемая для выполнения задачи, называется “агентом”.
В основе большинства ваших текущих приложений лежит протокол Model Context Protocol (MCP). Протокол Agent-to-Agent (A2A) на самом деле является скорее развивающимся набором функций, чем четко определенным протоколом.
- MCP: используется для управления контекстом и внутренним состоянием модели. Вы, вероятно, каждый день взаимодействуете с MCP. Такие модели, как Grok, ChatGPT и CoPilot, используют MCP для управления контекстом и задачами общего назначения. При создании собственного агента вы, скорее всего, напишете собственный MCP.
- A2A: Когда две или более моделей разговаривают друг с другом, это процесс “агент-агент”. Каждый агент по-прежнему следует своей собственной MCP. Процесс их общения называется A2A. Его можно представить как разговорный и письменный язык между людьми.
Модель Контекст Протокол – Мозг
MCP можно представить как “мозг” машины. MCP охватывает все внутренние процессы задачи – от интерпретации языка до ее завершения.
На сайте X вы можете найти бесконечный поток сообщений, в которых пользователи отвечают “@grok”, после чего следует вопрос или утверждение. Grok интерпретирует вопрос пользователя и отвечает на него сообщением, относящимся к теме. Это хрестоматийный MCP, воплощающий в жизнь реальный сценарий использования.
1. Маршрутизация запросов
Наш первый шаг включает в себя “Маршрутизацию запросов”. Когда вы говорите: “@grok, не могли бы вы проверить этот пост?”, Grok выполняет поиск и считывает соответствующий текст. Если вы скажете: “@grok, пожалуйста, опишите этот пост в виде изображения.”, Grok направит запрос в другую Aurora. Подробнее об Aurora можно прочитать здесь.
- Вы делаете первоначальный запрос.
- Агент интерпретирует запрос и выбирает модель для обработки запроса.
2. Подбор инструментов
После того как задача передана конкретной модели ИИ, она выбирает инструменты для выполнения поставленной задачи. Если вам нужно повесить полку, вы, скорее всего, возьмете молоток и гвозди, или дрель и шурупы – именно это и делает модель.
Этими инструментами могут быть поисковая система, калькулятор, интерпретатор Python – буквально все, что угодно. Если бы Grok попросили проверить факты, он, скорее всего, выбрал бы два инструмента.
- Поисковая система: модель выполняет поиск и оценивает “надежные” результаты. Я не утверждаю, что результаты Grok заслуживают доверия, они используются только для контекста.
- Калькулятор: Если сообщение кажется преувеличенным или преуменьшенным, возможно, статистика COVID, Grok должен использовать калькулятор, чтобы сложить числа из поиска и сообщения пользователя.
3. Передача сервера
После того как модель структурировала задачу и выбрала инструменты, ей нужно передать задание. Сначала она сообщает поисковой системе, какой запрос нужно выполнить. Получив цифры, она отправляет серию вычислений на калькулятор.
Термин “сервер” здесь используется в свободном смысле. В зависимости от вашей модели и настроек, этот “сервер” может быть чем-то, работающим внутри центра обработки данных, или даже работать на http://localhost:6000-or
любом другом порту, если на то пошло. Суть проста: инструменты прослушивают задания, а модель отправляет эти задания инструментам.
- Инструменты прослушивают порты: Модель передает задание нужному инструменту “серверу”. Она делает HTTP-запрос к серверу и ожидает ответа. По сути, Grok отправляет серверу запрос “1+1=?”.
- Сервер отправляет ответ: Сервер отправляет ответ с данными о выполненном задании. Сервер может сказать: “1+1=2”. Теперь Grok может принять ответ и использовать его в правильном контексте.
4. Контрольные точки (по желанию – человеческие)
Прежде чем отправить ответ агенту для вывода, необходимо проверить результаты работы модели. Возможно, вы не осознаете этого, но предвзятость и плохие результаты все еще существуют в моделях сегодня. Чтобы предотвратить неправильный ответ типа “1+1=3” или “1+1=рагЬаіт”, вывод проходит через одну или несколько контрольных точек.
В зависимости от контекста задачи, этими контрольными точками могут быть люди, а могут быть модели, выполняющие ту же самую работу. Суть проста: не позволяйте плохим результатам попадать к пользователю.
- Контрольная точка: Либо человек, либо модель дважды проверяют результаты выполнения задачи. Это предотвращает попадание нелепых и неудобных результатов к пользователю.
- Исправление: Если результат действительно плохой, агент должен повторить задание – он может использовать ту же модель или передать задание другой модели.
- Фактический результат: После проверки результатов Grok публикует их в ответе человеку, который использовал “@grok”.
Протокол “агент-агент” – коммуникация между мозгами
Если MCP – это общая функция мозга агента, то A2A – это то, как несколько мозгов общаются друг с другом. В реальной жизни несколько агентов уже общаются друг с другом. Представьте, что вы разговариваете с ChatGPT.
Вы и ChatGPT разговариваете о кошках. Это длинный разговор, и он переходит на все темы. Маленькие кошки, большие кошки, умные кошки… Затем вы решаете рассказать ChatGPT о своей кошке. Вы хотите сделать смешную картинку, на которой ваша кошка стремится к мировому господству (ведь все кошки в глубине души этого хотят).
ChatGPT сам не может создать образ. ChatGPT передает эту задачу DALL-E, подобно тому как Grok использует Aurora. Агент, выполняющий ChatGPT, будет общаться с агентом, выполняющим DALL-E, чтобы выполнить задачу.
Карточка агента: README для вашего агента
Карточки агента используются для того, чтобы показать другим, что может делать ваш агент ИИ. Это должно показать людям, как к нему подключиться и каких результатов от него ожидать. Здесь не нужно глубоко вникать в суть. Вы не проводите пользователей через свой код, а объясняете на ультрабазовых примерах использования и их ожидаемый результат. Если вы когда-нибудь читали документацию по API, вы поймете, что здесь уместно, а что нет.
- Подключение: Покажите, как безопасно подключиться к агенту. Если вы демонстрируете REST API, используйте примеры HTTPS с реальным доменом, а не голый HTTP на локальном хосте. Если ваш агент управляется с помощью SDK, покажите, как подключиться с помощью SDK.
- Простое использование: Для REST API это довольно стандартные конечные точки и выходные данные. Если используется SDK, покажите основные классы и методы.
- Пример вывода: Под каждым фрагментом использования следует показать еще один фрагмент с примером вывода.
При написании A2A-приложения вы будете использовать карту агента для соединения нескольких агентов вместе. При создании собственных агентов другие будут использовать их через карту агента.
Относитесь к людям так, как хотите, чтобы относились к вам.
Система задач: Как создаются и выполняются задачи
Ваша система задач – это, по сути, простое CRUD-приложение (Create, Read, Update, Delete). Пользователь должен иметь возможность создать задачу. Он должен иметь возможность прочитать ее статус. И пользователь, и агент должны обновлять задачу. В данном случае удаление – это скорее метод лучшей практики: если вы создаете приложение todo, которое никогда не перестает расти, это расточительно.
- Создать: Пользователи (в данном случае другие агенты) должны иметь возможность создать новое задание. Агент ChatGPT говорит ДАЛЛ-И, что нам нужен злой кот, решивший править миром.
- Читайте: Пользователям (или другим агентам) необходимо иметь возможность проверять статус задачи. Когда в ChatGPT написано “Создание изображения”, это значит, что статус “в процессе”. Агенты всегда должны иметь возможность читать и передавать статус задания.
- Обновление: Вы забыли сообщить ChatGPT, что хотите, чтобы на вашей кошке был бабочка. Вы должны иметь возможность обновить подсказку, чтобы получить более качественное изображение. Кроме того, DALL-E должен обновлять статус задания, пока ChatGPT ожидает его выполнения.
- Удалить: Компании все чаще игнорируют эту базовую функцию, уделяя больше внимания озерам данных, чем эффективности. Ваш агент должен иметь возможность удалить задачу – хранить отмененные задачи не только бессмысленно, но и бесполезно.
Безопасный обмен сообщениями
Сообщения между агентами должны быть безопасными. Давайте сделаем шаг назад в общую информатику и подумаем о SSL и HTTPS-соединениях. Когда вы отправляете запрос через HTTPS/SSL, тело запроса шифруется. Прочитать его может только сервер. Когда сервер отправляет свой ответ, он шифруется так, что прочитать его может только ваш браузер.
Агенты должны следовать этому же принципу. При работе с несколькими агентами ИИ (которые, вероятно, заменяют собой полностью человеческие задачи) иногда может быть задействована конфиденциальная информация. Такие агенты также должны использовать протокол шифрования.
- Шифрование: Когда агенты обмениваются сообщениями, они должны быть зашифрованы из конца в конец. Любой, кто перехватит сообщение, сможет увидеть только беспорядочный мусор.
- Аутентификация: При использовании надлежащих методов аутентификации, таких как цифровые подписи, агенты могут знать, с кем они разговаривают. При привязке к конкретному отпечатку пальца информация о задачах доступна только тем, кто имеет соответствующий доступ.
Поддержка длительных заданий
Некоторые задания выполняются не сразу. Иногда они занимают несколько часов, а то и дней! Когда такое случается, ваш агент должен быть коммуникабельным. Особенно если в задании участвуют несколько агентов, пользователь должен получать от них информацию о состоянии дел.
- Обновления в режиме реального времени: Ваши агенты должны обновлять свой статус в режиме реального времени. Это позволит пользователю проверять статус в удобное для него время.
- Уведомления и электронная почта: Ваши агенты также должны отправлять обновления статуса постепенно. Когда задача завершена, отправьте электронное письмо или push-уведомление.
Ваши агенты должны держать пользователей в курсе событий, не забрасывая их спамом. Пользователи используют ваш A2A для удобства – сделайте длительные задачи максимально удобными.
Мультимодальная коммуникация
Часто в процессах A2A приходится иметь дело с мультимодальными задачами. Вспомните пример с ChatGPT и DALL-E. ChatGPT занимается собственно текстовым общением, а DALL-E – созданием изображений.
- Свободный текст и логика: Часто ими занимаются магистранты, специализирующиеся на обработке естественного языка.
- Генерация изображений и видео: Этими задачами занимаются другие специализированные модели, такие как DALL-E и Sora.
Задачи часто требуют мультимодальных форматов данных. При решении таких мультимодальных задач ваш протокол A2A должен разделять эти задачи между соответствующими моделями.
Когда следует использовать каждый протокол?
Каждый из этих протоколов создан для работы с различными сценариями. MCP работает с внутренним устройством агента – его мозгом. A2A используется для взаимодействия нескольких агентов друг с другом.
Когда использовать | MCP | A2A | Область применения | Стиль общения | Лучшее для | Первичная озабоченность | Пример |
---|---|---|---|---|---|---|---|
Предотвращение ошибок и раннего смещения | ✔️ | ❌ | Одиночный агент | Внутренний | Безопасность и валидация задач | Предотвращение преждевременных действий | ChatGPT проверяет подсказку |
Управление контекстом одного агента | ✔️ | ❌ | Одиночный агент | Внутренний | Решения с учетом контекста | Память + выбор инструмента | Написание кода CoPilot |
Межведомственное общение или передача задач | ❌ | ✔️ | Мультиагентный | Внешний | Делегирование рабочих процессов | Взаимодействие агентов | GPT передает DALL-E |
Сотрудничество со сторонними агентами | ❌ | ✔️ | Мультиагентный | Внешний | Оркестровка задач от поставщика к поставщику | Стандартизация протоколов | Интеграция навыков Alexa Skills |
Создание многоагентной экосистемы | ❌ | ✔️ | Мультиагентный | Внешний | Распределенные агентские системы | Маршрутизация задач + обнаружение | Внутренний конвейер LLM |
Ведение полных журналов аудита (единый агент) | ✔️ | ❌ | Одиночный агент | Внутренний | Регистрация и прослеживаемость | Наблюдаемость | Агент по автоматизации финансов |
Гибкость при работе с различными модальностями (текст, изображение, видео) | ❌ | ✔️ | Мультиагентный | Внешний | Мультимодальная обработка | Сегментация задач | GPT + DALL-E или Sora |
Заключение: В будущем вы будете использовать их оба
MCP и A2A – это не конкурирующие стандарты, а взаимодополняющие системы. MCP – это совокупность внутренних процессов агента. A2A диктует коммуникацию между агентами.
- MCP позволяет вашему агенту вести себя разумно.
- A2A позволяет интеллектуальным агентам общаться друг с другом.
Если вы обучаете свои собственные модели искусственного интеллекта, Bright Data предлагает пользовательские наборы данных с историческими данными, чтобы ваш агент мог заметить тенденции. Нужны данные в реальном времени? Ознакомьтесь с API Scraper – получайтеданные в любое время, когда это необходимо вашему агенту, чтобы он всегда был готов. С помощью Agent Browser ваши агенты могут просматривать веб-страницы как люди – с интеграцией прокси-серверов и решением проблемы CAPTCHA.
Кредитная карта не требуется