MCP, function calling, CLI и skills для ИИ-агентов: сравнение

Автоматический перевод

Эта статья была автоматически переведена с оригинальной английской версии.

Используйте function calling, когда одно приложение предоставляет одному API модели небольшой набор типизированных инструментов. Используйте Model Context Protocol (MCP), когда несколько совместимых клиентов должны обнаруживать и вызывать сервер, доступный для повторного использования. Используйте интерфейс командной строки (CLI), когда уже существует стабильная команда, а текст или файлы подходят в качестве входных и выходных данных. Используйте skill, когда инструкции, скрипты и справочные материалы для повторного использования должны обучать агента выполнению рабочего процесса.

Эти интерфейсы можно комбинировать. Skill может подсказывать агенту, когда вызывать MCP-инструмент. Этот сервер может запускать существующий CLI, пока модель выбирает операцию через function calling. Перед выполнением приложение должно валидировать аргументы и проверять права пользователя на целевой ресурс.

Выбор зависит от повторного использования, деплоя, разрешений и того, кто сопровождает интерфейс.

Таблица решений

ПотребностьС чего начатьОсновной нюанс
Небольшой набор типизированных инструментов внутри одного приложенияFunction callingВалидная схема не даёт разрешения на действие и не делает аргументы безопасными.
Переиспользуемые инструменты для совместимых клиентовИнструменты MCPПодлинность сервера, учётные данные, изменения инструментов и возвращаемый контент требуют отдельных средств контроля.
Существующая команда для разработки или эксплуатацииCLIВалидируйте аргументы, избегайте интерполяции в командной оболочке и ограничивайте доступ к окружению и учётным данным.
Переиспользуемые инструкции и ресурсы рабочего процессаAgent SkillsИнструкции направляют использование инструментов; приложение по-прежнему отвечает за выполнение инструментов и разрешения.
Стабильная логика внутри процессаТипизированная функция или API библиотекиНе добавляйте протокол, если обе стороны принадлежат одной кодовой базе.

Function calling

Function calling предоставляет модели именованные операции со структурированными аргументами. Он подходит для продукта, в котором инструменты, проверки политик, учётные данные и выполнение находятся в одном приложении. Делайте схемы узкими, валидируйте каждый аргумент и оценивайте как выбор инструмента, так и получившийся побочный эффект.

MCP

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

CLI-инструменты

CLI часто является самым коротким путём к зрелым возможностям Git, пакетных менеджеров, облачных инструментов и систем сборки. Предпочитайте структурированный вывод, явно заданные рабочие каталоги, неинтерактивные флаги, ограниченные тайм-ауты и учётные данные с узкой областью действия. Не формируйте строки командной оболочки из недоверенного текста.

Skills

Skill объединяет процедурные инструкции и может включать скрипты, справочные материалы или шаблоны. Спецификация Agent Skills позволяет совместимым агентам загружать эти инструкции по мере необходимости. Используйте skill для описания рабочего процесса, который могут выполнить существующие инструменты. Делайте его достаточно небольшим для проверки, записывайте предположения о версиях и указывайте, какие действия требуют подтверждения.

Чеклист выбора

  • Кто владеет клиентом, интерфейсом и реализацией?
  • Нужно ли переиспользовать его в нескольких клиентах?
  • Является ли схема входных данных узкой и версионируемой?
  • Где применяются авторизация и подтверждение?
  • Может ли недоверенный контент получить доступ к учётным данным или исходящему сетевому трафику?
  • Можно ли трассировать вызовы, аргументы, результаты и решения политик?
  • Может ли типизированный вызов библиотеки решить задачу с меньшим объёмом интерфейса?

Дополнительные материалы

Ссылки