ai-agents-for-beginners

Использование агентных протоколов (MCP, A2A и NLWeb)

Агентные протоколы

(Нажмите на изображение выше, чтобы посмотреть видео этого урока)

По мере роста использования ИИ-агентов возрастает и потребность в протоколах, которые обеспечивают стандартизацию, безопасность и поддержку открытых инноваций. В этом уроке мы рассмотрим 3 протокола, нацеленных на удовлетворение этой потребности — Model Context Protocol (MCP), Agent to Agent (A2A) и Natural Language Web (NLWeb).

Введение

В этом уроке мы рассмотрим:

• Как MCP позволяет ИИ-агентам получать доступ к внешним инструментам и данным для выполнения задач пользователя.

• Как A2A обеспечивает коммуникацию и сотрудничество между различными ИИ-агентами.

• Как NLWeb приносит интерфейсы на естественном языке на любой сайт, позволяя ИИ-агентам находить и взаимодействовать с контентом.

Цели обучения

• Определить основное назначение и преимущества MCP, A2A и NLWeb в контексте ИИ-агентов.

• Объяснить как каждый протокол облегчает коммуникацию и взаимодействие между LLM, инструментами и другими агентами.

• Распознать различные роли каждого протокола в построении сложных агентных систем.

Model Context Protocol

Model Context Protocol (MCP) — это открытый стандарт, который предоставляет стандартизированный способ для приложений обеспечивать контекст и инструменты для LLM. Это позволяет иметь «универсальный адаптер» к разным источникам данных и инструментам, к которым ИИ-агенты могут подключаться единообразно.

Рассмотрим компоненты MCP, преимущества по сравнению с прямым использованием API и пример того, как ИИ-агенты могут использовать MCP-сервер.

Основные компоненты MCP

MCP работает по клиент-серверной архитектуре, и основными компонентами являются:

• Хосты — это приложения LLM (например, редактор кода, такой как VSCode), которые инициируют подключение к MCP серверу.

• Клиенты — это компоненты внутри хост-приложения, поддерживающие однонаправленные подключения с серверами.

• Серверы — это облегчённые программы, раскрывающие конкретные возможности.

В протокол включены три основных примитива, которые представляют возможности MCP-сервера:

• Инструменты: Это отдельные действия или функции, которые ИИ-агент может вызвать для выполнения операции. Например, сервис погоды может предоставить инструмент «получить погоду», а сервер электронной коммерции — инструмент «купить товар». MCP-серверы публикуют имя, описание и схему ввода/вывода каждого инструмента в списке своих возможностей.

• Ресурсы: Это данные или документы только для чтения, которые MCP-сервер может предоставить, и клиенты могут запрашивать их по необходимости. Примеры включают содержимое файлов, записи базы данных или журналы. Ресурсы могут быть в виде текста (например, кода или JSON) или бинарных данных (изображения или PDF).

• Подсказки: Предопределённые шаблоны, задающие рекомендованные подсказки, позволяющие создавать более сложные рабочие процессы.

Преимущества MCP

MCP предоставляет значительные преимущества для ИИ-агентов:

• Динамическое обнаружение инструментов: Агенты могут динамически получать список доступных инструментов от сервера вместе с описаниями их функций. В отличие от традиционных API, которые часто требуют статического кодирования для интеграций, что означает обновление кода при изменении API. MCP предлагает подход «подключи один раз», обеспечивая большую гибкость.

• Взаимодействие между разными LLM: MCP работает с разными LLM, обеспечивая возможность менять основную модель для улучшения производительности.

• Стандартизированная безопасность: MCP включает стандартный метод аутентификации, упрощающий масштабирование при добавлении доступа к дополнительным MCP-серверам. Это проще, чем управлять разными ключами и типами аутентификации для различных традиционных API.

Пример MCP

Диаграмма MCP

Представим, что пользователь хочет забронировать авиарейс с помощью AI-помощника, работающего на базе MCP.

  1. Подключение: AI-помощник (клиент MCP) подключается к MCP-серверу авиакомпании.

  2. Обнаружение инструментов: Клиент спрашивает MCP-сервер авиакомпании: «Какие у вас есть доступные инструменты?» Сервер отвечает с инструментами, такими как «поиск рейсов» и «бронирование рейсов».

  3. Вызов инструмента: Пользователь говорит AI-помощнику: «Пожалуйста, найди рейс из Портленда в Гонолулу». AI-помощник, используя свой LLM, понимает, что нужно вызвать инструмент «поиск рейсов» и передаёт соответствующие параметры (город отправления, назначения) MCP-серверу.

  4. Выполнение и ответ: MCP-сервер, действуя как обёртка, делает реальный вызов внутреннего API бронирования авиакомпании. Затем он получает информацию о рейсах (например, данные JSON) и возвращает её обратно AI-помощнику.

  5. Дальнейшее взаимодействие: AI-помощник показывает варианты рейсов. После выбора рейса помощник может вызвать инструмент «бронирование рейса» на том же MCP-сервере, завершая бронирование.

Протокол Агент-агент (A2A)

В то время как MCP ориентирован на соединение LLM с инструментами, протокол Agent-to-Agent (A2A) идёт дальше, позволяя коммуникацию и сотрудничество между разными ИИ-агентами. A2A соединяет ИИ-агентов из разных организаций, сред и технологических стеков для выполнения общей задачи.

Мы рассмотрим компоненты и преимущества A2A, а также пример его применения в нашем приложении для путешествий.

Основные компоненты A2A

