LLM‑фреймворки используют разные схемы описания инструментов
Разные платформы (AI SDK, MCP‑server, Genkit) требуют отдельные обёртки для одних и тех же функций‑инструментов, что усложняет переносимость и масштабирование.
В статье на Habr AI рассматривается одна из практических проблем, с которой сталкиваются разработчики LLM‑приложений: каждый фреймворк предлагает собственный способ описания инструментов (tools). Инструмент — это функция, которую модель может вызвать, плюс метаданные: имя, описание и JSON‑схема аргументов.
Автор показывает, как одна и та же бизнес‑логика (например, запрос к базе данных) приходится писать трижды. Первая версия реализована через tool() из AI SDK. При переходе на MCP‑server в проекте инструменты переписываются под registerTool. Соседняя команда, использующая Genkit, вынуждена описывать те же функции через defineTool. Функциональность кода остаётся неизменной, меняется лишь «обёртка», что приводит к дублированию кода, росту технического долга и повышенному риску рассинхронизации.
Автор подчёркивает, что отсутствие единого стандарта усложняет совместную работу над проектами, миграцию между платформами и создание общих библиотек инструментов. В статье предлагаются идеи по унификации: публикация OpenAPI‑спецификаций для инструментов, использование общих JSON‑схем и создание «адаптеров», которые автоматически генерируют нужные обёртки под конкретный фреймворк.
Полный текст статьи доступен по ссылке: https://habr.com/ru/articles/1088768/.
Для разработчиков это сигнал к необходимости выстраивать абстракцию над инструментами уже на этапе проектирования. Создавая единый «tool‑spec», можно генерировать обёртки под AI SDK, MCP‑server и Genkit автоматически, экономя время и снижая риск ошибок.


