- Дата публикации
llm 0.32a2: переход на OpenAI Responses API и тонкая настройка рассуждений
Что нового
Свежий релиз llm 0.32a2 приносит главное изменение: поддержка OpenAI Responses API и новый способ работы с «рассуждающими» моделями уровня GPT‑5.
Ключевые обновления:
- Поддержка эндпоинта
/v1/responsesвместо/v1/chat/completionsдля большинства моделей с развитым рассуждением. - Новые классы
ResponsesиAsyncResponsesдля работы с Responses API. - Старые классы
ChatиAsyncChatпродолжают работать без изменений — плагины, которые их импортируют, не ломаются. - По умолчанию через Responses API теперь ходят модели:
o1o3-minio3o4-minigpt-5gpt-5-minigpt-5-nanogpt-5.1gpt-5.2gpt-5.4gpt-5.4-minigpt-5.4-nanogpt-5.5- и их «прикреплённые по дате» варианты.
- Возможность откатиться на старый путь
/v1/chat/completionsдля любой из этих моделей флагом CLI:-o chat_completions 1. - Зашифрованные элементы рассуждений сохраняются как
provider_metadataна объектахReasoningPartи передаются обратно в OpenAI в следующих ходах диалога. - Режим «видимых рассуждений» теперь запрашивается через
"summary": "auto", чтобы текст рассуждений стримился, когда модель его выдаёт. - Новый CLI-флаг:
llm -m <model> --options— показывает список доступных опций для конкретной модели. - Опция
-R/--no-reasoningпереименована в-R/--hide-reasoning. - В Python-API появился параметр
hide_reasoning=Trueу:model.prompt()conversation.prompt()model.chain()conversation.chain()- и их асинхронных версий.
- Этот же флаг доступен плагинам через
prompt.hide_reasoning— они могут решать, запрашивать ли «видимые» резюме рассуждений у провайдеров. - Новый параметр
options=dictу:Model.prompt()Conversation.prompt()Response.reply()- и их async-эквивалентов — по тому же паттерну, который уже использует
.chain().
- Старый формат
**kwargsдля настройки моделей пока работает для обратной совместимости, но больше не документируется и в будущем исчезнет.
Цифр по скорости, стоимости токена или размеру контекста в релизе нет. Основной упор — на API и управляемость рассуждений.
Как это работает
Переезд на /v1/responses
OpenAI перевела «рассуждающие» модели уровня GPT‑5 на новый эндпоинт /v1/responses. Он позволяет модели:
- делать несколько вызовов инструментов внутри одного ответа;
- чередовать текст и вызовы инструментов;
- возвращать детальные шаги рассуждения, если это разрешено настройками.
llm 0.32a2 добавляет для этого отдельные классы Responses и AsyncResponses. Они инкапсулируют логику работы с новым API. При этом:
- если вы или плагины продолжаете использовать
Chat/AsyncChat, всё остаётся как раньше; - при работе с перечисленными моделями (
o1, линейкаo3,o4-mini, вся серия GPT‑5)llmпо умолчанию выбирает Responses API.
При необходимости можно принудительно вернуть старый путь:
llm -m gpt-5 -o chat_completions 1 "Ваш промпт"
Здесь -o chat_completions 1 говорит llm: используй /v1/chat/completions, а не /v1/responses.
Работа с рассуждениями
Модели с расширенным reasoning часто генерируют не только финальный ответ, но и внутренние шаги рассуждения. В llm 0.32a2 это оформлено аккуратнее:
- Зашифрованные части рассуждений (то, что OpenAI не показывает в открытом виде) сохраняются как
provider_metadataна объектахReasoningPart. - При следующем запросе к той же беседе
llmотправляет эти данные обратно в OpenAI. Это помогает модели «помнить» структуру рассуждений между ходами.
Запрос резюме рассуждений теперь идёт с параметром:
"summary": "auto"
Это значит: если модель умеет отдавать видимый текст рассуждений, llm будет стримить его. По умолчанию такие токены выводятся в стандартный поток ошибок (stderr), чтобы не мешать основному ответу.
Если вы не хотите видеть ход мыслей модели, используйте:
- в CLI:
-Rили--hide-reasoning; - в Python:
hide_reasoning=True.
Новый параметр options в Python-API
Раньше дополнительные настройки модели чаще всего передавали через **kwargs. Теперь llm выравнивает интерфейс под .chain() и вводит явный параметр options:
response = model.prompt(
"Напиши краткое резюме",
options={
"temperature": 0.2,
"max_tokens": 512,
},
)
Тот же подход теперь работает и для:
Conversation.prompt()Response.reply()- их асинхронных версий.
**kwargs всё ещё принимаются, но это временная мера. В будущем этот путь уберут, так что лучше уже сейчас переходить на options=dict.
Что это значит для вас
Если вы пользуетесь llm из CLI
Для вас появились три практичные вещи:
-
Контроль над рассуждениями
- Хотите видеть, как GPT‑5 приходит к ответу — оставляете поведение по умолчанию.
- Не хотите засорять вывод промежуточными шагами — запускаете:
llm -m gpt-5 -R "Сделай техрезюме релиза"или
llm -m gpt-5 --hide-reasoning "Сделай техрезюме релиза" -
Быстрая проверка возможностей модели
Новый флаг:
llm -m gpt-5 --optionsпокажет, какие опции
llmподдерживает для этой модели. Удобно, если вы не помните точные имена параметров или хотите увидеть весь список. -
Выбор между Responses API и старым Chat Completions
Если ваш пайплайн завязан на предсказуемое поведение
/v1/chat/completions, можно принудительно откатиться:llm -m gpt-5 -o chat_completions 1 "Старый привычный режим"Это полезно, если вы:
- отлаживаете старый код;
- сравниваете ответы между двумя режимами;
- используете плагины или обвязки, которые ожидают именно старую схему.
Если вы пишете плагины или используете Python-API
Релиз заметно упрощает жизнь разработчикам:
-
Тонкая настройка рассуждений
Теперь вы можете явно уважать выбор пользователя: хочет он видеть reasoning или нет. Внутри плагина у вас есть
prompt.hide_reasoning:def my_model_plugin(prompt): if prompt.hide_reasoning: # Не запрашиваем видимое резюме рассуждений у провайдера request_summary = False else: request_summary = True ... -
Единый способ передавать опции
Вместо россыпи
**kwargs— один словарь:response = model.prompt( "Сгенерируй план статьи", options={ "temperature": 0.7, "max_tokens": 800, }, hide_reasoning=True, )Такой же паттерн работает для цепочек:
async for chunk in conversation.chain( "Разбей задачу на шаги", options={"temperature": 0.3}, hide_reasoning=False, ): print(chunk, end="") -
Работа с зашифрованными рассуждениями
Вам не нужно вручную хранить и прокидывать служебные данные reasoning.
llmсам кладёт их вprovider_metadataнаReasoningPartи отправляет обратно в OpenAI. Это снижает риск сломать контекст, если вы строите сложные цепочки запросов.
Где это полезно
-
Аналитика и сложные цепочки инструментов
Если вы строите пайплайны, где GPT‑5 вызывает несколько инструментов подряд, новый Responses API делает это естественным.
llmуже умеет с ним работать, вам не нужно вручную собирать запросы. -
Отладка промптов и агентных систем
Видимые рассуждения удобно использовать для отладки: вы видите, где модель «съезжает» с логики. Когда всё стабилизировалось, можно включить
hide_reasoning. -
Продукты с жёсткими требованиями к UX
Если вы интегрируете GPT‑5 в пользовательский интерфейс, где нельзя показывать «внутреннюю кухню», флаг
hide_reasoningпозволяет жёстко зафиксировать поведение.
Геоблокировок и требований VPN в релизе llm не описано, но сам llm зависит от доступности API OpenAI. Если OpenAI ограничивает доступ из России, придётся решать это на сетевом уровне (VPN, прокси, вынос запросов на бэкенд в другой юрисдикции).
Место на рынке
llm 0.32a2 — это не конкурент GPT‑5 или Claude 3.5. Это обвязка вокруг разных моделей, в том числе GPT‑5 и линейки o1/o3/o4, с удобным CLI и Python-API.
На фоне других клиентов к OpenAI и аналогичных обвязок релиз делает два акцента:
- Полноценная поддержка нового Responses API для целой линейки моделей OpenAI.
- Чёткий контроль над reasoning-токенами и единый интерфейс опций через
options=dict.
Чисел по скорости запросов через Responses API относительно старого Chat Completions, сравнений с прямой работой через HTTP или SDK других компаний в релизе нет. Делать выводы о производительности и стоимости можно только по своей практике.
Если вы уже используете llm как основной инструмент для работы с GPT‑5 и другими моделями OpenAI, обновление до 0.32a2 имеет смысл почти всегда: оно не ломает старый код, но даёт больше контроля и доступ к Responses API. Если вы только выбираете обвязку, это релиз показывает, что llm успевает за изменениями в API OpenAI и делает упор на прозрачное управление рассуждениями и настройками моделей.