OpenAI Responses API — это единый эндпойнт для запуска моделей с встроенными инструментами, многоходовыми вызовами и серверным состоянием. Если вы раньше строили агента на Chat Completions, собирая оркестрацию, память и вызов инструментов вручную, — Responses API забирает эту инфраструктуру на себя.
Разбираем, как он устроен, чем отличается от предыдущих подходов, что добавилось в 2026 году и как мигрировать без простоев.
Что это
Responses API — базовый «примитив» (по формулировке OpenAI), на котором строятся все их агентские продукты: Agents SDK, AgentKit, Codex CLI, ChatGPT-агенты. В одном эндпойнте POST /v1/responses собраны три вещи:
- Генерация ответов. Обычный input/output: даёте промпт — получаете текст, structured output или изображение.
- Инструменты. Модель сама вызывает ваши function calls, встроенные инструменты OpenAI (web search, file search, computer use, code interpreter) и внешние MCP-серверы — всё в одном запросе.
- Состояние. OpenAI хранит response с историей reasoning и вызовов инструментов. Вы ссылаетесь на предыдущий ответ через previous_response_id вместо того, чтобы каждый раз досылать весь диалог.
Ключевая идея: вместо «обмениваемся сообщениями с моделью» — «запускаем агента, который сам ходит в инструменты». Chat Completions остаётся поддерживаемым, но Responses — рекомендуемый API для всех новых проектов.
Зачем нужно
Практическая ценность Responses API — в сокращении инфраструктуры, которую раньше приходилось строить вокруг LLM-вызовов:
- RAG без своей векторной базы. File search работает по вашим файлам, загруженным в vector store, без необходимости поднимать Pinecone или PGVector.
- Веб-поиск без отдельного API. Web search встроен прямо в вызов — модель ходит в интернет и возвращает ответ с цитатами.
- Многоходовые задачи в одном запросе. Модель может вызвать инструмент, получить результат, вызвать следующий — всё в рамках одного response.
- Память без своей базы диалогов. Серверное состояние через previous_response_id хранит историю reasoning и вызовов.
- MCP-интеграции. Любой remote MCP-сервер подключается как инструмент — Notion MCP, ваш собственный, что угодно.
Как устроено
Сравнение с Chat Completions
Chat Completions — одноходовый примитив: вы отправляете messages, получаете одно сообщение в ответ. Память, вызов инструментов, филигранная логика — вся оркестрация на вашей стороне.
Responses API вбирает эту оркестрацию в себя:
| Аспект | Chat Completions | Responses API |
|---|---|---|
| Число ходов модели в одном вызове | 1 | Несколько (с инструментами и reasoning) |
| Состояние разговора | На вашей стороне (таскать history) | На стороне OpenAI через previous_response_id |
| Встроенные инструменты | Нет | web search, file search, computer use, code interpreter, MCP |
| Reasoning summary для мыслящих моделей | Нет | Да, включая reasoning_effort и summary |
| Мультимодальность | Частично | Нативно: текст + изображения в input и output |
| Структурированный вывод | Да | Да, более стабильный в связке с reasoning |
| Streaming | SSE | SSE и WebSocket-режим |
| Работа в фоне (background) | Нет | Да, для длительных агентских задач |
Это не drop-in replacement. Формат запроса и ответа другой: нет messages, есть input и instructions, инструменты объявляются по-другому. OpenAI выпустила отдельный тулкит completions-responses-migration-pack, который работает вместе с Codex CLI.
Формат запроса
import OpenAI from "openai"
const client = new OpenAI()
const response = await client.responses.create({
model: "gpt-5.5",
instructions: "Ты — помощник-рисёрчер. Отвечай кратко и с источниками.",
input: "Что нового в Notion API в 2025 году?",
tools: [
{ type: "web_search" },
{ type: "file_search", vector_store_ids: ["vs_..."] },
{
type: "mcp",
server_label: "notion",
server_url: "https://mcp.notion.com/mcp",
},
],
reasoning: { effort: "medium", summary: "auto" },
})
console.log(response.output_text)
Что здесь важно:
instructions— системная роль, отдельное поле верхнего уровня.input— не messages, а «вход». Может быть строкой, массивом блоков (text, image, file, audio) или «хвостом» диалога.tools— список, в который можно класть как встроенные инструменты OpenAI, так и свои (type: “function”) и MCP-серверы.reasoning— включает режим размышлений для мыслящих моделей с контролем «сколько думать» и «вернуть ли summary».previous\_response\_id(не показан) — ссылка на предыдущий вызов для продолжения разговора без передачи всей истории.
Встроенные инструменты
Часть инструментов живёт внутри OpenAI — не нужно своё обвязывание:
- Web search — модель ходит в интернет и возвращает ответ с цитатами.
- File search — векторный поиск по вашим файлам, загруженным в vector store. Заменяет retrieval-часть Assistants API.
- Computer use — агент управляет браузером в изолированной среде (скриншоты, клики, ввод).
- Code interpreter — выполняет Python в sandbox, возвращает результат и файлы.
- MCP — подключение любого remote MCP-сервера. Например, Notion MCP или ваш собственный.
- Image generation — генерация картинок прямо в рамках response.
- Function calling — ваши кастомные функции по старой схеме. Работает и мешается с встроенными инструментами в одном вызове.
Если вы раньше своими руками строили RAG над Pinecone или PGVector, попробуйте file search как base case. Для большинства рабочих сценариев этого хватит, и вы экономите неделю инфраструктуры.
Reasoning и состояние
Для мыслящих моделей (gpt-5.5, o4-серия, их mini-варианты) Responses API даёт два рычага:
reasoning\_effort: low / medium / high — сколько «думать» перед ответом. Баланс между латенси и качеством.reasoning.summary— краткое резюме рассуждения как отдельный блок output. Режимы: auto, concise, detailed.
Важный эффект хранения состояния: когда вы передаёте previous_response_id, модель видит свои предыдущие рассуждения в исходном виде — точность многоходовых задач вырастает. В Chat Completions этого нет: reasoning-трассы из одного вызова не переживают следующий, даже если вы вручную досылаете history.
Что добавилось в 2026
В марте 2026 OpenAI дорастила Responses до полноценной среды исполнения агентов — теперь не нужно самому городить песочницу под долгие задачи:
- Agent loop (встроенный цикл исполнения) — модель не выдаёт ответ сразу, а предлагает действие (запустить команду, сходить в сеть, дёрнуть данные), оно выполняется в контролируемой среде, результат возвращается модели, и так по кругу, пока задача не решена.
- Shell tool — в отличие от code interpreter, который гоняет только Python, shell даёт полноценную командную строку: grep, curl, awk из коробки, можно запустить Go, Java или поднять NodeJS-сервер.
- Контейнерный воркспейс — размещённая у OpenAI среда с файлами и базами, с сетевым доступом под контролем политик. Секреты в контейнер не кладутся: модель видит только плейсхолдеры, которые подменяются во внешнем слое.
- Компакция контекста — для долгих задач система сжимает предыдущие шаги в короткое представление, сохраняя главное. Появился отдельный вызов responses.compact.
- Skills (скиллы) — повторяемые сценарии, упакованные в переиспользуемый бандл: папка с SKILL.md (метаданные и инструкции) плюс вспомогательные файлы вроде API-спеков и ассетов.
- Tool search и apply patch — поиск по инструментам на лету (только gpt-5.4 и новее) и встроенный инструмент правки файлов патчами.
Смысл всех добавок один: собрать агента, который выполняет длинную задачу из одного промпта, без самодельной инфраструктуры вокруг.
Background и long-running агенты
Responses поддерживает background-режим (background: true). Вы ставите задачу, получаете response.id, и дальше опрашиваете статус или подписываетесь на события. Это особенно важно для агентов с computer use и MCP, которые легко работают по десятку минут и следом рвут синхронное HTTP-соединение.
Когда использовать
Concrete scenarios, где Responses API реально полезен:
- Research-агент под команду. Web search + file search по внутренней библиотеке + Notion MCP. Одним вызовом получаете ответ с ссылками, цитатами из ваших файлов и автоматически созданной страницей в Notion.
- Кодовые агенты. Code interpreter + function calling + computer use — модель выдвигает гипотезу, запускает Python в sandbox, проверяет факты в браузере и выдаёт финальный ответ.
- Клиентский чат с памятью. previous_response_id из последнего сообщения + structured outputs для бизнес-логики. Не нужно ни своей базы диалогов, ни retry-логики вокруг формата.
- Обработка PDF и сканов. Нативная мультимодальность + file search дают обработку документов без отдельного OCR и векторной базы на своей инфре.
- Электронная коммерция и поддержка. Один Responses-вызов обрабатывает вопрос клиента, ходит в ERP через MCP, проверяет статус заказа и возвращает структурированный ответ для UI.
Миграция с других API
С Chat Completions
По размеру работ — от пары часов до нескольких дней в зависимости от сложности проекта. OpenAI отдала отдельный репозиторий completions-responses-migration-pack, который под Codex CLI сам находит легаси-вызовы, переписывает импорты и формы запросов и открывает PR. Полезно как стартовая точка, с ручным проходом по каждому месту.
С Assistants API
Assistants API будет выключен 26 августа 2026-го. OpenAI выпустила отдельный migration guide. Основные шаги:
- Собрать важные assistant-объекты и превратить их в prompt-объекты OpenAI.
- Перенести vector store для file_search — формат тот же.
- Заменить thread/run-логику на previous_response_id.
- Свои tools и instructions перенести в поля Responses.
Тарифы и лимиты
Цена. Токены тарифицируются по выбранной модели: например, у gpt-5.5 — $5 за 1M входных и $30 за 1M выходных токенов на коротком контексте (цифры по состоянию на 07.07.2026, актуальные значения сверяйте с официальным прайсом). Сам эндпойнт надбавки не берёт, но встроенные инструменты стоят отдельно: web search и file search тарифицируются за вызов, контейнеры code interpreter — посессионно. Нюанс с web search: один вызов может развернуться в несколько внутренних под-поисков, и счёт идёт за каждый.
Prompt caching включён по умолчанию — повторяющиеся части instructions/input резко дешевят при повторных вызовах. Согласно официальной документации OpenAI, улучшение утилизации кэша в Responses API достигает 40–80% по сравнению с Chat Completions.
Хранение. Поле store: true включает хранение response на стороне OpenAI (нужно для previous_response_id). Для чувствительных данных есть режим с encrypted reasoning content.
Лимиты. Общие rate limits по моделям — см. в dashboard. Для computer use и MCP есть отдельные ограничения на время сессии.
Вендор-лок. Chat Completions был стандартом, который поддерживают Anthropic, Mistral, Together и другие. Переходя на Responses, вы жёстко привязываетесь к OpenAI. Решение обычно прагматичное: абстрагировать LLM-слой своими руками или через LiteLLM, а Responses-специфичные фичи включать точечно там, где они реально нужны.
Ограничения
Ограничения
Что учитывать
Вендор-лок — Responses API работает только с моделями OpenAI.
Никакой совместимости с Anthropic, Mistral или open-source провайдерами.
Стоимость инструментов — Web search и file search тарифицируются отдельно за каждый вызов.
Один web search может развернуться в несколько внутренних под-поисков.
Хранение данных — store: true хранит response на стороне OpenAI.
Для чувствительных данных нужен режим encrypted reasoning content.
Лимиты сессий
— Для computer use и MCP есть отдельные ограничения на время сессии, сверх общих rate limits по моделям.
Антипаттерны
Антипаттерны
Чего не делать
Не использовать как drop-in replacement — Формат запроса и ответа другой: messages
→ input + instructions, инструменты объявляются по-другому. Миграция требует переписывания кода.
Не откладывать миграцию с Assistants API
— Отключение 26 августа 2026-го, и откладывать нельзя, если вы ещё на нём.
Не строить свой RAG, не попробовав file search
— Для большинства рабочих сценариев встроенного file search хватает, и вы экономите неделю инфраструктуры.
Не игнорировать background-режим для долгих задач
— Синхронные вызовы с computer use и MCP легко рвут HTTP-соединение по таймауту.
Чеклист
Чеклист
Проверка перед запуском
Выбрать модель
— Убедиться, что выбранная модель поддерживает нужные инструменты (не все модели поддерживают reasoning, computer use или MCP).
Настроить tools
— Объявить встроенные инструменты, function calls и MCP-серверы в массиве tools одного запроса.
Определить reasoning_effort
— Выбрать low/medium/high в зависимости от баланса латенси и качества.
Включить store:
true — Если нужен previous_response_id для многоходовых диалогов.
Проверить лимиты
— Свериться с dashboard по rate limits и ограничениям времени сессии для computer use / MCP.
Запланировать миграцию
— Если на Assistants API, использовать migration guide и заложить время до 26 августа 2026-го.
Ссылки