Подробное изучение MCP, часть 1: Что такое MCP?

Если вы интересуетесь ИИ, то, вероятно, слышали о протоколе Model Context Protocol (MCP). С момента объявления Anthropic об этом новом стандарте в ноябре 2024 года его популярность значительно возросла. Существуют MCP для отправки адресов электронной почты, MCP для поиска в Интернете, MCP, которые запускают другие MCP. MCP позволяют скромным LLM создавать запросы на извлечение и бронировать авиабилеты. В мае компания Microsoft даже объявила о создании реестра MCP для Windows, который позволяет приложениям предоставлять функциональные возможности агентам ИИ

Отлично! Однако, каким образом? Что такое MCP? Как его использовать? Почему он стал значительно более популярным, чем предыдущие проекты? Как это позволяет чат-ботам выполнять задачи в реальном мире? И как вы можете создать свой собственный?

Когда мы приняли решение создать собственный сервер MCP для API от DeepL, это казалось сложной задачей. Однако, после того как вы поймете, как функционируют MCP, как они позволяют агентам обнаруживать и использовать инструменты, а также как можно создать базовый сервер MCP с помощью 10 строк кода, это не будет казаться столь сложным. В этой серии публикаций мы постараемся разъяснить эту тему. Мы рассмотрим следующие вопросы:

  • что такое MCP
  • Как использовать MCP в ИИ-клиенте
  • Как создать сервер MCP

Давайте отправимся!

Что означает MCP?

MCP означает «протоколконтекстамодели».

«Модель»представляет собой модель ИИ. Это может быть любой тип ИИ-поверхности, однако, как правило, она основана на большой языковой модели. Здесь мы будем называть это ИИ-агентом или ИИ-интеллектуальным помощником.

«Контекст»относится к условиям, в которых работает ИИ-агент. В области ИИ мы часто говорим о «контекстном окне», которое обозначает весь контекст, который большая языковая модель учитывает при генерации ответа на запрос — историю разговора, системный запрос и прочее. Для работы MCP поверхность ИИ предоставляет базовой большой языковой модели дополнительный подсказку, указывающую, какие инструменты она может использовать и как их использовать.

«Протокол»представляет собой набор правил, описывающих способ взаимодействия двух объектов в сети. Один из протоколов, который вы используете ежедневно, — это HTTP (HyperText Transfer Protocol), который регулирует взаимодействие между веб-сервером и веб-клиентом.

Подводя итог: «Протокол контекста модели» представляет собой протокол, который обеспечивает контекст, позволяющий моделям ИИ использовать внешние инструменты и ресурсы.

MCP — это открытый стандарт, разработанный двумя инженерами компании Anthropic. Он использует JSON-RPC, популярный протокол для определения вызовов функций. Этот проект основан на протоколом язык Server Protocol, созданным Microsoft для отделения логики обработки языков программирования от среды разработки.

MCP не является программным обеспечением, приложением или API. Однако это предоставляет агентам ИИ доступ ко всему этому.

Какие функции выполняет MCP?

LLM могут предоставлять интеллектуальные и полезные ответы на запросы пользователей. Однако они не имеют доступа к внешним услугам, не могут взаимодействовать с другим программным обеспечением и не имеют возможности получать актуальную информацию. MCP предоставляет любой ИИ-поверхности возможность отправлять запросы в любой программный сервис и получать ответ. Это предоставляет ИИ-агенту стандартный способ доступа к внешним инструментам, ресурсам и данным.

Без MCP клиент ИИ представляет собой лишь мозг без тела, не имеющий возможности взаимодействовать с внешним миром. С MCP клиент ИИ может выступать в качестве агента.

Кто может использовать MCP?

Поскольку MCP является открытым стандартом, любой может реализовать клиент MCP или сервер MCP.

Клиентом может быть любое приложение, основанное на LLM. Вы можете использовать MCP в таких приложениях, как Claude Desktop, VSCode, Windsurf и Cursor. Вы также можете использовать MCP с ИИ-агентом, созданным с помощью такой платформы, как LangChain или CrewAI.

Почему MCP приобрел такую популярность?

Одной из причин является то, что это открытый стандарт. Любой агент ИИ может реализовать MCP, как и любой инструмент. Это делает его более привлекательным, чем решения для продуктов конкретных компаний, такие как OpenAI. Вызов функций.

