(Нажмите на изображение выше, чтобы посмотреть видео этого урока)
По мере роста использования AI-агентов увеличивается потребность в протоколах, которые обеспечивают стандартизацию, безопасность и поддерживают открытую инновационную деятельность. В этом уроке мы рассмотрим 3 протокола, направленных на удовлетворение этой потребности — Model Context Protocol (MCP), Agent to Agent (A2A) и Natural Language Web (NLWeb).
В этом уроке мы рассмотрим:
• Как MCP позволяет AI-агентам получать доступ к внешним инструментам и данным для выполнения задач пользователя.
• Как A2A обеспечивает коммуникацию и сотрудничество между разными AI-агентами.
• Как NLWeb внедряет интерфейсы на естественном языке для любого веб-сайта, позволяя AI-агентам обнаруживать и взаимодействовать с контентом.
• Определить основное назначение и преимущества MCP, A2A и NLWeb в контексте AI-агентов.
• Объяснить, как каждый протокол облегчает коммуникацию и взаимодействие между LLM, инструментами и другими агентами.
• Распознать уникальные роли каждого протокола в построении сложных агентных систем.
Model Context Protocol (MCP) — это открытый стандарт, который предоставляет стандартизированный способ для приложений обеспечивать контекст и инструменты для LLM. Это позволяет создать «универсальный адаптер» к различным источникам данных и инструментам, к которым AI-агенты могут подключаться единообразно.
Рассмотрим компоненты MCP, преимущества по сравнению с прямым использованием API и пример того, как AI-агенты могут использовать MCP-сервер.
MCP работает на основе клиент-серверной архитектуры, и его основные компоненты:
• Хосты — это приложения LLM (например, кодовый редактор, такой как VSCode), которые инициируют соединения с MCP-сервером.
• Клиенты — компоненты внутри хост-приложения, поддерживающие соединения один-к-одному с серверами.
• Серверы — легковесные программы, предоставляющие определённые возможности.
В протоколе определены три основных примитива, которые представляют возможности MCP-сервера:
• Инструменты: это отдельные действия или функции, которые AI-агент может вызвать для выполнения задачи. Например, сервис прогноза погоды может предоставить инструмент “получить погоду”, или сервер электронной коммерции — инструмент “купить товар”. MCP-серверы публикуют имя, описание и схему ввода/вывода каждого инструмента в списке своих возможностей.
• Ресурсы: элементы данных или документы только для чтения, которые MCP-сервер может предоставить, и клиенты могут запрашивать их по требованию. Примеры включают содержимое файлов, записи баз данных или журналы. Ресурсы могут быть текстовыми (например, код или JSON) или бинарными (например, изображения или PDF).
• Запросы (Prompts): заранее определённые шаблоны, предоставляющие предложенные формулировки, позволяющие создавать более сложные рабочие процессы.
MCP предоставляет значительные преимущества для AI-агентов:
• Динамическое обнаружение инструментов: агенты могут динамически получать список доступных инструментов от сервера с описаниями того, что они делают. Это отличается от традиционных API, которые часто требуют статического кодирования интеграций, что означает необходимость обновления кода при любом изменении API. MCP предлагает подход “подключился один раз”, обеспечивая большую адаптивность.
• Взаимодействие между разными LLM: MCP работает с разными LLM, предоставляя гибкость для переключения между основными моделями для оценки лучшей производительности.
• Стандартизованная безопасность: MCP включает стандартный метод аутентификации, что упрощает масштабирование при добавлении доступа к дополнительным MCP-серверам. Это проще, чем управление разными ключами и типами аутентификации для различных традиционных API.

