В 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_productsrequiresquery(string) andlimit(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 инструментов» различными поставщиками) определяет связь между моделью и хостом.раунд рукопожатий:
- Хост отправляет список инструментов (имя, описание, схему параметров) в модель вместе с сообщениями.
- The model does not directly execute the code, but returns
tool_calls: selected tool name + JSON parameter string - The host executes the real function (check DB, adjust HTTP), and stuff the result back into the conversation as
toolrole message - Модель генерирует ответы, видимые конечному пользователю, на основе результатов.
Сравнение с текстовым режимом 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».
- ХозяинPull available tools from MCP:
get_weather,github_search_repos - Преобразован в массив инструментов API модели, каждый из которых имеет параметры схемы JSON.
- МодельВерните два вызова инструмента, оба параметра являются допустимыми JSON.
- ХозяинВызов сервера погоды и сервера github через MCP для сбора результатов в формате JSON.
- Результаты возвращаются в виде сообщений инструмента; модель синтезирует ответы на естественном языке
- Если вам нужно записать это в систему заказов на работу, то используйтеВыходная схемаConstraint final JSON:
{ "summary", "temperature", "repo_count" }
Если какой-либо параметр шага не соответствует Схеме, хост может отклонить его и запросить повторную попытку модели перед выполнением — это сложно сделать с помощью текстового ReAct.отказоустойчивый.
Сравнение выбора и лучшие практики
| сцена | предположение |
|---|---|
| Один бэкэнд + 3 или меньше инструментов | Достаточно вызова функции + рукописной схемы. |
| IDE/Desktop Copilot, инструменты продолжают расти | Установите приоритет MCP-сервера и сократите интеграцию настройки хоста. |
| Последующей системе нужен только JSON, а не естественный язык. | Структурированные выходные данные + строгая схема |
| Поставщики нескольких моделей (OpenAI + Claude + открытый исходный код) | Схема отделена от определения инструмента и API производителя, а также от преобразования среднего уровня. |
| Комплаенс и аудит | Запишите все вызовы инструментов и версию схемы, запретите неопределенные инструменты. |
Точки проектирования схемы
- Field
descriptionclearly writes business semantics, which can reduce miscalls better thantypealone. requiredBetter to be strict than loose; usedefaultor explicitly nullable for optional fields- Use string + description instead for large enumerations to avoid the
enumlist 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 перед выходом в Интернет.