|

GPT-6.1: вызов инструментов переходит на Responses — миграция в 3 модели и 5 изменений

GPT-6.1: вызов инструментов переходит на Responses — миграция в 3 модели и 5 изменений

Примечание автора: если ваш агент до сих пор вызывает client.chat.completions.create с параметром tools, то после перехода на GPT-6.1 вы упрётесь в конкретную развилку: текст по-прежнему работает, а для вызова инструментов придётся сменить эндпоинт.

Почему после перехода на GPT-6.1 вызов инструментов упирается в эндпоинт

Сразу к выводу: GPT-6 Astra, GPT-6.1 Sol и GPT-6.1 Terra поддерживают Chat Completions, но вызов инструментов работает только через Responses API. В одной кодовой базе обычный диалог можно оставить на Chat. Но как только вы подключаете функции, читаете результаты инструментов или гоняете многошаговый цикл с инструментами, запрос нужно отправлять на эндпоинт Responses.

Это не вопрос совместимости, который решается правкой параметров. Другой формат tools не поможет, tool_choice тоже: для этих трёх моделей Chat Completions вызов инструментов просто не предоставляет. Менять нужно сам эндпоинт и всю структуру запросов и ответов вокруг него. Чтобы сравнить оба эндпоинта на своём API-ключе, можно воспользоваться единым входом APIYI (apiyi.com): укажите base_url как https://api.apiyi.com/v1 и просто меняйте ID модели.

Есть и вторая ловушка: GPT-6 Sol и GPT-6 Luna. В Chat Completions они умеют вызывать функции, но только при reasoning_effort равном none. Иными словами, инструменты через Chat работают, но ценой отключённого рассуждения. Если рассуждение вам нужно, придётся снова переходить на Responses. Эту деталь часто упускают, и в итоге код запускается, а качество результата оказывается не тем.

Главная польза: прочитав статью, вы сможете определить, к какому типу относится ваша цепочка вызова инструментов, и перенести запросы с Chat-эндпоинта на Responses, не ломая общую архитектуру.

gpt-6-1-tool-calling-responses-migration-ru-image-0


Ключевые моменты по вызову инструментов в GPT-6.1

Таблица ниже показывает, к какому эндпоинту относятся три модели и две старые версии. Рекомендую сначала найти свою модель здесь, а потом переходить к шагам миграции.

Модель Chat Completions: только текст Chat Completions: вызов инструментов Эндпоинт для вызова инструментов
gpt-6.1-sol Поддерживается Не поддерживается Responses
gpt-6.1-terra Поддерживается Не поддерживается Responses
gpt-6-astra Поддерживается Не поддерживается Responses
gpt-6-sol Поддерживается Только при reasoning_effort = none Responses (если нужно сохранить рассуждения)
gpt-6-luna Поддерживается Только при reasoning_effort = none Responses (если нужно сохранить рассуждения)

Разделение труда между эндпоинтами: Chat для текста, Responses для инструментов

Если коротко, таблица говорит вот что: в серии GPT-6 Chat Completions превратился в чисто текстовый канал, а работа с инструментами вынесена отдельно в Responses. На старые проекты это влияет по-разному. Сервисы, которые занимаются только вопросами и ответами, суммаризацией и классификацией, почти не придётся трогать. А вот сервисы с агентами, вызовом функций и многошаговой оркестрацией инструментов мигрировать необходимо.

Если у вас уже есть собственная обёртка над SDK, новости хорошие: миграция затронет меньше, чем кажется. ID модели остаются прежними, способ аутентификации тоже, base_url не меняется. Меняются в основном структура тела запроса и способ возврата результатов инструментов в диалог. Так что основная работа не в «смене модели», а в «смене способа вызова».

Как выбирать между тремя основными моделями

GPT-6.1 Sol и GPT-6.1 Terra — это пара основных моделей нынешнего поколения. Отличаются они главным образом позиционированием и стоимостью. GPT-6 Astra — флагман предыдущего поколения: он по-прежнему поддерживает текстовый Chat и вызов инструментов через Responses, поэтому подойдёт проектам, которые уже стабильно работают и которые не хочется сильно переделывать. При выборе сначала смотрите, как часто вы вызываете инструменты, затем на длину контекста в одном запросе и только потом на цену. Вызов инструментов обычно означает несколько обменов туда-обратно, и расход токенов из-за этого заметно растёт.

