В 2026 году спор про AI-агента уже не «GPT, Gemini или Claude». Надёжность даёт то, как модель выдаёт структурированный Function Calling, как JSON Schema ограничивает аргументы и как MCP подключает инструменты и контекст к рантайму. Вместе это стек, который можно аудировать, версионировать и менять модель.
Текст для команд, которые превращают чат-бота в исполняющего агента: разделение ответственности, полный цикл инструментов и граница сборочных инструментов на облачном Mac. Стоимость: Claude / GPT / Gemini через OpenRouter; изоляция: виртуальные файловые системы; состояние между сессиями: сравнение Agent Memory.
Разберите стек: модель — не продукт
Если агент — «говорящая модель», вы теряете три несущих слоя:
- Движок рассуждения: GPT, Gemini, Claude — план, выбор инструмента, интерпретация наблюдений.
- Контракт вызова: Function Calling (tool use) плюс JSON Schema — что можно вызвать и какой формы аргументы.
- Слоты рантайма: Model Context Protocol (MCP) подключает ФС, репозитории, браузер и внутренние API к хосту.
Консенсус 2025–2026: модели можно менять, контракты и слоты лучше держать стабильными. Не привязывайте бизнес к приватным именам SDK: проектируйте вокруг списка инструментов, схем и песочницы исполнения.
Роли GPT, Gemini и Claude
Все трое умеют вызывать инструменты. Разница в основном в стиле по умолчанию, мультимодальном входе, длинном контексте и осторожности к рискованным вызовам, а не в наличии function calling.
- GPT: зрелая документация цикла инструментов; OpenAI Function Calling и большая экосистема Responses / Chat Completions — частый оркестратор или бэкенд шлюза.
- Gemini: сильные мультимодальность и длинный контекст; официальный Function Calling подходит агентам, которые одновременно грузят документы, скриншоты и дерево репозитория.
- Claude: устойчивый tool use в коде и работе с компьютером; Anthropic tool use — для рискованных правок, когда важнее отказывать в превышении полномочий.
В проде обычно маршрутизация, а не вера в одну модель: сильное рассуждение для плана, дешёвые модели для массового извлечения, консервативный уровень плюс подтверждение для чувствительных записей. Счета: сравнение стоимости моделей.
Function Calling: законный интерфейс к миру
Function Calling — это не «модель сама выполняет функцию», а структурированное намерение вызова, решение об исполнении принимает хост.
- Модель: имя инструмента, аргументы, дальнейший план по наблюдениям.
- Хост: авторизация, лимиты, валидация, реальный I/O, результаты в список сообщений.
Имена полей различаются (tools / function / input_schema), цикл нет: объявить инструменты → tool call → выполнить → tool result → снова рассуждать. Не делайте «инструментом» сырую shell-строку: это обходит схему и отдаёт риск инъекции промпту.
Инженерный минимум
- Стабильные имена, один класс побочных эффектов на инструмент.
- Чтение и запись раздельно; запись по умолчанию с подтверждением или песочницей.
- Сохраняйте
call_idдля аудита и повторов.
JSON Schema: система типов инструментов
В стеке агента JSON Schema — это типы на этапе описания плюс проверка в рантайме. Пропущенные обязательные поля, неверные enum, лишние свойства должны падать до бизнес-логики; модель видит ошибку валидации и повторяет попытку.
Версионируйте parameters / input_schema как настоящую схему (JSON Schema), а не строку в промпте «передайте repo и branch».
Что должно быть в схеме
type,required,additionalProperties: falseпротив выдуманных полей.- Пути, URL, перечисления через
pattern/enum— не свободный текст вместо идентификатора. - Большие логи и diff не в аргументах: файл в рабочей области и путь, как в чтении VFS по запросу.
- Версия в схеме или суффиксе (
deploy_v2), чтобы старый и новый агент не делили размытый контракт.
Проверяйте после вывода модели и до реальных побочных эффектов. «Выведи JSON» в системном промпте — не производственный контроль.
MCP: универсальный слот для инструментов и контекста
MCP над Function Calling решает обнаружение и транспорт: инструменты не обязаны быть зашиты в приложение; MCP-сервер перечисляет tools, resources, prompts. Хосты (Claude Code, IDE-агенты, свой оркестратор) подключают много серверов по одному протоколу.
По сравнению с плагинным SDK у каждого вендора:
- Сменные инструменты: Git, браузер, тикеты — отдельные серверы; хост держит соединения и политику.
- Адресуемый контекст: URI ресурсов, чтобы не класть целые файлы в промпт.
- Отвязка от модели: один каталог MCP кормит слой Function Calling GPT, Gemini или Claude.
Инструменты MCP всё равно мапятся на объявления Function Calling с JSON Schema и белые списки путей на хосте. MCP — стандартная вилка, не граница безопасности; песочница, секреты и аудит остаются у хоста.
Полный цикл: от намерения к результату
Пример: «открыть PR с фиксом по упавшему iOS-билд-логу». Типичный порядок:
- Намерение пользователя; хост внедряет политику (без сертификатов, без прод-секретов).
- Модель читает список инструментов (статический реестр или MCP
list_tools). - Вызов
fetch_ci_log; аргументы через JSON Schema. - Исполнитель забирает логи в песочнице или на облачном Mac; избыток уходит в VFS.
- Результат возвращается; модель может вызвать
apply_patchс подтверждением или read-only diff. - Факты вроде «профиль истёк в прошлый раз» — в Memory, не в аргументы схемы. См. выбор Memory.
Ошибки должны быть структурированными (валидация, права, таймаут), иначе повторы превращаются в угадайку.
Сравнение и выбор
| Слой | Отвечает | Не отвечает | Типичный выбор 2026 |
|---|---|---|---|
| GPT / Gemini / Claude | План, выбор инструмента, объяснение наблюдений | Реальный I/O, авторизация | Маршрутизация по задаче, возможность смены |
| Function Calling | Намерение как запрос инструмента с id | Бизнес-модель прав | Tool use вендора, один адаптер хоста |
| JSON Schema | Форма аргументов, обязательность, enum | Побочные эффекты рантайма | Версионированная схема, проверка до execute |
| MCP | Обнаружение инструментов/ресурсов, транспорт | Замена песочницы и хранилища секретов | Сервер на систему + политика хоста |
Прод: валидация, права, откат
Перед релизом минимум четыре ворот:
- Враждебные тесты схемы: пропуски, лишние поля, неверные enum — хост отвергает, модель чинит по ошибке.
- Чужие инструменты: неизвестные имена, устаревший MCP-сервер, поддельный
call_idдолжны падать. - Изоляция эффектов: сборка, подпись, деплой вне чат-процесса; у агента по умолчанию нет прод-учётных данных.
- Наблюдаемость: имя инструмента, версия схемы, задержка, успех / ошибка валидации / ошибка прав.
OWASP относит избыточные права и prompt injection к ядру рисков LLM. «Модель попросила — мы выполнили» — не политика. Якорь: OWASP LLM Top 10.
Цепочка инструментов на облачном Mac
У iOS / кроссплатформенных команд в MCP часто есть xcodebuild, симуляторы и инструменты рядом с сертификатами. Они привязаны к macOS и цепочке Apple и не принадлежат общей Linux-песочнице функций.
Практичное разделение:
- Диалог и план: GPT / Gemini / Claude где угодно в облаке.
- I/O репозитория: VFS или MCP filesystem с белым списком путей.
- Настоящая сборка и устройства: контролируемый MCP-сервер или CI на облачном Mac Zilmac, секреты остаются на сборочной машине.
Стек моделей можно менять; схемы и каталоги MCP стабильны; побочные эффекты Apple попадают в утилизируемые сессии облачного Mac, а не на ноутбук.
FAQ
Function Calling и MCP дублируют друг друга?
Нет. Function Calling — как модель выдаёт запрос инструмента. MCP — как хост обнаруживает и подключает инструменты и ресурсы. Каждый MCP-tool всё равно мапится на объявление Function Calling.
Нужно ли подключать все три семейства моделей?
Нет. Сначала стабилизируйте контракт и MCP у одного вендора, затем маршрутизируйте вторую модель через те же схемы. Три вендора «для оценки» только расширяют непроверенную поверхность инструментов.
Можно ли держать JSON Schema только в системном промпте?
Не как единственный контроль. Промпт помогает заполнять аргументы; отказ незаконным аргументам — у валидатора хоста. Иначе инъекция или дрейф бьют сразу в бэкенд.
Как не залочиться на API одного вендора?
Внутри держите форму «имя инструмента + JSON Schema + результат исполнения». GPT / Gemini / Claude — адаптеры. MCP-серверы отдают хосту один каталог; биллинг и failover — на шлюзе.
Модели можно менять; хост сборки нельзя оставлять размытым
Когда GPT, Gemini и Claude сидят на одном контракте Function Calling и MCP, iOS-поставка всё равно упирается в цепочку Apple. Облачный Mac Zilmac подходит как контролируемый исполнитель: агент шлёт задачи под схемой; подпись и xcodebuild идут на изолированном macOS.
Аудируемый слот сборки без собственного физического Mac. — Смотреть тарифы облачного Mac