OpenAI Agents API 2026: как AI-агент вызывает инструменты? JSON Schema, Tool Calling и данные workflow
10 сентября 2026 OpenAI выпустила harness Codex как публичную бету Agents API. Точнее инженерно так: модель только заполняет JSON инструмента; управляемый harness крутит цикл, сжимает контекст и шлёт субагентов. Этот текст раскрывает цепь: как Schema становится дверью, как Tool Calling предлагает вызов, куда падают объекты workflow.
Сразу
| Понятие | Одна строка | Падает на |
|---|---|---|
| Agents API | Codex harness под управлением OpenAI | sessions.create / agent |
| Tool Calling | Модель предлагает имя и аргументы | function_call / arguments |
| JSON Schema | Форма аргумента, которой можно в цикл | parameters / additionalProperties |
| Workflow | Сессия, ход, элементы, передача | session / turn / items |
Сначала разделение: вы объявляете Agent, Tools, Environment; OpenAI крутит цикл. Побочные эффекты остаются у хоста или в песочнице, не в весах.
Инструменты вызвать можно. Вызывает не модель
После беты один POST /v1/agents/sessions поднимает долгоживущего агента: найти заказ, прочитать репозиторий, послать субагента. Побочные эффекты настоящие.
«Напрямую вызвать» ставит подлежащее не туда. Модель не держит MCP-сокет, не порождает песочницу и не бьёт ваш деловой API. Она выдаёт проверяемый объект. Исполняет управляемый harness и выбранный Environment.
- Объявить: functions, MCP и web_search в
agent.tools. - Предложить: модель шлёт
function_call— имя плюс объект аргументов. - Исполнить: harness бьёт сервисный инструмент, ваш handler или команду в песочнице.
Если Agent, Tool Calling и Function Calling всё ещё одно слово, сначала Полный гид по AI Agent. Здесь один факт: как Agents API хостит эту JSON-цепь.
Что бета 10 сентября реально отдала
OpenAI сказала прямо: тот же harness, что за Codex и ChatGPT for Work, как API. На стороне модели часто Гид GPT-6 Astra. Платите токены и использование инструментов; сам API платы не добавляет.
- Управляемый цикл: session, оркестрация, восстановление — без своего клея LangChain.
- Сжатие контекста: авто-compact у края окна, работа через несколько окон.
- Tool search + programmatic tool calling: подгружать определения по нужде, звать параллельно, возвращать в контекст только нужное.
- MCP / function / web_search: одна таблица инструментов может их смешать.
- Субагенты:
multi_agent.enabled, с потолком параллелизма (в доке часто 6).
Прогнозы OpenAI DevDay 2026 угадывала Structured Outputs и Function Calling. Приземлился ресурс сессии: Agent, Environment, Session, Events / Items — не ещё одна обёртка chat completion.
Скелет по-прежнему JSON Tool Calling
Имя API сменилось. Четыре прыжка — нет:
- Объявить:
agent.tools[]даёт Schema функции, MCP-сервер, встроенные инструменты. - Предложить: модель заполняет имя и аргументы. Она не исполняет.
- Дверь: harness или ваш handler проверяет, держит allowlist, может ждать человека.
- Записать назад: результат инструмента становится следующим видимым item.
Создание сессии выглядит примерно так. Заказ вымышленный — не кладите настоящие секреты и внутренние URL на публичный сайт:
{
"agent": {
"model": "gpt-6-astra",
"instructions": "Look up orders. Confirm before any refund.",
"tools": [
{ "type": "programmatic_tool_calling" },
{
"type": "function",
"name": "lookup_order",
"parameters": {
"type": "object",
"properties": {
"order_id": { "type": "string", "pattern": "^[A-Z]-\\d{4}$" }
},
"required": ["order_id"],
"additionalProperties": false
}
},
{
"type": "mcp",
"server_label": "orders",
"transport": {
"type": "http",
"server_url": "https://orders.example.com/mcp"
}
}
],
"multi_agent": {
"enabled": true,
"max_concurrent_subagents": 3
}
},
"environment": {
"type": "hosted",
"workspace_directory": "/workspace"
},
"input": [
{
"role": "user",
"content": [
{ "type": "input_text", "text": "Look up order A-1042." }
]
}
]
}
Когда цикл крутится, модель всё равно шлёт объект, не абзац «пожалуйста, найдите заказ»:
{
"type": "function_call",
"id": "call_3c91",
"name": "lookup_order",
"arguments": "{\"order_id\":\"A-1042\"}"
}
Строка MCP — другое написание той же таблицы; граница в MCP Tool Schema vs Function Calling. Кодинг-агент в песочнице всё ещё JSON — см. Кодинг-агенты и JSON-цепь вызова.
Дверь — JSON Schema, не «верните JSON»
Хостинг цикла не делает широкий object безопасным. Договор в Зачем ИИ нужен JSON Schema: промпт влияет, что она заполнит; Schema решает, что можно исполнить.
{
"name": "lookup_order",
"description": "Look up an order by ID",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"pattern": "^[A-Z]-\\d{4}$"
}
},
"required": ["order_id"],
"additionalProperties": false
}
}
Schema функции, которая реально стопорит плохой прыжок, нужна в четырёх местах:
- Сжать типы: у
order_id— pattern, не голыйstring. - Enum сумм и действий: возвраты и смена статуса требуют
enum. - Закрыть лишние ключи:
additionalProperties: false. Широкий объект — ещё одна дверь. - Подтверждение пишет хост: модель может предложить
create_refund; ей нельзя писатьallowed: trueв состояние.
Держать инструменты и workflow как Schema в репозитории, не как договор в чате. Как нанизывать двери: JSON Schema и workflow AI-агентов.
Workflow — четыре объекта, не цепочка промптов
OpenAI складывает Agents API в четыре понятия. Инженерно это всё JSON:
- Agent: модель, instructions, tools, MCP. Таблица способностей.
- Environment: hosted или self-hosted песочница. Файлы, команды и skills живут здесь.
- Session: долгоживущий экземпляр. Состояние на стороне сервиса; историю не собираете сами.
- Events / Items: вход, вызовы инструментов, результаты, координация субагентов.
Проверяемый workflow выглядит как объекты, не как последнее предложение «готово»:
{
"session_id": "sess_9f2a",
"turn": 2,
"items": [
{ "type": "function_call", "name": "lookup_order", "id": "call_3c91" },
{ "type": "function_call_result", "call_id": "call_3c91", "status": "paid" }
],
"state": {
"order_id": "A-1042",
"status": "paid"
},
"next": {
"tool": "create_refund",
"allowed": false,
"reason": "missing_confirmation"
}
}
У каждого субагента свой контекст. Главный агент координирует item’ами create / message / wait / interrupt. Ставьте потолок параллелизма. Без потолка токены и побочные эффекты веером.
Кто крутит цикл
Вопрос не в том, кто умнее. Где живёт оркестрация:
| Ось | Agents API | Agents SDK | Responses API |
|---|---|---|---|
| Кто крутит цикл | Codex harness под OpenAI | Runner в вашем процессе | Собираете сами или опциональная хостинг-оркестрация |
| Где живёт состояние | Session / turns / items | Ваше хранилище или SDK-сессия | История, цепочки ответов, Conversations |
| Кто исполняет инструменты | Сервисные инструменты, handler’ы, песочница | Инструменты в приложении | Хостинг-инструменты или ваш рантайм |
| Когда брать | Часовые задачи с хостинг-восстановлением | Нужно самим держать approvals и деплой | Бьёте модель напрямую или строите агента с нуля |
Сначала подлежащее, потом API: хотите ли вы владеть циклом. Полное сравнение — в следующей статье. Здесь одно требование: смените вход, JSON-цепь вызова останется.
Смотреть объекты, не «агент закончил»
После сессии не разбирать последнее предложение. Разбирать след.
- форматировать
agent.tools,function_callиfunction_call_result. Имя и аргументы должны быть тем прыжком, который вы думали. - извлечь JSONPath вытаскивает
name,argumentsиserver_url. Не сканировать прозу глазом. - JSON Diff против следа сессии, что прошла на прошлой неделе. Цикл поплыл — сначала таблица инструментов и форма аргументов, потом модель.
- Сводки после compact должны нести ключевые поля. Потеряете
order_id— следующий прыжок заполнит не то. - Не класть заказы, сессии и внутренние MCP URL в публичный форматтер. JSONSort крутится локально в браузере; это место читать такие объекты.
След собирается заново — сессию можно разобрать. Это вход в прод, не украшение.
Ловушки
- Думать, что Agents API даёт модели исполнять инструменты. Исполнение на harness и Environment.
- Отдать широкий
objectуправляемому циклу. Хостинг — не дверь. - Включить multi_agent без потолка параллелизма. Субагенты разворачивают токены и побочные эффекты веером.
- Считать Session ещё одним chat completion. Состояние, восстановление и compact — объекты первого класса.
- Заменить Schema промптом. Договор должен проверяться.
- Читать hosted-песочницу как Zero Data Retention. OpenAI прямо: self-hosted не делает Agents API ZDR-eligible.
FAQ
Agents API даёт модели вызывать инструменты напрямую?
Напрямую она даёт испускать JSON инструмента. Исполнение остаётся в управляемом harness, вашем handler или песочнице. Без tools[] она ничего не вызывает.
Agents API или Responses API — с чего начать?
Хотите, чтобы OpenAI крутила длинный цикл, сжимала контекст и слала субагентов — Agents API. Хотите владеть каждым вызовом модели — Responses API. Цикл в своём процессе — Agents SDK.
Нужна ли JSON Schema на Agents API?
Да. Управляемый цикл только оркестрирует. Параметры функций, MCP inputSchema и объекты состояния всё равно нужно сжимать. Широкая Schema плюс автоцикл открывает дверь шире.
Чем Session, Turn и Item отличаются?
Session — долгоживущий экземпляр. Turn — работа от одного пользовательского ввода. Items — входы, вызовы, результаты или координация субагентов на этом отрезке. Аудит смотрит items, не последнее предложение.
Можно ли агенту трогать прод-базу или делать прод-возврат?
Не ставьте продовые побочные эффекты на первый прыжок. Пусть черновит в изолированной среде за узкой Schema. Подтверждение пишет хост. Секреты и выпуск — человеческая стратегическая дверь.
Вывод
Agents API даёт агенту «вызывать инструменты напрямую» — фраза верна лишь наполовину. Верная половина: цикл больше не пишете вы. Ложная — подлежащее. Подлежащее — harness; сказуемое — исполнить; дополнение — JSON, который заполнила модель.
С сегодня меньше спорить, «делает ли оно само». Сначала положить Agent, Tools, session items и Schema в репозиторий. Модели сменятся. Эту JSON-цепь Tool Calling стоит стабилизировать первой.
Дальше
- Что такое AI Agent? Полный гид Рантайм, tool calling и JSON-договор
- JSON Schema и workflow AI-агентов Инструменты и состояние как Schema
- MCP Tool Schema vs Function Calling Граница протокола для JSON инструментов
- Зачем ИИ нужен JSON Schema Schema / Function Calling / Structured Output
- Прогнозы OpenAI DevDay 2026 Старая рамка Structured Outputs / Agent
- Локальный ящик JSONSort Формат, проверка, Diff
- Все статьи Ещё заметки про JSON и ИИ
Журнал: Первая публикация