Конкретные цены можно сверить с таблицей ниже. Ещё можно открыть документацию APIYI на apiyi.com и проверить актуальные тарифы, чтобы не планировать бюджет по устаревшим ценам.

gpt-6-1-tool-calling-responses-migration-ru-image-1


Что нужно поменять в вызове инструментов GPT-6.1: 5 правок

Это самый практичный раздел во всей статье. Если внести все пять правок ниже, типичный цикл вызова инструментов переедет с эндпоинта Chat на эндпоинт Responses.

№ Что менять Chat Completions Responses
1 Метод вызова client.chat.completions.create client.responses.create
2 Носитель входных данных массив messages параметр input
3 Объявление инструментов tools (остаётся) tools (структура почти такая же)
4 Возврат результата инструмента сообщение с role: "tool" элемент типа function_call_output
5 Контекст на несколько ходов вручную собирать полный messages можно связывать через previous_response_id

Пункты 1 и 2 проще всего упустить. Многие поправляют структуру tools и считают, что миграция закончена, а потом выясняется, что метод SDK остался прежним и запросы всё так же уходят в chat.completions. Эндпоинт определяется методом: пока метод не изменён, эндпоинт не поменяется.

Пункт 4 — место, где при миграции застревают чаще всего. В Chat результат выполнения инструмента возвращается в messages отдельным сообщением с role: "tool". В Responses нужно вернуть элемент вызова, который прислала модель, в том виде, как он пришёл, и добавить к нему function_call_output. Если пропустить один элемент или перепутать порядок, модель может повторно инициировать тот же самый вызов.

Пункт 5 из серии «можно не менять, но лучше поменять». Responses умеет продолжать предыдущий ход через previous_response_id, так что не нужно каждый раз заново отправлять всю историю сообщений. Для агентов с большим числом раундов вызова инструментов это влияет на стоимость заметнее, чем смена модели.

🎯 Совет: самый простой способ проверить миграцию — на время запустить обе цепочки, старую и новую, на одном и том же наборе запросов и сравнить долю попаданий в нужный инструмент и структуру ответов. Через единый интерфейс APIYI (apiyi.com) не придётся возиться с API-ключами разных платформ: достаточно одной настройки, чтобы сравнить реальные ответы Responses и Chat.


GPT-6.1: быстрый старт с вызовом инструментов

Минимальный пример с вызовом инструмента

Допустим, у вас есть функция-инструмент для проверки статуса заказа. Она называется get_order_status, а на вход получает номер заказа. Менять нужно только два места: способ вызова и возврат результата в модель.

  1. Инициализацию клиента оставляем как есть: в api_key подставьте свой ключ, а base_url задайте как https://api.apiyi.com/v1. Так можно будет напрямую вызывать любые модели, доступные через OpenAI-совместимый интерфейс.
  2. В качестве ID модели укажите gpt-6.1-sol (или gpt-6.1-terra, gpt-6-astra). Все три работают с вызовом инструментов через Responses.
  3. Замените старый client.chat.completions.create(...) на client.responses.create(...), а параметр messages на input.
  4. tools передаём как раньше: описание инструментов и схему параметров переписывать не нужно.
  5. В возвращённом output найдите элемент типа function_call, достаньте из него имя инструмента и аргументы и выполните свою функцию проверки заказа локально.
  6. Добавьте результат выполнения обратно как function_call_output и отправьте второй запрос, чтобы получить итоговый ответ.

Из этих шести шагов действительно «обязательные» — третий и шестой. Шаги 1 и 2 — это настройка, а в шагах 4 и 5 вы просто читаете то, к чему привыкли в Chat, из другого места.

🚀 Быстрый старт: если не хочется собирать тестовое окружение самому, получите бесплатные тестовые кредиты на APIYI (apiyi.com) и прогоните этот пример с проверкой заказа. А уже потом переписывайте боевой код — так риск минимальный.

Ещё проще сначала отделить слой инструментов от слоя модели: собрать определения инструментов в одном месте, а точку входа обернуть в одну функцию, которая внутри решает: «чистый текст — идём в Chat, есть tools — идём в Responses». Тогда миграция затрагивает только обёртку, а бизнес-код остаётся нетронутым.

