Документация · Responses
Responses
OpenAI Responses API: синхронно, со стримингом и в фоне.
POST
/v1/responsesresponse = 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.effortstringlow,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="")