Почему AI-агенты используют JSON Schema, Function Calling и MCP: технологическая эволюция

От текстового чата к исполняемому агенту — почему JSON Schema, Function Calling и MCP стали инфраструктурой AI-агентов: хронология, взаимодействие и практический выбор.

В 2023 году плагины ChatGPT позволили миру впервые взглянуть на модели, вызывающие API. В 2024 году вызов функций стал стандартом для всех поставщиков. В 2025 году Anthropic выпустила MCP, и его переняли такие IDE, как Cursor и Claude Desktop. По той же дуге JSON превратился из формата обмена данными в формат агента.система типовипротокол рукопожатия.

Если вы создаете конвейеры RAG, рабочие процессы автоматизации или продукты в стиле Copilot, вы в конечном итоге столкнетесь с тремя терминами:Схема JSON(структурные ограничения),Вызов функции(модель выбирает инструменты и заполняет параметры) иМКП(Протокол контекста модели — стандартизированное подключение инструментов). Эта статья предназначена для разработчиков серверной части, платформ и приложений искусственного интеллекта. В ней рассказывается, почему возник каждый слой, какую проблему он решает, как они сочетаются друг с другом и как выбирать на практике.

Почему агентам нужны структурированные интерфейсы

Основная схема ранних приложений LLM заключалась в следующем: пользователи задавали вопросы → модель генерировала естественный язык → вручную копировали результаты для выполнения. Этого достаточно для сценариев чата, но он не может надежно управлять записью базы данных, отправкой электронных писем, проверкой инвентаря и т. д.Повторяемость и проверяемостьавтоматизированные задачи.

Режим ReAct (Reason + Act) в чистом проекте Prompt позволяет модели писать в тексте «Действие: поиск(запрос=...)», а главная программа использует обычный синтаксический анализ — он может работать, но он хрупкий: вложение скобок, экранирование кавычек и смешивание нескольких языков приведут к сбою синтаксического анализа. Производственная среда требуетМашиночитаемый, проверяемый, версионируемыйконтракт вместо того, чтобы полагаться на удачу при анализе Markdown.

JSON отвечает трем требованиям: он существует в больших объемах в данных обучения LLM, его могут читать как люди, так и программы, и он имеет развитую экосистему проверки схемы. В результате схема JSON стала фактическим стандартом для описания того, «какую форму данных должна выводить модель»; Вызов функций также включает в себя «какую функцию вызывать и какие параметры передавать» в одну и ту же структуру JSON.

График развития технологий

этапрепрезентативная способностьОсновные болевые точкиРешение
2022–2023 гг. РаннийОбычный текст + шаблон запросаВывод неразбираемых галлюцинаторных параметров.Пример формата ограничения для нескольких кадров
середина 2023 г.Идеи ReAct / ToolformerРегулярное действие синтаксического анализа нестабильноСогласованный блок JSON, по-прежнему полагайтесь на подсказку
Конец 2023–2024 гг.Вызов функций OpenAIФорматы неодинаковы среди производителей.Параметры инструментов уровня API, описание схемы JSON
2024 годСтруктурированные результатыМодель все еще может пропускать поляДекодирование ограничений на стороне сервера, принудительное соблюдение схемы
Конец 2024–2025 гг.MCP (продвигается Anthropic и другими)Интеграция N×M: каждая IDE × каждый инструментУнифицированный хост ↔ Протокол сервера, подключаемые инструменты
2025–2026 гг.Агент SDK + экосистема MCPРазрешения, аудит, мультитенантностьOAuth, транспорт stdio/SSE, обнаружение инструментов

Существенные изменения в этой строке:Переведите «то, что хочет сделать модель» с естественного языка в типизированные структурированные сообщения., а затем безопасно выполняется хост-программой или сервером MCP.

JSON Schema: «система типов» агента.

Схема JSON изначально использовалась для документации API и проверки конфигурации (OpenAPI, Kubernetes CRD и т. д.). В сценарии «Агент» он принимает на себя два типа обязанностей:

  • Входные параметры инструмента: Description search_products requires query (string) and limit (integer, default 10)
  • Выходные данные модели: Например, при извлечении объектов, меток классификации, заключений об утверждении и т. д. фиксированные поля должны быть возвращены для дальнейшего использования.

Типичные параметры инструмента Схема

{
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City name, e.g. Beijing or Shanghai"
    },
    "unit": {
      "type": "string",
      "enum": ["celsius", "fahrenheit"],
      "description": "Temperature unit"
    }
  },
  "required": ["city"]
}

The description field is particularly important: it enters the context of the model and helps the model understand when to call and what the semantics of each parameter are - Schema also servesвалидаториБыстрый.

Структурированные выходные данные и схема

