Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeAgents Week 2026 | Лекция 1.2 Tools. MCP

🛠️ Инструменты и MCP: от LLM к агентам

Ключевые тезисы:

  • 🔧 Инструменты (Tools) — это функции, предоставляемые LLM для выполнения конкретных действий и преодоления её ограничений (нет доступа к свежим данным, сложности с арифметикой, неспособность действовать самостоятельно).
  • 🤝 Model Context Protocol (MCP) — открытый стандарт, решающий проблемы масштабируемости, переиспользования инструментов и хрупкости пайплайнов в AI-агентах.
  • 🎯 Использование инструментов — переломный момент, превращающий простые чат-боты в автономных агентов.

🔧 Что такое инструменты (Tools)?

Инструмент — это функция, предоставляемая LLM, которая должна решать чётко определённую задачу. Он включает:

  • 📝 Описание своих возможностей.
  • 🏃 Вызываемую сущность (исполняемый код).
  • 📥 Аргументы с их типами.
  • 📤 Выходные данные с их типами.

Как работает вызов инструмента (Tool Calling):

  1. Пользователь задаёт вопрос (например, "Какие аэропорты есть в Лондоне?").
  2. LLM анализирует запрос и решает, что уместно вызвать инструмент (например, list_all_airports).
  3. Модель генерирует структурированный вызов (например, в формате JSON) с названием функции и аргументами.
  4. Агент (код) распознает этот вызов, исполняет функцию и возвращает результат модели.
  5. LLM использует результат для формирования финального ответа пользователю.

Как "обучить" модель использовать инструменты:

  • 🗣️ Сообщить о доступных инструментах через системный промт.
  • 🧠 Научить модель генерировать корректные вызовы (через предобучение, fine-tuning и использование специальных токенов).
  • 📖 Чётко описать, что инструмент ожидает на входе и что возвращает на выходе.

🏗️ Принципы проектирования инструментов

  1. ✅ Поддержка распределённых транзакций: Инструмент должен уметь работать в цепочках действий, где часть операций может завершиться неудачно, и обеспечивать откат (rollback) при необходимости.
  2. ✅ Идемпотентность: Повторный вызов инструмента (например, после таймаута или сбоя агента) не должен приводить к побочным эффектам (например, отправке письма дважды).
  3. ✅ Информативные и структурированные сообщения об ошибках: Ошибки должны быть понятны не только человеку, но и модели, чтобы она могла скорректировать свои действия (например, сообщить об отсутствии обязательного параметра).
  4. ✅ Гайды по взаимодействию с пользователем: Инструмент должен подсказывать модели, как действовать в случае нехватки данных (дозапросить у пользователя) или при невозможности выполнить действие.
  5. ✅ Structured Outputs: Инструменты должны возвращать данные в структурированном формате, удобном для последующей обработки моделью.

Ключевой вывод: Хороший инструмент — это надёжный контракт между LLM и реальной системой, устойчивый к сбоям, повторным вызовам и изменениям среды.


🌉 Зачем нужен Model Context Protocol (MCP)?

С ростом сложности AI-приложений возникли проблемы:

  • 🔗 Жёсткая привязка инструментов к агентам: Каждый агент реализовывал свои версии одних и тех же инструментов (калькулятор, поиск в интернете).
  • 📜 Апдейты описаний (specs): Изменения в API инструментов требовали правок во всех агентах, которые их используют.
  • 🧩 Хрупкие пайплайны: Зависимость от конкретных моделей и форматов вызовов делала систему сложной для поддержки и масштабирования.

MCP решает эти проблемы, предоставляя стандартизированный протокол для подключения AI-моделей к внешнему миру.


🏛️ Архитектура MCP: роли и взаимодействие

Это клиент-серверная архитектура с тремя главными ролями:

1. 🖥️ MCP Host (Хост)
Это AI-приложение, основной интерфейс для пользователя (например, Cursor, пользовательские агенты).
Задачи:

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

2. 🔌 MCP Client (Клиент)
Соединитель между хостом и сервером, обеспечивающий двустороннюю связь.
Задачи:

  • Коммуникация по протоколу JSON-RPC 2.0.
  • Согласование возможностей с сервером при инициализации.
  • Запуск выполнения инструментов и обработка ответов.
  • Обработка обновлений в реальном времени.

3. 🗄️ MCP Server (Сервер)
Легковесная программа, предоставляющая конкретные возможности (инструменты, данные).
Задачи:

  • Регистрация доступных инструментов при запуске.
  • Обработка запросов на вызов инструментов и возврат результатов.
  • Предоставление контекста (данных) по запросу модели.
  • Управление соединением с клиентом и отправка уведомлений.

🔁 Как это работает вместе:

  1. Discovery: Хост через отдельных клиентов параллельно опрашивает серверы, чтобы получить список их инструментов.
  2. Вызов: При запросе пользователя LLM решает вызвать инструмент → хост определяет нужный сервер → клиент отправляет запрос → сервер выполняет и возвращает результат → результат передаётся обратно LLM для формирования ответа.

⚠️ Предостережение: избегайте over-engineering

Не стоит внедрять MCP на ранних этапах разработки простого агента. Начинайте с минимальных кусочков и добавляйте сложные абстракции (вроде MCP) только тогда, когда столкнётесь с описанными проблемами масштабирования и поддержки.


💻 Практика: добавление инструментов агенту

Этапы реализации:

  1. 🎯 Базовая реализация "вручную":

    • Создание функции-инструмента (например, multiply).
    • Формирование промта для модели с описанием инструмента и строгим форматом вызова (JSON).
    • Обработка ответа модели: парсинг JSON, вызов функции, передача результата обратно в LLM.
  2. 🔄 Решение проблем поддержки:

    • Проблема 1: Единообразие описаний. Решение — создание класса Tool с методом to_string().
    • Проблема 2: Расхождение кода и описания. Решение — использование декораторов, которые автоматически генерируют описание инструмента на основе сигнатуры функции и её docstring.
  3. 📚 Использование готовых библиотек (на примере LangChain/LangGraph):

    • Инструменты оборачиваются с помощью встроенных средств библиотеки.
    • Создаётся граф агента с узлами: LLM, Tools, Router.
    • Router определяет, что делать после ответа LLM: вызвать инструмент или вернуть финальный ответ пользователю.
  4. ✈️ Пример: Агент для бронирования авиабилетов

    • Было: Агент мог только генерировать текст на основе системного промта.
    • Стало: Добавлены инструменты для работы с "БД" (словарём):
      • get_booking_details — информация о бронировании.
      • search_flights — поиск рейсов.
      • cancel_booking — отмена бронирования (с запросом подтверждения у пользователя).
    • Агент теперь может выполнять конкретные действия, запрашивать недостающие данные и вести многошаговый диалог.

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

🤖 Инструменты и MCP: от LLM к автономным агентам — конспект на EchoNote