Представьте, что пользователь хочет забронировать рейс с помощью AI-помощника, работающего на базе MCP.
Подключение: AI-помощник (клиент MCP) подключается к MCP-серверу авиакомпании.
Обнаружение инструментов: Клиент запрашивает у MCP-сервера авиакомпании: «Какие инструменты у вас есть?» Сервер отвечает инструментами, такими как “поиск рейсов” и “бронирование рейсов”.
Вызов инструмента: Вы затем просите AI-помощника: «Пожалуйста, поищи рейс из Портленда в Гонолулу». AI-помощник с помощью своего LLM определяет, что нужно вызвать инструмент “поиск рейсов” и передаёт соответствующие параметры (место отправления, место назначения) MCP-серверу.
Выполнение и ответ: MCP-сервер, выступая в роли обёртки, осуществляет реальный вызов внутреннего API авиакомпании для бронирования. Затем он получает информацию о рейсе (например, в формате JSON) и передаёт ее обратно AI-помощнику.
Дальнейшее взаимодействие: AI-помощник показывает варианты рейсов. После выбора вами рейса помощник может вызвать инструмент “забронировать рейс” на том же MCP-сервере, завершая процесс бронирования.
В то время как MCP сосредоточен на подключении LLM к инструментам, протокол Agent-to-Agent (A2A) расширяет это, обеспечивая коммуникацию и сотрудничество между разными AI-агентами. A2A соединяет AI-агентов из разных организаций, окружений и технологических стеков для выполнения общей задачи.
Мы изучим компоненты и преимущества A2A, а также пример его применения в нашем приложении для путешествий.
A2A ориентирован на обеспечение общения между агентами и совместное выполнение подзадачи пользователя. Каждый компонент протокола способствует этому:
Аналогично тому, как MCP-сервер делится списком инструментов, в карточке агента содержится:
Исполнитель агента отвечает за передачу контекста чата пользователя удалённому агенту, который нуждается в этом, чтобы понять задачу для выполнения. В A2A сервере агент использует собственную большую языковую модель (LLM) для обработки входящих запросов и выполнения задач с использованием собственных внутренних инструментов.
После того как удалённый агент выполнит запрос, создаётся артефакт. Артефакт содержит результат работы агента, описание выполненного, а также текстовый контекст, который передаётся через протокол. После отправки артефакта соединение с удалённым агентом закрывается до следующего использования.
Этот компонент используется для обработки обновлений и передачи сообщений. Это особенно важно в продуктивных системах, чтобы предотвратить разрыв соединения между агентами до завершения задачи, особенно если выполнение задачи может занять длительное время.
• Улучшенное сотрудничество: позволяет агентам от разных поставщиков и платформ взаимодействовать, обмениваться контекстом и работать вместе, обеспечивая бесшовную автоматизацию между традиционно разобщёнными системами.
• Гибкость выбора модели: каждый агент A2A может выбирать, какую LLM использовать для обработки запросов, что позволяет оптимизировать или тонко настраивать модели для каждого агента, в отличие от сценариев MCP с единственным подключением к LLM.
• Встроенная аутентификация: аутентификация интегрирована непосредственно в протокол A2A, обеспечивая надёжную безопасность взаимодействий между агентами.