Если в Prompt записана только схема, модель все равно может содержать дополнительные поля или ошибки типа. Режим структурированных выходов/JSON, предоставляемый OpenAI, Google и т. д., будет ограничивать токены на этапе декодирования, чтобы выходные данные строго соответствовали схеме. Это необходимо для конвейера типа «Распознавание счетов → Структурированный JSON → Система учета».

Предложения на этапе разработки: сначала используйте такие инструменты, как JSONtoolbox.Синтаксис схемы локальной проверки, and then use the sample payload to verify whether required and enum intercept illegal input as expected.

Вызов функции: установление связи между моделями и инструментами

Вызов функций (также называемый «Использование инструментов» или «API инструментов» различными поставщиками) определяет связь между моделью и хостом.раунд рукопожатий:

  1. Хост отправляет список инструментов (имя, описание, схему параметров) в модель вместе с сообщениями.
  2. The model does not directly execute the code, but returns tool_calls: selected tool name + JSON parameter string
  3. The host executes the real function (check DB, adjust HTTP), and stuff the result back into the conversation as tool role message
  4. Модель генерирует ответы, видимые конечному пользователю, на основе результатов.

Сравнение с текстовым режимом ReAct

РазмерыТекст ReActВызов функции
Формат параметраСвободный текст, необходимо проанализироватьJSON, собственные поля API
Несколько инструментов параллельноКатастрофаПоддержка нескольких вызовов инструментов одновременно
Точная настройка моделислабыйОбучение поставщиков формату инструмента
НаблюдаемостьНеобходимо создать журнал самостоятельноСтандартная структура сообщения, легко отслеживаемая

Вызов функций не устраняет структуру агента (LangChain, AutoGen, Cursor Agent и т. д.), но становится интерфейсом между структурой и моделью.тонкий уровень протокола—— Платформа отвечает за оркестровку, повторные попытки и память; API модели отвечает за «решение, какой инструмент вызывать».

MCP: экосистема подключаемых инструментов

Вызов функций решает проблему «как объявить вызов на стороне модели». Но когда количество инструментов растет и источники рассредоточены (GitHub, Slack, Postgres, браузеры, файловые системы), возникают новые проблемы:

  • Каждый хост (IDE, клиент чата, собственный агент) должен написать адаптацию для каждого инструмента.
  • Разрешения, учетные данные, методы транспорта stdio/HTTP независимы друг от друга.
  • Пользователи не могут «установить сервер MCP и сделать его доступным повсюду».

Протокол контекста модели (MCP)Открытый исходный код Anthropic в конце 2024 года позиционируется как стандартный протокол между хостом и поставщиком инструментов. Отношения по аналогии примерно такие:

аналогияВеб-эраАгентская эра
Описание возможностейСхема OpenAPI/JSONОпределение инструмента MCP (включая inputSchema)
Соединение во время выполненияHTTP ОТДЫХТранспорт MCP, такой как stdio/SSE
клиентБраузер, SDKХост MCP (Курсор, Claude Desktop…)
рынок плагиновnpm, расширение ChromeРеестр сервера MCP

Основные концепции MCP

  • Хозяин: приложение, инициировавшее соединение (например, Cursor IDE).
  • Клиент: Клиент MCP на хосте, поддерживающий сеанс с сервером.
  • Сервер: процессы, предоставляющие инструменты, ресурсы и подсказки (например, файловая система-mcp, github-mcp).
  • Возможности: список инструментов обнаруживается динамически, а не жестко запрограммирован в подсказке.

MCP Tool's inputSchema itself is JSON Schema. Therefore, MCP does not replace Function Calling, but standardizes "tool implementation"; Host may still use MCP toolsкартографированиеФормат вызова функций для API модели.

Как эти трое работают вместе

Используйте логический уровень, чтобы понять взаимосвязь между тремя:

┌─────────────────────────────────────────────┐
│  用户 / 业务系统                              │
└─────────────────────┬───────────────────────┘
                      ▼
┌─────────────────────────────────────────────┐
│  Agent Host(编排、权限、记忆)               │
│  ┌─────────────┐    ┌─────────────────────┐ │
│  │ LLM API     │◄──►│ Function Calling    │ │
│  │ (推理)      │    │ (tool_calls 消息)   │ │
│  └─────────────┘    └─────────────────────┘ │
│           ▲                    │              │
│           │ JSON Schema        ▼              │
│  ┌────────┴────────┐  ┌──────────────────┐  │
│  │ 输出 Schema     │  │ MCP Client       │  │
│  │ (Structured     │  │ ──stdio/SSE──►   │  │
│  │  Outputs)       │  │ MCP Server(s)    │  │
│  └─────────────────┘  └──────────────────┘  │
└─────────────────────────────────────────────┘
  • Схема JSON: Сквозной каждый слой — параметры инструмента, входная схема MCP, структурированный вывод модели.
  • Вызов функции: Модель ↔ Синтаксис вызова хоста
  • МКП:Хост ↔ Инструментальная шина для внешнего мира

