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

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

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