Responses API
Эндпоинт нового поколения от OpenAI с сохранением состояния: встроенная поддержка инструментов, веб-поиска, поиска по файлам и многошаговых задач — постепенно заменяет Chat Completions.
Создание Response
POST /v1/responseshttps://test.kailin.com.cn/v1/responsesЗапрос
curl https://test.kailin.com.cn/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-token" \
-d '{
"model": "gpt-4o-mini",
"input": "Describe the Responses API in one sentence"
}'
Тело запроса
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
model | string | Да | Название модели |
input | string / array | Да | Входной текст или массив сообщений / частей контента |
stream | boolean | Нет | Потоковый вывод (более разнообразные типы событий) |
instructions | string | Нет | Инструкции системного уровня |
previous_response_id | string | Нет | Передайте ID предыдущего Response для непрерывности многоходового диалога без повторной отправки истории |
tools | array | Нет | Инструменты: function, web_search_preview и др. |
temperature / top_p | number | Нет | Параметры сэмплирования |
max_output_tokens | number | Нет | Максимум выходных токенов |
metadata | object | Нет | Произвольные пары «ключ–значение» (до 16) |
store | boolean | Нет | Сохранять ли результат для обращения по previous_response_id |
Пример с массивом input (в том числе с изображением):
{
"model": "gpt-4o-mini",
"input": [
{
"role": "user",
"content": [
{ "type": "input_text", "text": "Describe this image" },
{ "type": "input_image", "image_url": "https://example.com/cat.jpg" }
]
}
]
}
Ответ
{
"id": "resp_abc123",
"object": "response",
"created_at": 1730000000,
"status": "completed",
"model": "gpt-4o-mini",
"output": [
{
"type": "message",
"id": "msg_abc123",
"role": "assistant",
"status": "completed",
"content": [
{
"type": "output_text",
"text": "The Responses API is OpenAI's next-generation stateful endpoint…",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 30,
"total_tokens": 42
}
}
Чтобы извлечь текст, переберите элементы output с type: "message" и прочитайте content[].text; в SDK также есть сокращение resp.output_text.
Получение Response
GET /v1/responses/{response_id}curl https://test.kailin.com.cn/v1/responses/resp_abc123 \
-H "Authorization: Bearer sk-your-token"
Возвращает полный объект Response. Ответы, созданные с store: false, получить нельзя.
Сжатие контекста
POST /v1/responses/compactСжимает длинный диалог в краткое резюме — полезно для долго живущих агентов, чтобы снизить расход токенов в последующих запросах:
curl https://test.kailin.com.cn/v1/responses/compact \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-token" \
-d '{
"model": "gpt-4o-mini",
"input": [ ...long message array... ]
}'
| Параметр | Тип | Обязательно | Описание |
|---|---|---|---|
model | string | Да | Модель, используемая для сжатия |
input | array | Да | Массив сообщений для сжатия |
instructions | string | Нет | Собственные инструкции для составления резюме |
Возвращает объект со сжатым резюме, который можно поместить в input следующего запроса.
Доступ по WebSocket (wss://.../v1/responses с событиями response.create) зависит от поддержки WS-проксирования на шлюзе — основной путь клиентской интеграции остаётся REST + SSE и здесь не рассматривается.