При разработке этого универсального решения создатели MCP вдохновлялись протоколом Language Server Protocol (LSP). До появления LSP, когда IDE стремилась реализовать такие функции, как автозаполнение или подсветка синтаксиса для определенного языка программирования, ей требовалось разрабатывать собственную интеграцию. Результатом стало то, что создатели недавно назвали проблемой m × n, в которой людям приходилось реализовывать языковые сервисы отдельно для каждой возможной комбинации IDE/языка. С LSP каждому языку кодирования требуется только одна библиотека интеграции. А IDE, поддерживающая LSP, может поддерживать любой подобный язык. Аналогично, после того как служба реализует сервер MCP, любой клиент ИИ, поддерживающий MCP, может его использовать. Клиенту необходимо только поддерживать MCP.

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

Почему агентам ИИ необходим стандартный протокол?

Поскольку LLM так хорошо понимают и применяют информацию, не могут ли они уже использовать любую программную услугу, описание которой включено в их тренировочные данные? Ведь LLM уже понимают, как использовать многие популярные API, что можно обнаружить, обратившись за помощью к кодирующему помощнику, такому как Copilot или Sourcegraph.

Однако, если предоставить большой языковой модель доступ ко всем API в ее тренировочных данных, это может привести к хаосу. Как он будет определять, какие API вызывать и когда? Как он получит ваш ключ API и учетные данные, и как он будет использовать услуги, которые требуют другого типа доступа? Что, если вы хотите узнать расстояние по автомобильной дороге от Канзас-Сити до Де-Мойна или текущую температуру в Бангкоке? Существует множество способов найти эту информацию. Как пользователь, вы стремитесь контролировать действия, которые выбирает ваша LLM. Это особенно актуально, когда речь идет не о поиске информации, а о действиях, которые влияют на окружающий мир, таких как отправка адреса электронной почты или заказ пиццы.

Действительно, агент может прочитать и понять низкоуровневую спецификацию OpenAPI или всю документацию API, а затем выполнить соответствующие запросы к API. Однако MCP позволяет разработчикам инструментов определять услуги более высокого уровня, которые будут особенно полезны для агента ИИ, направляя его в нужное русло. На данный момент это область, в которой люди все еще превосходят технологии.

Таким образом, на данный момент наиболее эффективным подходом является четкое определение инструментов и ресурсов, которые большая языковая модель может использовать, а также способов их использования. MCP выполняет эту задачу традиционным способом, детерминированно — не с помощью большой языковой модели, а посредством кода и JSON.

Однако, как большая языковая модель может использовать инструменты?

По сути, большая языковая модель представляет собой систему, которая генерирует токены — токены, которые люди воспринимают в виде текста, изображений, аудио и т. д. Как такая машина может получить доступ к инструментам и ресурсам? Как он узнает, что имеет такой доступ, и как он узнает, какой из них использовать?

Ключевым моментом является то, что, как отмечает Максимилиан Шварцмюллер, отмечает Максимилиан Шварцмюллер, LLM могут общаться с внешним миром только с помощью токенов. Они принимают токены в качестве входных данных и генерируют токены в качестве выходных данных. Эти токены могут включать в себя сущности, означающие «Я хочу использовать инструмент». Таким образом, чтобы указать, что она желает использовать инструмент или ресурс, и фактически использовать его, большая языковая модель генерирует стандартные токены, которые окружающее ее программное обеспечение распознает как вызов инструмента и перехватит. Затем это программное обеспечение вызывает службу и возвращает результат в большую языkovou модель.

Большая языковая модель может использовать здесь специализированные токены. Однако, как правило, он использует определенные разделители и язык — таким образом, вы можете модернизировать эту функцию в существующей большой языковой модели путем ее тонкой настройки. Например, вы можете использовать начальные и конечные теги в квадратных скобках, которые заключают JSON, как в этом образец вывода агента:

Конечно! Я могу создать для вас новую таблицу. Пожалуйста, подождите...

[tool-start] { "tool": "spreadsheets", "action": "create" } [tool-end]