gpt-6-1-tool-calling-responses-migration-ru-image-2


Цены и выбор модели GPT-6.1 (2026-11-12)

В таблице ниже — цены, действующие на 2026-11-12. Все значения указаны в долларах за 1M токенов.

Модель Вход Выход Чтение из кэша Рекомендуемый эндпоинт
gpt-6.1-sol $2 $10 $0.1 responses
gpt-6.1-terra $1 $5 $0.05 responses
gpt-6-luna $0.1 $0.5 $0.01 chat (reasoning_effort равен none) или responses

Из таблицы можно сделать вполне практичный вывод: цена входа и выхода у GPT-6.1 Terra ровно вдвое ниже, чем у Sol. Если в вашем сценарии много раундов с инструментами и контекст сильно повторяется, Terra чаще всего оказывается более разумным вариантом по умолчанию. Цены GPT-6 Luna ниже на целый порядок, так что на неё удобно отдать лёгкие задачи вроде классификации и извлечения данных, а Sol или Terra оставить для тех этапов оркестрации инструментов, где действительно нужно рассуждать.

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

💰 Совет по затратам: если бюджет нужно разбивать по проектам, вызывайте модели через единый ключ на APIYI (apiyi.com). Так расход по всем моделям собирается в одном месте, а при оплате по факту использования проще посчитать реальную стоимость вызова инструментов.


Часто задаваемые вопросы по вызову инструментов в GPT-6.1

Q1: Что такое GPT-6.1 и как он связан с GPT-6?

GPT-6.1 — это обновлённая версия серии GPT-6. Сейчас в неё входят две модели: GPT-6.1 Sol и GPT-6.1 Terra. В серию GPT-6 входят GPT-6 Astra, GPT-6 Sol и GPT-6 Luna. Все они используют один и тот же канал вызова инструментов через Responses, а различаются в основном позиционированием по возможностям и ценой.

Q2: Почему в Chat Completions не работают инструменты — я неправильно указал параметры?

Дело не в параметрах. GPT-6 Astra, GPT-6.1 Sol и GPT-6.1 Terra в Chat Completions поддерживают только работу с текстом, а вызов инструментов доступен исключительно в Responses API. Правки в `tools` и `tool_choice` ничего не изменят: нужно заменить метод SDK с `chat.completions.create` на `responses.create`.

Q3: Можно ли вызывать функции в Chat у GPT-6 Sol и GPT-6 Luna?

Можно, но только если `reasoning_effort` установлен в `none`. Если вам нужно сохранить уровень рассуждений, эти две модели тоже придётся запускать через Responses. При миграции это ограничение проще всего упустить: ошибки не будет, просто результат разойдётся с ожиданиями.

Q4: Нужно ли менять ID модели при переходе на Responses?

Нет. ID моделей остаются прежними: `gpt-6.1-sol`, `gpt-6.1-terra`, `gpt-6-astra`. `base_url` и способ аутентификации тоже не меняются. Изменить придётся три вещи: метод вызова, формат входных данных и структуру, в которой результаты инструментов передаются обратно модели.

Q5: Как быстро проверить, что вызов инструментов после миграции работает нормально?

Рекомендуем провести смоук-тест на одном и том же небольшом инструменте, например для проверки статуса заказа. Сначала убедитесь, что запрос действительно ушёл на эндпоинт Responses. Затем проверьте, что в возвращённом `output` есть запись `function_call`. Наконец, убедитесь, что после передачи `function_call_output` модель выдала итоговый ответ. Если все три шага прошли, цепочка работает. Для такой проверки достаточно получить тестовый API-ключ на APIYI (apiyi.com).

Q6: Нужно ли переносить на Responses сервисы, которые работают только с текстом?

Не обязательно. У трёх основных моделей текстовые возможности в Chat Completions по-прежнему доступны, так что сервисы для вопросов и ответов, суммаризации и перевода можно оставить как есть. Переносить нужно только запросы с `tools`. Поэтому это изменение затрагивает разные сервисы по-разному.

Q7: Как контролировать стоимость контекста при многошаговых вызовах инструментов?

