Всем привет! Сегодня мы с вами поговорим про техническую реализацию AI-агентов. М, давайте сразу мы определимся, что AI-агента мы будем называть LLM, у которой есть некоторые дополнительные инструменты. То есть помимо генерации текста наш, э, AI-агент может работать с файлами, например, на вашем компьютере или пользоваться различными дополнительными инструментами, вызывать их либо на вашем компьютере, либо где-то на сервере. То есть помимо непосредственной генерации текста, чем обычно занимаются чат-боты, он еще будет какие-то дополнительные действия выполнять. При этом самое важное - он будет сам принимать решение, когда нужно тот или иной инструмент вызвать. М, реализовано это может быть по-разному, нооо мы сегодня с вами поговорим про MCP протокол от компании Anthropic.
В предыдущем видео я показывал демонстрацию, а что же с помощью этого можно сделать. Сегодня мы, собственно, погрузимся больше в технические детали, и здесь нам с вами важно на берегу договориться вот о чем. А, мы как обычные пользователи, в большинстве случаев не пользуемся LLM-кой напрямую. LLM-ка - это то, что генерит текст, а мы с вами общаемся с ней через либо веб-интерфейс, когда вы заходите на сайт, эээ, вашего чат-бота, которым вы пользуетесь, неважно, это может быть DeepSeek, это может быть ChatGPT, это может быть Claude от Anthropic, это может быть Gemini от, мля, к-компании Google. Соответственно, есть большое количество различных систем, но со всеми ними вы общаетесь не напрямую по API, а вы, скорее всего, общаетесь через какой-то интерфейс. Кроме того, соответственно, есть еще и приложения, которые можно поставить на ваш компьютер. Например, тот же самый Claude Desktop, который я демонстрировал ранее, и он точно так же будет взаимодействовать с LLM-кой вместо вас. А, когда вы пишете сообщение в чат, LLM-ка вам отвечает, и вот вы видите в окошке ответа только ту часть, которую LLM-ка отметила как ответ для пользователя. Помимо этого, она может еще дополнительный блок текста сгенерить, и в этом блоке текста будут какие-то, ааа, команды, какие-то инструкции для вот этой программной оболочки, да? Это может быть, там, приложение или веб-интерфейс - неважно. Но, ааа, сразу вот оставляем за скобками, да, что у нас есть текст, который мы видим, и есть текст, который у нас присылает, эээ, наша LLM-ка вот программной оболочке, да, которая нам дальше не показывается. На самом деле, работает это в обе стороны. Когда вы пишете сообщение, сообщение не в таком виде уходит в чат-бота. Вот это приложение, оно подсовывает дополнительную техническую информацию, которая, соответственно, поможет LLM-ке дальше, а, выполнять свою работу. Об этом чуть подробнее мы поговорим дальше. Но самое главное мы с вами зафиксировали: у нас есть программная оболочка, которая нам что-то показывает, а что-то не показывает. Так вот, когда мы говорим, что есть какие-то LLM, которые поддерживают протокол MCP, это значит, что, во-первых, они дообучены, LLM-ки, на использование этих инструментов. Это первое. А второе - они генерят дополнительный блок, который, м, нам вживую не покажется, да? Мы увидим только ответ от системы, которую нам надо видеть. Но программные оболочки, через которые мы с вами работаем, либо сайт, либо, там, десктопные приложения, они эту информацию умеют обрабатывать и дальше, соответственно, вызывать какие-то инструменты, которые LLM-модель попросила их сейчас продемонстрировать. И тут, соответственно, а, давайте мы, собственно, теперь разберемся, а как это все у нас происходит, как LLM-ка узнает, а какие инструменты у нас доступны. Узнает она, собственно, следующим образом: программная оболочка, с которой вы работаете, опять же, постоянно буду говорить либо веб-версия сайта, либо, соответственно, десктопное приложение, она должна будет узнать, а какие инструменты есть, опросить всю доступную информацию об этих инструментах и дальше вместе с вашим сообщением подсунуть, а, дополнительный блок информации, в котором для LLM-ки будет сказано, что если тебе нужно будет воспользоваться, там, таким-то инструментом, сделай это. У тебя есть вот список инструментов. Они делают, соответственно, такие и такие вещи.
Но чтобы, собственно, не только на слух это все воспринимать, давайте я вам покажу, а, как я подключил свои MCP сервера к Claude и, собственно, покажу, а как LLM-ка, уже вот не программная оболочка, а как LLM-ка видит эти инструменты. Собственно, есть у нас Claude Desktop, приложение от Anthropic, тот же самый Claude, но в данном случае работаем через десктопное приложение. С ним просто удобнее все это настраивать.
Во-первых, я покажу, что у меня есть некоторое количество MCP серверов. Подробно мы их рассматривали в предыдущем видео, но сегодня мы тоже всего этого коснемся. Чтобы подключить дополнительные инструменты или убрать из зоны видимости эти, нам необходимо перейти в настройки Claude и в настройках выбрать Edit config. Дальше нам откроется специальный файл. Внутри этого файла нам необходимо по специально заданному, а, протоколу, по специально заданному шаблону описать, а какие инструменты для этой программной оболочки будут доступны. Давайте я вам его открою. Сейчас, пожалуйста, не пугайтесь, будет немножко кода, но я постараюсь все это аккуратненько вам объяснять. Как видите, у меня здесь есть некоторое количество MCP серверов. Есть вот File system, есть LaTeX Beamer, с помощью которого мы генерили презентации из LaTeX. Object detector - это тот, который может распознавать, какие, а, объекты есть на том или ином изображении, да? Он в YOLO делается. И, соответственно, есть Clarificator, о котором мы сегодня с вами еще немножечко поговорим. Это простейший, практически пустой MCP сервер, на нем просто будет проще все это объяснять. Давайте я для начала для чистоты эксперимента удалю все эти MCP сервера. Вы, собственно, не пугайтесь, они у меня все сохранены, мы потом быстро к этому вернемся. Но если вы откроете ваш Claude Desktop и вы еще не подключили ни одного MCP сервера, вот в таком виде будет ваш конфиг. Соответственно, ааа. Давайте мы перезапустим Клода, чтобы наши изменения вступили в силу. Нам необходимо его завершить Claude Desktop и, собственно, запустить его еще раз. А, после перезапуска наша программная оболочка смотрит, а какие MCP сервера ей доступны. И, как видите, она видит, что ничего дополнительного у нее нет. Web search и extended thinking - это, э, те инструменты, которые вшиты внутрь, мы их можем вклю-- можем отключить. Но вот все дополнительные MCP сервера, которые я писал до этого, они теперь отсутствуют просто потому, что мы в конфигурационном файле их не показали. Теперь давайте мы сделаем следующее. Мы попросим LLM-ку через наш, э, интерфейс, который у нас есть, попросим LLM-ку рассказать, а какие инструменты у нее сейчас доступны. Давайте мы запустим эту историю и в зависимости от того, что она выдаст, мы, собственно, сможем понять, а как LLM-ка видит это все. Опять же, мы видим тот результат, который прислала LLM и дальше обработала наша программная оболочка. Но вот смотрите, LLM-ка нам рассказала, что у нее есть несколько инструментов. Есть инструмент артефакты, есть инструмент repl, есть инструмент web search, есть инструмент web fetch. Можно прочитать, что они делают, но если вкратце, наверное, самые интересные web search и web fetch - это те, которые были подключены вот отсюда. Что они делают? Web search позволяет, а, LLM-ке запустить поиск информации в интернете, а web fetch позволяет, а, на основе какой-то веб-страницы собрать информацию, добавить ее в контекст и на этом контексте дать какой-то развернутый ответ. То есть, смотрите, вы можете взять какую-то инструкцию, а, инструкцию, я не знаю, давайте возьмем, например, программирование. Есть какая-то библиотека, с которой вы работаете как программист. Есть инструкция, есть документация по этой библиотеке. Вы хотите, чтобы LLM-ка написала вам код именно на основе этой библиотеки. Возможно, там конкретной версии этой документации или еще чего-то. Соответственно, LLM-ка как будет решать эту задачу? Она найдет эту страницу. Либо вы дадите ей прямую ссылку, либо скажете, что нужно найти документацию. Дальше она скопирует содержимое этой страницы, добавит его в контекст сообщения и, соответственно, на основе этого будет дан ответ. Это все произойдет, опять же, с помощью, а, вот этого программного, э, программной оболочки, через которую вы общаетесь с LLM-кой. То есть программная оболочка запустит этот инструмент, этот инструмент скопирует текст, вернет его программной оболочке, а дальше к вашему сообщению, где вы напишете: "Дай мне, там, я не знаю, напиши мне код, который делает вот то-то, то-то на основе этой библиотеки". А, к этому вашему промпту добавится дополнительная информация вот с сайта, который был найден, и моделька уже со всем этим объемом информации вернет вам свой ответ. Но смотрите, а, когда мы общаемся, как в чате, может возникнуть впечатление, что вот набор инструментов, набор вот дополнительной информации, которые подсовывает, а, программная оболочка, он всегда один и тот же, он зафиксирован на чате. На самом деле нет. При каждом новом сообщении набор будет формироваться заново, и этот набор будет заново отправляться в LLM-ку. Давайте, чтобы это показать, я верну обратно, а, те MCP сервера, которые у меня здесь были подключены. Я потом детальнее объясню, как вот эти инструкции формируются, где их брать и где что означает. Но, собственно, давайте мы просто пока вернем, сохраним изменения, перезайдем в Claude и, собственно, с новыми уже инструментами зададим тот же самый вопрос. Вот у нас Claude запускается.
Соответственно, вот у нас перезапустилась система, у нас
У нас перезапустилась система. У нас есть несколько, а, инструментов. Часть из них отключена, часть из них подключена. Ну, давайте, собственно, оставим как есть. Абсолютно неважно. Но что мы с вами сделаем? Мы вернемся обратно в этот наш чат и в этом же чате точно такое же сообщение отправим к Лоду. Можно в отдельном, но я просто хочу показать, что, а, набор инструментов не прибит гвоздями к конкретному чату. Да, чтобы вы понимали, что вот то, что вы видите здесь, интуитивно вам может казаться как одной какой-то сессией, в которой вы работаете. На самом деле, а, вот этот-- эта программная оболочка Dan Suchy Cloud Desktop, она каждый раз формирует сообщение к LLM по-новому. Вот видите, у нас появились новые инструменты, и вы видите, на самом деле, как LLM их видит. У нее есть инструмент Read File и есть описание, а что же делает этот инструмент. Есть инструмент Write File и есть описание. И по каждому инструменту, ну вот давайте, где-то должен быть тот, который по-русски, который я сам писал. Сейчас мы с вами его найдем. А, ну вот, собственно, Detect Objects. Да? У нас есть описание: получить список объектов на каждой картинке. Есть аргументы, которые надо подать на вход. Это список путей к изображениям, да? То есть какие-то картинки нам надо просто указать, а с какой картинкой мы хотим работать. И LLM знает, что если она так сделает, то ей обещан следующий результат: что будет к каждому файлу указано, а что на этой картинке находится. Если вы помните, вот в предыдущем видео мы как раз сортировали, э, картинки с кошками в одну папку, а другие картинки в другую папку. Именно так это происходило. Когда LLM прочитала мое задание "рассортируй, э, картинки по папочкам", она посмотрела с помощью инструментов работы с файловой системой, какие файлы есть. Дальше, соответственно, воспользовалась инструментом Detect Objects, потому что она знает, что она сможет таким образом получить список объектов на картинке. Ей вернулся какой-то ответ в виде "конкретный файл, там находится, например, там кошка". Тефтелька, да, у нас там была. И, соответственно, на основе этого приняла какие-то следующие решения. Так вот, как видите, а, на самом деле LLM все так же продолжают работать с текстами. Чтобы она умела пользоваться инструментами, нам эти инструменты необходимо понятным, читаемым для LLM, а, языком описать.
Давайте теперь, наверное, я вам покажу, а, те инструменты, которые я собрал, и как эти инструменты можно подключить, как они запускаются, как они, собственно, формируются. Мы перейдем обратно в VS Code. Сейчас будет немножко Python. Вы, пожалуйста, не пугайтесь, ничего страшного не будет. Я постараюсь все это объяснить понятным языком. Ну, возьмем давайте Object Detection, раз уж мы, раз уж мы о нем начали говорить. Выглядеть может немножко странно, но на самом деле все очень просто. Я написал здесь по факту вот функцию Detect Objects, дал ей то описание, которое вы только что видели. То есть, смотрите, когда у меня есть сервер, MCP сервер, и я этот MCP сервер подключил к этой программной оболочке, программная оболочка при запуске запустила этот инструмент и опросила его: а какие у тебя есть функции, какие задачи ты можешь решать? И вот этот текст, который здесь написан, в Python называется docstring, вот этот вот docstring к этой функции был передан в LLM. И дальше LLM уже понимает, как с этой функцией можно работать. И, по сути, а, самая главная часть, э, описания вот этой функции - это именно оно. LLM не знает, как она реализована. Внутри код она не читает, она читает именно вот это описание. И то, как вы его опишете, будет, э, влиять на то, как LLM будет дальше этим инструментом пользоваться. По сути, это тот же самый промпт-инжиниринг. Вам нужно написать хороший промпт, чтобы моделька понимала, а, что делает эта функция и в каком случае ее надо вызывать. Ну и помимо этого вам необходимо указать, а что же эта функция должна делать. После этого вам необходимо декорировать эту функцию, а все остальное за вас делает фреймворк FastMCP. То есть для MCP серверов есть уже специальный фреймворк, в нем вы создаете объект, декорируете ваши функции и, по сути, все. А, что сделано здесь? Сейчас чуть-чуть уйду в технические детали, потом сразу вернемся обратно. Пожалуйста, не пугайтесь и, как говорится, не переключайтесь. М, по умолчанию MCP сервера работают по, а, протоколу стандартного ввода стандартного вывода - STDO так называемый. Если мы говорим про YOLO, YOLO - это специальный фреймворк, который распознает, э, может детектировать объекты на картинках. Он очень любит писать сообщения в консольку. Соответственно, вот этот блок нужен для того, чтобы заглушить YOLO, чтобы она перестала писать сообщения в консоль вывода информации, потому что она напрямую будет считываться LLM. LLM не нужно знать дополнительную информацию. Нам важно, чтобы LLM получала только то, что нужно, да? Иначе она будет ругаться и не понимать, что происходит. Поэтому все, а, вещи, которые пишут в STDO, нам необходимо заглушить, чтобы мы контролировали, какая информация приходит, какая информация уходит.
Давайте я вам покажу практически пустой MCP сервер. А, те, кто постоянно смотрят наши выпуски, возможно, вы помните, у нас была такая дискуссия, что очень жалко, что LLM не умеют уточнять информацию. Вот вы им даете какой-то запрос. А, возможно, этот запрос неоднозначный. Возможно, хорошо было бы, если бы LLM у вас сначала спросила какие-то дополнительные уточнения и только потом Пошла выполнять эту, эту задачу. Да, собственно, мне стало интересно, а можно ли с помощью MCP серверов дать LLM в руки такой инструмент? Давайте посмотрим, что же из этого получилось. Ааа, у нас есть некоторый набор функций, например, request clarification. А, моделька будет запрашивать информацию, когда, собственно, запрос слишком общий, оставляет несколько возможных трактовок, не содержит критически важных деталей. И вот какие-то дополнительные, какая-то дополнительная информация. Здесь достаточно большой промпт просто для того, чтобы модельку, так скажем, м, подтолкнуть к использованию данной функции. Давайте я вам покажу, что она в итоге научилась делать. Куда пойти? Уточним у модели, куда пойти сегодня вечером и, соответственно, убедимся, что у нас есть clarification. Давайте запустим. Да, вот видите, собственно, моделька вместо того, чтобы сразу давать ответ, она запрашивает у нас какую-то дополнительную информацию. Давайте посмотрим, как она ее запросит. А дальше я вам покажу, собственно, как эта штука реализована. Вот. И теперь вместо того, чтобы ответить на мой вопрос, моделька спрашивает: "А в каком городе вы находитесь?" Потому что, очевидно, если моделька этого не знает, то хорошо бы, чтобы она уточнила. Дальше, собственно, что вас больше интересует? Один планируете провести вечер или с компанией и так далее. Можно попробовать некоторое количество запросов, да, и моделька будет дополнительно уточнять эту информацию.
Надо понимать, что это, конечно, реализовали мы сейчас по MCP, но по факту это простой промпт-инжиниринг. Мы, а, говорим модельке, что если нужно какую-то дополнительную информацию запросить, то вызови эту функцию. Функция максимально простая. Моделька должна будет дать какой-то контекст в эту функцию, а моделька обратно получит просто следующее: мне нужно уточнение по поводу. Тот же контекст, который написала сама модель. И вопрос: подскажи, пожалуйста, как следует поступить? Дальше моделька, получив эту информацию, пишет какой-то промпт и уточняет у меня информацию. Как видите, сами MCP сервера могут быть максимально разными. Могут быть те, которые запускают большие процессы: чтение с базы данных, связь, например, с вашим аккаунтом в Notion. Это может быть запрос какой-то информации по API, это может быть развертывание большой Computer Vision системы типа Yolo, которая распознает какие-то картинки, а могут быть просто обратно возвращающие такие вопрос-ответные системы. Тут возникает вопрос. Давайте мы вернемся обратно к сути, к подключению наших MCP серверов. Как видите, у нас есть те, которые я написал сам: Latex Beamer, Object Detector, а есть, соответственно, File System, который я использую уже готовый.
И тут возникает вопрос: а, собственно, что вот это такое? Смотрите, я использую только те MCP сервера, которые непосредственно работают на моем компьютере. Соответственно, это программы, которые должны быть запущены и должны быть готовы к обработке сообщений. Так вот, обработка сообщений входящих и исходящих, она идет через, через, сейчас я вам покажу, через FastMCP. То есть это все на себя забирает FastMCP. Нам же необходимо для программной оболочки показать, а как эти программы можно запускать. И вот здесь я использую Docker просто потому, что мне привычнее с ним работать. Большинство программ, которые я создаю, я все заворачиваю в Docker как отдельные сервисы. И здесь тоже этим пользуюсь. Позвольте мне в рамках этого видео все-таки не рассказывать, что такое Docker, но если вы хотите повторить то, что я сделал и не знаете как-
И то, что я сделал, и не знаете, что это такое, вам достаточно всего лишь установить его на своем компьютере. Это можно сделать, там, с помощью туториалов на YouTube или, соответственно, с помощью чат-бота. А дальше, соответственно, задача: а где найти вот набор команд? На самом деле это всего лишь команда запуска контейнера в Docker с дополнительными какими-то параметрами. Где ее можно взять? Есть вот такой репозиторий. А, ссылку на него я оставлю в описании к этому видео, и в нем, соответственно, есть перечень различных MCP серверов. М, вот те, которые не архивированные, - это те, которые апрувлены, утверждены компанией Anthropic. Они с очень большой вероятностью безопасны, вы можете их использовать. Вот я воспользовался Filesystem. Если мы перейдем по ссылке, есть документация с подробным описанием, а что же этот MCP сервер делает. Есть вот API с всеми инструментами, которые здесь есть. Подробно описано каждый что из них делает. И дальше есть, как их можно использовать, в частности, вот специально для Claude Desktop. И есть команды для Docker, и есть команды для NPX. Кому удобнее второй, может использовать второй. Ну вот я использовал Docker. Как видите, это точь-в-точь то, что у меня было написано. Единственное, надо понимать, что, а, MCP сервер File-Filesystem работает с какой-то папочкой на вашем компьютере. И вот здесь в блоке mount нам необходимо указать, с какой конкретно папкой мы хотим, чтобы у этого MCP сервера была возможность взаимодействовать. Если обратите внимание, у меня есть какая-то папка вот Users, Ильнар Шафигуллин, Desktop, ilnar, anthropic, demo. И вот все, что я положу в эту папку, будет доступно для этого MCP сервера. Через Docker, на мой взгляд, очень удобно работать с точки зрения ограничения, э, прав для MCP сервера, чтобы он делов не наворотил, да? Вы дали доступ только к этой папке, он только с ней работает. Но опять же, это уже немножко выходит за рамки нашей сегодняшней темы. А, повторюсь, есть, соответственно, некоторое количество MCP серверов, которые вот апрувлены компанией Anthropic. Есть интересная штука Memory. То есть вы можете своему, э, чат-боту дать возможность сохранять полезную информацию в виде графа знаний из общения с вами в специальный файл и дальше ею пользоваться. Есть Sequential Thinking, то есть последовательное мышление. Есть еще какие-то дополнительные интересные. Можете вот посмотреть то, что нравится, подключить. Практически у каждого из них, скорее всего, есть вариант подключения через Docker. Можете спокойно этим пользоваться по полной аналогии. Есть еще помимо этого уже, а, репозиторий Awesome MCP Servers. А, их используем на свой страх и риск, но это, соответственно, комьюнити создает MCP сервера. Их огромное количество. Например, вы можете подключить, а, вашу программную оболочку к вашему аккаунту в Notion и таким образом позволить LLM-ке напрямую взаимодействовать с записями, со страницами в Notion и с любыми другими системами, да? Вот там напрямую работать с базами данных, напрямую работать с контролем версий, с GitHub. Есть очень много различных MCP серверов, они все даны с описаниями. Можно зайти, посмотреть, как они работают. Если есть инструкции по подключению, можете подключить к вашей системе и, соответственно, с помощью них решать какие-то задачи. Вот. А, собственно, надеюсь, стало немножко понятнее, да? Вот опять давайте подытожим, прежде чем перейти уже, там, к последней самой технической части. Подытожим, что, во-первых, у нас есть программная оболочка, которая настраивает взаимодействие между нами, LLM-кой и дополнительными инструментами. Соответственно, то, что вы пишете, будет обработано этой программной оболочкой, добавлена какая-то дополнительная информация, отправлена в LLM. То, что LLM-ка ответит, у ва-- будет блок для вас и будет блок для выполнения этой программной оболочкой. Она сможет запускать какие-то инструменты, которые вы ей предоставите. Вы предоставляете ей инструменты через, соответственно, редактирование специального файла. Ну вот для Claude Desktop это claude_desktop.config.json. В нем указываете все, что вам нужно. Если вы пользуетесь другой программной оболочкой, там будут свои какие-то настройки, но с помощью чат-ботов либо инструкций, либо каких-то туториалов вы, собственно, легко сможете найти под конкретную модель, с которой вы взаимодействуете. А, соответственно, написание самих MCP серверов - тоже очень простая история. Код этот я опубликую на GitHub, можете взять и сделать по аналогии. Если чуть сложнее вам читать, писать код, можете на вайпкодить в конце концов OpenAI или DeepSeek, я уверен, что помогут вам написать ваш собственный MCP сервер под те задачи, которые вам нужны. Но на самом деле, а, цель этого видео не столько научить вас создавать MCP сервера, сколько объяснить логику взаимодействия с ними. Я уверен, что девяносто девять процентов зрителей, даже не только нашего канала, а вообще вот на YouTube которые есть, никогда свой MCP сервер писать не будут. Но очень полезно, на мой взгляд, знать, как работают те инструменты, которыми вы пользуетесь практически каждый день. Так вы сможете понимать, а как вообще они устроены, где у них есть ограничения, что они могут делать. Потому что вот не зря я показывал в самом начале без подключенных собственных. У Claude уже есть набор инструментов, с которыми он работает, по сути, как с MCP серверами.
М, если окажется, что для огромного количества пользователей важен тот или иной MCP сервер, я уверен, что крупные технологические компании просто зашьют его внутрь этих программных оболочек, так же, как они сделали вот с веб-поиском, с фетчем, с фетчем страниц, с запуском кода во внутренних редакторах и так далее. Вот. И собственно, последнее, что, наверное, хотел показать, такая самая техническая часть. Давайте мы нырнем в терминал. Я покажу, что у меня сейчас запущено некоторое количество контейнеров, но запустил эти контейнеры я не самостоятельно. Если я сейчас выключу программную оболочку Claude и, э, покажу, какие контейнеры у меня запущены. Как видите, ни одного контейнера у меня сейчас не работает. Если я запущу сейчас программную оболочку Claude, все у меня запустилось. Смотрим на контейнеры. Контейнеры запущены. И вот что у нас получается? Что эта программная оболочка на моем компьютере запускает те инструменты, которые я ему дал, с теми командами, которые здесь у него прописаны. Соответственно, вот именно так и происходит дальнейшая работа. У нас есть набор инструментов. С этими инструментами программная оболочка умеет работать, полу-- з-з-давать туда запросы, получать, соответственно, ответы обратно. Вот. И, э, дальше добавлять их к сообщениям, которые уходят к Claude. Если вам интересно, я, наверное, могу попробовать показать, да, как это делается. М, давайте мы с вами запустим какое-нибудь сообщение в запущенный MCP сервер. Давайте для этого я посмотрю, что у меня запущено. Запуст-- вот они у меня здесь есть. Контейнер ID для LaTeX, по-моему, для clarification я это делал. Я скопирую ID контейнера. У меня есть заготовленный, э, заготовленное сообщение. Смотрите, как мы с вами и говорили, взаимодействие между инструментами и программной оболочкой происходит через стандартный ввод-вывод. Соответственно, что здесь происходит? Я через команду эхо в инструмент, который запущен, передам какой-то текст. Этот текст дальше будет обработан через FastMCP и будет получен какой-то ответ. Соответственно, давайте мы заменим на актуальный название контейнера и посмотрим, что происходит. В ответ на это сообщение, которое мы отправили, да, нам приходит ответ от нашего инструмента. Можно подробно посмотреть, что здесь происходит, но давайте я, наверное, так коротко объясню. Здесь у меня, по сути, два сообщения с ID один и с ID два должно быть где-то здесь. Да, вот ID два. То есть мы, нумеруя, отправляем сообщения. На каждый из них, соответственно, MCP сервер будет отвечать. В первом сообщении мы инициализируем наше общение и получаем ответ на эту инициализацию. Видите, вот ID один. А во втором случае мы запрашиваем набор инструментов, которые есть. И вот на ID два, на второе сообщение нам, собственно, моделька отвечает, что у меня есть вот такие tools. Есть request clarification со своими описаниями, есть другие со своими описаниями. И вот это именно те описания, которые в дальнейшем будут даны LLM, да? То есть при запуске программная оболочка запускает те инструменты, которые есть, в моем случае это докер-контейнеры, опрашивает все инструменты, а что они умеют делать. Дальше этот результат добавляет в дополнительное сообщение, возможно, прописывает в системном сообщении для нашего диалога, для нашего чата, и это все скопом вместе с моим сообщением будет отправлено LLM. LLM сгенерирует ответ. Будет ответ, который увижу я, будет ответ, который обработает наш, м, наша программная оболочка. И, соответственно, если там будут, э, запросы к каким-то инструментам, с этими инструментами программная оболочка вот таким вот образом и будет работать.
Да, она будет направлять туда какие-то свои сообщения и ответы будет дальше возвращать и направлять обратно в Claude.
И направлять обратно в Claude. Вот., наше предыдущее видео набрало не так много просмотров, но набрало очень много комментариев. Э, надеюсь, что техническая часть вас не сильно запутала. М, тема очень объемная, но я постарался ее разложить как смог., надеюсь, что вам понравилось и было понятно. Пишите комментарии, поддерживайте наш канал. Пишите не только понравилось вам или не понравилось, а что вам было непонятно. Потому что для меня это тоже отдельный челлендж — уложить в такой небольшое видео огромную тему. М, и у всех у нас абсолютно разный уровень подготовки, а мне важно было, чтобы все поняли, да? Поэтому если на каком-то этапе вам стало абсолютно непонятно, напишите, пожалуйста, об этом в комментариях. Напишите, какие MCP сервера вы пробовали, что вам понравилось, что вы пробовали и вам показалось бесполезным. М, мне очень нравится читать ваши комментарии. На большинство из них я стараюсь отвечать., под прошлым видео были отличные, очень содержательные комментарии, вижу, от действующих разработчиков дата-сайентистов. Безумно приятно, что наши видео вы тоже смотрите. Вот., оставайтесь с нами, будем возвращаться к вам с новыми видеороликами. Подписывайтесь на канал. Пока-пока.