Расширим наш сценарий бронирования путешествий, но теперь с использованием A2A.
Запрос пользователя к мультиагенту: пользователь взаимодействует с клиентом/агентом A2A «Туристический агент», например, говоря: «Пожалуйста, забронируй полностью поездку в Гонолулу на следующую неделю, включая перелёты, отель и аренду машины».
Оркестровка туристическим агентом: Туристический агент получает этот сложный запрос. Он использует свою LLM для анализа задачи и определения необходимости взаимодействия с другими специализированными агентами.
Межагентская коммуникация: Туристический агент использует протокол A2A для подключения к подчинённым агентам, таким как «Агент авиакомпании», «Агент отеля» и «Агент аренды автомобилей», созданным разными компаниями.
Делегированное выполнение задач: Туристический агент отправляет конкретные задачи этим специализированным агентам (например, «Найти рейсы в Гонолулу», «Забронировать отель», «Арендовать машину»). Каждый из этих специализированных агентов, используя свои LLM и свои инструменты (которые могут быть MCP-серверами), выполняет свою часть бронирования.
Обобщённый ответ: После того, как все подчинённые агенты завершат задачи, Туристический агент компилирует результаты (детали рейсов, подтверждение брони отеля, подтверждение аренды машины) и отправляет пользователю подробный ответ в формате чата.
Веб-сайты долгое время были основным способом доступа пользователей к информации и данным в интернете.
Рассмотрим различные компоненты NLWeb, преимущества NLWeb и пример работы NLWeb на примере нашего приложения для путешествий.
Приложение NLWeb (основной сервисный код): система, обрабатывающая вопросы на естественном языке. Она связывает различные части платформы для создания ответов. Можно представить её как двигатель, обеспечивающий функции обработки естественного языка для веб-сайта.
Протокол NLWeb: это базовый набор правил для взаимодействия на естественном языке с веб-сайтом. Он возвращает ответы в формате JSON (часто используя Schema.org). Его цель — создать простую основу для «AI Web» так же, как HTML сделал возможным обмен документами онлайн.
MCP сервер (конечная точка протокола Model Context Protocol): каждая инсталляция NLWeb также функционирует как MCP-сервер. Это означает, что сайт может делиться инструментами (например, методом “ask”) и данными с другими AI-системами. На практике это делает контент и возможности сайта доступными для AI-агентов, позволяя сайту становиться частью более широкой «эко-системы агентов».
Модели эмбеддингов (Embedding Models): эти модели используются для преобразования содержимого сайта в числовые представления — векторы (эмбеддинги). Эти векторы захватывают смысл так, чтобы компьютер мог их сравнивать и искать по ним. Векторы хранятся в специальной базе данных, а пользователи могут выбирать, какую модель эмбеддингов использовать.
Векторная база данных (механизм поиска): эта база данных хранит эмбеддинги содержимого сайта. Когда кто-то задаёт вопрос, NLWeb обращается к векторной базе быстрее находить наиболее релевантную информацию. Он предоставляет быстрый список возможных ответов, ранжированных по степени сходства. NLWeb работает с разными системами векторного хранилища, такими как Qdrant, Snowflake, Milvus, Azure AI Search и Elasticsearch.

Рассмотрим снова сайт бронирования путешествий, но на этот раз, работающий с NLWeb.
Загрузка данных: существующие каталоги продуктов сайта путешествий (например, списки рейсов, описания отелей, туры) форматируются с использованием Schema.org или загружаются через RSS-ленты. Инструменты NLWeb обрабатывают эти структурированные данные, создают эмбеддинги и сохраняют их в локальной или удалённой векторной базе данных.
Запрос на естественном языке (человек): пользователь посещает сайт и вместо навигации по меню вводит в чат: «Найди для меня отель, подходящий для семьи, с бассейном в Гонолулу на следующую неделю».
Обработка NLWeb: приложение NLWeb принимает этот запрос. Отправляет запрос в LLM для понимания и одновременно ищет по векторной базе соответствующие отели.
Точные результаты: LLM помогает интерпретировать результаты поиска из базы данных, определить лучшие совпадения по критериям «подходит для семьи», «бассейн» и «Гонолулу», а затем форматирует ответ на естественном языке. Ключевое — ответ ссылается на реальные отели из каталога сайта и не содержит выдуманной информации.
Взаимодействие AI-агента: поскольку NLWeb работает как MCP-сервер, внешний AI-агент путешествий также может подключиться к этому экземпляру NLWeb сайта. AI-агент может использовать метод ask MCP, чтобы запросить сайт напрямую: ask("Есть ли в районе Гонолулу веганские рестораны, рекомендованные отелем?"). Экземпляр NLWeb обработает этот запрос, используя базу данных ресторанов (если она загружена), и вернёт структурированный ответ в формате JSON.
Присоединяйтесь к Microsoft Foundry Discord, чтобы встретиться с другими изучающими, посещать консультации и получить ответы на вопросы о AI-агентах.
Инжиниринг контекста для AI-агентов
Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.