Небольшие сценарии могут иметь только вызов функций + несколько локальных функций; Платформы агентов корпоративного уровня часто используют кластеры MCP + единый реестр схемы + журналы аудита.

Полный пример ссылки на звонок

Пользователь спросил: «Какая сегодня температура в Шанхае? Кстати, проверьте мой склад, связанный с json-схемой, на GitHub».

  1. ХозяинPull available tools from MCP: get_weather, github_search_repos
  2. Преобразован в массив инструментов API модели, каждый из которых имеет параметры схемы JSON.
  3. МодельВерните два вызова инструмента, оба параметра являются допустимыми JSON.
  4. ХозяинВызов сервера погоды и сервера github через MCP для сбора результатов в формате JSON.
  5. Результаты возвращаются в виде сообщений инструмента; модель синтезирует ответы на естественном языке
  6. Если вам нужно записать это в систему заказов на работу, то используйтеВыходная схемаConstraint final JSON: { "summary", "temperature", "repo_count" }

Если какой-либо параметр шага не соответствует Схеме, хост может отклонить его и запросить повторную попытку модели перед выполнением — это сложно сделать с помощью текстового ReAct.отказоустойчивый.

Сравнение выбора и лучшие практики

сценапредположение
Один бэкэнд + 3 или меньше инструментовДостаточно вызова функции + рукописной схемы.
IDE/Desktop Copilot, инструменты продолжают растиУстановите приоритет MCP-сервера и сократите интеграцию настройки хоста.
Последующей системе нужен только JSON, а не естественный язык.Структурированные выходные данные + строгая схема
Поставщики нескольких моделей (OpenAI + Claude + открытый исходный код)Схема отделена от определения инструмента и API производителя, а также от преобразования среднего уровня.
Комплаенс и аудитЗапишите все вызовы инструментов и версию схемы, запретите неопределенные инструменты.

Точки проектирования схемы

  • Field description clearly writes business semantics, which can reduce miscalls better than type alone.
  • required Better to be strict than loose; use default or explicitly nullable for optional fields
  • Use string + description instead for large enumerations to avoid the enum list being too long and occupying the context
  • Схема включена в управление версиями Git, а проверка кода выполняется так же, как и изменения API.

Часто задаваемые вопросы

Какова связь между схемой JSON и вызовом функций?

Вызов функций определяет, как модель объявляет и вызывает инструменты; Схема JSON описывает структурные ограничения параметров инструмента и выходных данных модели. Большинство API напрямую используют подмножество схемы JSON в качестве определения параметров инструментов.

Нужен ли мне еще MCP с вызовом функций?

Вызов функций решает протокол вызова между одноразовой моделью и главной программой; MCP решает, как инструменты обнаруживаются, авторизуются, подключаются и повторно используются в разных процессах. Сложные агенты обычно пересекаются с ними: MCP обеспечивает экосистему инструментов, а вызов функций — это синтаксис вызова на стороне модели.

Заменит ли MCP OpenAPI?

Полностью заменено не будет. OpenAPI описывает контракт HTTP API; MCP ориентирован на инструментальное соединение между средой выполнения агента и IDE. Службы REST по-прежнему могут использовать OpenAPI, а доступ к стороне агента можно получить через пакет MCP Server.

Почему для вывода агента также требуются ограничения схемы JSON?

Структурированный вывод облегчает анализ программы, проверку и использование последующих конвейеров, уменьшает количество пропущенных полей или ошибок типа, вызванных «свободной игрой» модели, а также повышает надежность автоматизированных задач.

Какой уровень следует изучить в первую очередь при разработке агента?

Рекомендуемая последовательность: основы схемы JSON → Вызов функций с помощью одного инструмента → Многоэтапная оркестровка агентов → Внедрение MCP по требованию для подключения к внешним системам. Каждый уровень решает задачи разной степени детализации.

Как локально проверить схему JSON, используемую агентом?

Вы можете использовать функцию проверки набора инструментов JSON, чтобы локально в браузере проверить, соответствует ли синтаксис схемы образцу данных и не загружаются ли данные на сервер.

Резюме и следующие шаги

Преобразование AI-агента из «способности общаться» в «возможность делать что-то» основано на фиксации неопределенности в структурированных границах слой за слоем: схема JSON определяет форму, вызов функций определяет, как модель взаимодействует, а MCP определяет, как инструмент подключается к экосистеме. Эти трое не заменяют друг друга;Разные слои в одном стеке.

Следующий шаг: возьмите реальный бизнес-инструмент (проверяйте заказы, отправляйте уведомления), напишите для него схему JSON → подключитесь к вызову функций и выполните один раунд → затем оцените, стоит ли инкапсулировать его как сервер MCP для повторного использования нескольких хостов. Схему и примеры данных можно проверить локально в наборе инструментов JSON перед выходом в Интернет.