Лучше использовать `previous_response_id`, чтобы продолжать с предыдущего шага, а не пересылать на каждом шаге всю историю целиком. Так повторяющийся префикс чаще попадает в кеш, а цена чтения из кеша намного ниже цены обычного ввода. Например, для `gpt-6.1-sol` ввод стоит $2, а чтение из кеша — $0.1. Разница довольно заметная.

Q8: Есть ли у миграции на Responses известные подводные камни?

Типичных ошибок две. Первая: поменяли только структуру `tools`, а метод вызова оставили прежним, и запрос по-прежнему уходит на эндпоинт Chat. Вторая: результат инструмента возвращают по-старому, через `role: «tool»`. Из-за этого модель не получает вывод и снова и снова вызывает инструмент. Если в команде используются модели вроде GPT-6 Sol, которым нужен `reasoning_effort` со значением `none`, лучше задать единое ограничение на уровне обёртки. Тогда не получится так, что один и тот же инструмент работает на одних моделях и не работает на других.


Ключевые выводы по вызову инструментов в GPT-6.1 (Key Takeaways)

  • Эндпоинты разделились: текст в GPT-6.1 Sol, Terra и GPT-6 Astra идёт через Chat, а инструменты нужно вызывать через Responses.
  • Одно исключение: GPT-6 Sol и GPT-6 Luna умеют вызывать функции через Chat, но только при reasoning_effort со значением none.
  • Пять изменений: метод вызова, носитель input, объявление tools, возврат результата через function_call_output и связывание запросов через previous_response_id.
  • ID моделей не меняются: base_url и ключ остаются прежними, миграция затрагивает только слой-обёртку.
  • Стоимость зависит от кеша: префиксы при вызове инструментов часто повторяются, а чтение из кеша стоит примерно в двадцать раз дешевле обычного входа.
  • Проверка в три шага: убедитесь, что запрос ушёл на нужный эндпоинт, что в output есть function_call и что после возврата результата вы получили финальный ответ.
  • С чего начать: возьмите бесплатный лимит APIYI (apiyi.com) и сначала запустите небольшой инструмент для поиска заказов, а потом переделывайте боевую цепочку.

Итоги

Суть изменений укладывается в одну фразу: в GPT-6.1 вызов инструментов переехал из Chat Completions в Responses, а работа с обычным текстом осталась на прежнем месте. Из этого следуют три вещи, которые стоит запомнить:

  1. Сначала классифицируйте, потом мигрируйте: сервисы, которые работают только с текстом, трогать не нужно, а запросы с tools придётся перевести на другой эндпоинт.
  2. Меняется метод, а не параметры: переключателем эндпоинта служит client.responses.create, а структура tools — лишь сопутствующая деталь.
  3. Главная зона риска — возврат результатов: function_call_output заменяет role: "tool", и здесь важны и порядок, и полнота данных.

Если у вас в продакшене уже работает вызов инструментов, лучше сначала выделить один минимальный инструмент и пустить на него часть трафика. Когда убедитесь, что вся цепочка работает, переключайте остальное. Чтобы не тратить время на ключи с разных платформ и настройку окружения, можно через APIYI (apiyi.com) с одним и тем же API-ключом сравнить реальные ответы Responses и Chat. Достаточно указать в base_url адрес https://api.apiyi.com/v1.


Источники

  1. Официальная документация OpenAI по моделям: описание возможностей эндпоинтов для серий GPT-6 и GPT-6.1, включая ограничение, по которому вызов инструментов идёт только через Responses
  2. Ссылка: developers.openai.com/api/docs/guides/latest-model
  3. Пояснение: первоисточник, по которому можно определить, поддерживает ли модель вызов функций в Chat Completions

  4. Документация APIYI по моделям и ценам: цены за входные и выходные токены и за чтение из кэша, а также рекомендуемые эндпоинты для каждой модели

  5. Ссылка: docs.apiyi.com/models
  6. Пояснение: здесь можно сверить правила тарификации, действующие с 2026-11-12, и рекомендации по выбору эндпоинта

Автор: техническая команда APIYI
Обратная связь: пишите нам через главную страницу APIYI (apiyi.com), а более подробное описание интерфейсов есть в документации на docs.apiyi.com

Читайте также

Похожие записи