A2A фокусируется на обеспечении коммуникации между агентами и их совместной работе над выполнением части задачи пользователя. Каждая часть протокола способствует этому:

Карта агента

Аналогично тому, как MCP-сервер делится списком инструментов, Карта агента содержит:

Исполнитель агента

Исполнитель агента отвечает за передачу контекста чата пользователя удалённому агенту; удалённый агент нуждается в этом, чтобы понять задачу для выполнения. В A2A-сервере агент использует свой собственный Large Language Model (LLM) для анализа входящих запросов и выполнения задач с помощью своих внутренних инструментов.

Артефакт

После завершения запрашиваемой задачи удалённым агентом создаётся артефакт. Артефакт содержит результат работы агента, описание выполненного задания и текстовый контекст, переданный по протоколу. После отправки артефакта соединение с удалённым агентом закрывается до следующего вызова.

Очередь событий

Эта компонента используется для обработки обновлений и передачи сообщений. Она особенно важна в продуктивных агентных системах, чтобы не закрывать соединение между агентами до завершения задачи, особенно если выполнение занимает продолжительное время.

Преимущества A2A

• Улучшенное сотрудничество: Обеспечивает взаимодействие агентов от разных поставщиков и платформ, позволяет обмениваться контекстом и работать совместно, облегчая бесшовную автоматизацию между традиционно разъединёнными системами.

• Гибкость выбора модели: Каждый агент A2A может самостоятельно выбирать, какой LLM использовать для обслуживания своих запросов, что даёт возможность оптимизации или дообучения моделей для каждого агента отдельно, в отличие от единого подключения LLM в некоторых сценариях MCP.

• Встроенная аутентификация: Аутентификация интегрирована напрямую в протокол A2A, предоставляя надежную систему безопасности для взаимодействия агентов.

Пример A2A

Диаграмма A2A

Расширим наш сценарий бронирования путешествия, на этот раз используя A2A.

  1. Запрос пользователя к мультиагенту: Пользователь взаимодействует с клиентом/агентом A2A «Туристический агент», например, говоря: «Пожалуйста, забронируй целую поездку в Гонолулу на следующую неделю, включая рейсы, отель и аренду автомобиля».

  2. Оркестрация Туристическим агентом: Туристический агент получает этот сложный запрос. Он использует свой LLM для анализа задачи и определения необходимости взаимодействия с другими специализированными агентами.

  3. Взаимодействие между агентами: Туристический агент использует протокол A2A для подключения к нижестоящим агентам, таким как «Агент авиакомпании», «Агент отеля» и «Агент аренды автомобиля», созданным разными компаниями.

  4. Делегированное выполнение задач: Туристический агент отправляет конкретные задания этим специализированным агентам (например, «Найди рейсы в Гонолулу», «Забронируй отель», «Арендуй автомобиль»). Каждый из этих специализированных агентов, используя собственный LLM и свои инструменты (которые сами могут быть MCP-серверами), выполняет свою часть бронирования.

  5. Объединённый ответ: После того как все нижестоящие агенты завершают свои задачи, Туристический агент собирает результаты (информация о рейсах, подтверждение отеля, бронь автомобиля) и отправляет пользователю содержательный ответ в стиле чата.

Natural Language Web (NLWeb)

Веб-сайты давно являются основным способом доступа пользователей к информации и данным в интернете.

Рассмотрим разные компоненты NLWeb, преимущества NLWeb и пример работы NLWeb на примере нашего приложения для путешествий.

Компоненты NLWeb

NLWeb на примере

NLWeb

Рассмотрим снова наш сайт бронирования путешествий, но на этот раз он работает с NLWeb.

  1. Поглощение данных: Существующие каталоги продуктов сайта для путешествий (например, списки рейсов, описания отелей, туристические пакеты) форматируются с помощью Schema.org или загружаются через RSS-ленты. Инструменты NLWeb поглощают эти структурированные данные, создают встраивания и сохраняют их в локальной или удалённой векторной базе данных.

  2. Запрос на естественном языке (человек): Пользователь посещает сайт и вместо того, чтобы переходить по меню, вводит в чат: «Найди мне отель в Гонолулу, подходящий для семьи с бассейном на следующую неделю».

  3. Обработка в NLWeb: Приложение NLWeb получает этот запрос. Оно отправляет запрос в LLM для понимания и одновременно ищет в векторной базе релевантные варианты отелей.

  4. Точные результаты: LLM помогает интерпретировать результаты поиска из базы, определить лучшие совпадения по критериям «подходит для семьи», «бассейн», «Гонолулу», а затем формирует ответ на естественном языке. Важно, что ответ ссылается на реальные отели из каталога сайта, избегая выдуманной информации.

  5. Взаимодействие с ИИ-агентом: Поскольку NLWeb работает как MCP-сервер, внешний ИИ-туристический агент также может подключиться к экземпляру NLWeb этого сайта. Тогда агент может использовать MCP-метод ask, чтобы задать сайты напрямую: ask("Есть ли в районе Гонолулу рестораны, дружелюбные к веганам, рекомендованные отелем?"). Экземпляр NLWeb обработает запрос, используя свою базу данных ресторанов (если она загружена), и вернёт структурированный JSON-ответ.

Есть ещё вопросы про MCP/A2A/NLWeb?

Присоединяйтесь к Microsoft Foundry Discord, чтобы встретиться с другими учащимися, посетить консультации и получить ответы на вопросы по ИИ-агентам.

Ресурсы

Предыдущий урок

ИИ-агенты в производстве

Следующий урок

Инженерия контекста для ИИ-агентов


Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.