Документация · Responses

Responses

OpenAI Responses API: синхронно, со стримингом и в фоне.

POST/v1/responses
response = client.responses.create(
    model="gpt-5.4-mini",
    instructions="Отвечай кратко.",
    input="Чем Responses API отличается от Chat Completions?",
)
print(response.output_text)

Тело запроса

modelstringобязательный
id из /v1/models.
inputstring | object[]обязательный
Строка или сообщения {role, content} с частями input_text.
instructionsstring
Системная инструкция.
max_output_tokensinteger
Предел длины ответа.
temperaturenumber
От 0 до 1.
reasoning.effortstring
low, medium, high.
streamboolean
События response.* по мере генерации.
backgroundboolean
Не ждать ответ: сразу вернуть id со статусом queued.
previous_response_idstring
Продолжить диалог: модель увидит предыдущий запрос и ответ.
{
  "id": "resp_6f1c2a0e…",
  "object": "response",
  "status": "completed",
  "model": "gpt-5.4-mini",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "status": "completed",
      "content": [{ "type": "output_text", "text": "Responses API хранит состояние…", "annotations": [] }]
    }
  ],
  "usage": { "input_tokens": 31, "output_tokens": 96, "total_tokens": 127 }
}

Фоновый режим

Работает как у OpenAI: с background: true запрос сразу возвращает ответ со статусом queued. Статус меняется на in_progress, затем на completed, incomplete, failed или cancelled.

ЗапросЧто делает
GET /v1/responses/{id}Текущий статус и, когда готово, ответ.
POST /v1/responses/{id}/cancelОстановить генерацию: статус cancelled, заряды возвращаются.
GET /v1/responses/{id}?stream=true&starting_after=NПродолжить поток после события с sequence_number N.
import time

job = client.responses.create(model="gpt-5.4-mini", input="Длинный отчёт…", background=True)
while job.status in ("queued", "in_progress"):
    time.sleep(2)
    job = client.responses.retrieve(job.id)
print(job.status, job.output_text)

Фон вместе со стримингом

С background: true и stream: true события идут сразу, а генерация не прерывается, если соединение оборвалось. Запомните sequence_number последнего события и продолжите поток с него.

stream = client.responses.create(
    model="gpt-5.4-mini", input="Длинный отчёт…", background=True, stream=True
)
cursor = None
for event in stream:
    cursor = event.sequence_number
    if event.type == "response.created":
        response_id = event.response.id
    # …соединение оборвалось

for event in client.responses.retrieve(response_id, stream=True, starting_after=cursor):
    if event.type == "response.output_text.delta":
        print(event.delta, end="")
Responses API: фоновые ответы и стриминг | SUJIK AI