Function calling и MCP для LLM — простое и понятное объяснение:
До появления MCP доступ к инструментам полностью строился на function calling, а каждую интеграцию приходилось настраивать вручную.
MCP стандартизировал этот интеграционный слой, но на нижнем уровне модель по-прежнему формирует тот же tool call.
На схеме ниже показано, как работает каждый из подходов.
При использовании function calling модель никогда ничего не выполняет самостоятельно:
> Модель получает промпт и определения доступных функций.
> Она определяет, какой инструмент подходит, и формирует в своём ответе запрос на вызов инструмента.
> Процедура на нашей стороне разбирает этот запрос и подготавливает фактический вызов функции.
> Бэкенд-сервис запускает инструмент и возвращает результат модели.
Всё это находится внутри нашего собственного стека.
> Мы хостим инструмент.
> Мы пишем логику, которая сопоставляет запрос на вызов инструмента с конкретной функцией и её параметрами.
> И мы выполняем этот вызов.
Таким образом, function calling только определяет, что именно нужно запустить, а вся интеграция вокруг этого полностью остаётся на инженере.
MCP стандартизирует эту интеграцию.
Вместо того чтобы вручную подключать каждый инструмент, MCP:
> Определяет единый протокол для объявления, хостинга и предоставления инструментов.
> Делает инструменты доступными для обнаружения вместе со схемами, которые клиент может читать напрямую.
> Требует подтверждения перед запуском инструмента.
> Разделяет сторону, которая реализует инструмент, и сторону, которая его использует.
После интеграции MCP-сервера для подключения его инструментов не требуется писать ни одной строки Python-кода.
Сервер добавляется один раз, а всё, что происходит дальше, следует протоколу, который обрабатывают MCP-клиент и модель.
> Они определяют нужный MCP-инструмент.
> Подготавливают входные аргументы.
> Вызывают инструмент через сервер.
> Используют возвращённый результат для генерации ответа.
Function calling и MCP — это не конкурирующие подходы, а два этапа одного и того же вызова инструмента.
> Function calling отвечает за выбор инструмента моделью.
> MCP отвечает за всё, что происходит после выбора: поиск инструмента, проверку его схемы, получение подтверждения и запуск.
Когда агент с помощью function calling решает: «Мне нужно выполнить поиск в интернете», это решение проходит через MCP, который выбирает подходящий инструмент среди зарегистрированных инструментов веб-поиска, вызывает его и возвращает результат.
Разумеется, за такое удобство приходится платить.
При интеграции MCP-сервера определения всех его инструментов загружаются в контекст. Тяжёлый сервер может занять большую часть контекстного окна схемами инструментов ещё до того, как агент выполнит хотя бы один вызов.
Мы подготовили подробное руководство с кодом о том, как решить именно эту проблему: ограничить загрузку инструментов только реально используемыми группами, выбирать отдельные инструменты вместо подключения всего сервера и сократить использование контекста на 80–90% в рабочей конфигурации.
👉 @PythonPortal
Post #5987
4.27K
- 👍 8
- ❤ 5