Именно это и сделали исследователи в своей статье «Toolformer» 2023 года, которая, как следует из названия, продемонстрировала, что «языковые модели могут научиться самостоятельно использовать инструменты». В данном исследовании авторы сгенерировали тренировочные данные, которые включали представления текста запросов к API и их результаты. Оптимизировав большую языkovou модель с помощью этих дополнительных данных, они создали большую языkovou модель, которая вызывает эти API для генерации перспективного ответа на запрос.

Они использовали простой формат:

[function_name(data) → result]

Например, учитывая, что LLM испытывают затруднения с математикой, они предоставили инструмент «Калькулятор». Затем они включили в тренировочные данные такие строки:

Из 1400 участников 400 (или [Калькулятор (400 / 1400) → 0,29] 29%) прошли тест.

и

Название происходит от испанского слова «la tortuga», означающего «черепаха». [MT(«tortuga») → черепаха] черепаха.

Путем тонкой настройки большой языковой модели с помощью таких данных они создали LLM, который умел вызывать API для генерации наиболее перспективного ответа на заданный запрос.

Однако нет необходимости настраивать большую языkovou модель, чтобы она могла использовать инструменты. Оказывается, все, что необходимо, это подсказка. В данной статье демонстрирует, как научить большую языkovou модель использовать инструменты с помощью JSON, разграниченного [[qwen-tool-start]] и [[qwen-tool-end]], исключительно путем предоставления ей соответствующей подсказки. Вы можете попробовать это самостоятельно. Просто посетите ваш избранный чат-бот и сообщите ему:

Поздравляем! Теперь у вас есть возможность использовать инструмент для умножения. Когда необходимо выполнить вычисление, достаточно использовать следующий синтаксис: 

[Математика] { "arg1": {значение}, "arg2": {value} } [/Math] 

где, конечно, каждое {значение} представляет собой значение, которое необходимо умножить. Понятно? 

Затем предоставьте большой языковой модель математическую задачу и наблюдайте, как она точно выводит синтаксис, который вы задали для вашего математического инструмента.

Современные LLM по-прежнему используют инструменты практически таким же образом. Например, Anthropic описывает здесь о том, как они создают системный запрос для Claude, чтобы использовать инструменты в своем API.

Как большая языковая модель обрабатывает результаты работы инструмента?

Как большая языковая модель получает результаты работы инструмента? Опять же, все сводится к токенам. Как только клиент ИИ получает вывод от инструмента, он передает его обратно в LLM в качестве ввода, но таким образом, что LLM понимает, что это вывод инструмента, а не ввод конечного пользователя.

Сводная информация

Чтобы сократить, вот что происходит, когда большая языковая модель использует инструмент:

  • Типы пользователей при вводе данных
  • Большая языковая модель обрабатывает эти данные
  • При генерации результатов большая языковая модель «решает», что вызов инструмента является оптимальным способом завершения вывода. Это означает, что он выдает набор токенов, которые он был обучен знать, что позволит ему вызвать инструмент.
  • Клиент ИИ распознает эти токены как элементы, которые должны вызвать инструмент, перехватывает их, анализирует JSON на параметры и прочие элементы в запросе, а затем отправляет их соответствующему инструменту.
  • Инструмент генерирует вывод, который может включать или не включать использование API. Он возвращает это ИИ-клиенту, который отправляет его в большую языkovou модель.
  • Процессы большой языковой модели вывод инструмента
  • Большая языковая модель использует этот результат для продолжения создания ответа для пользователя.

Это было мое краткое изложение того, что представляет собой MCP и как он реализуется в LLM. В следующем посте я продемонстрирую, как использовать MCP в вашем собственном ИИ-клиенте.


Об авторе

В качестве разработчика API от DeepL Бен Морсс стремится помочь всем желающим использовать API от DeepL для доступа к переводам мирового уровня, выполненным с помощью ИИ. Ранее в Google он занимал должность менеджера по продукту Chrome и был разработчиком-пропагандистом для улучшения веб-пространства. До этого он работал инженером-программистом в New York Times и AOL, а также был профессиональным музыкантом. Он получил степень бакалавра в области компьютерных наук в Гарварде и степень доктора философии в области музыки в Калифорнийском университете в Дэвисе. Вы все еще можете увидеть его, играющим музыку с группой Ancient Babies, анализируя поп-песни на Rock Theoryи сочиняет мюзикл, который на самом деле не посвящен Стиву Джобсу.

Поделиться