Отправить запрос в фоновом режиме с помощью Responses API
При выполнении объемных задач генерации текста, например, в которых требуется обработка больших документов, наиболее эффективным может оказаться фоновый режим запросов.
В фоновом режиме Responses API в ответ на запрос не дожидается от модели результата генерации, а получает идентификатор задачи, после чего соединение разрывается. После этого вы можете с нужной вам периодичностью проверять статус задачи по ее идентификатору и, дождавшись выполнения, получить результат генерации.
Если у вас небольшой запрос, предусматривающий короткий ответ, отправьте базовый запрос. Если вы хотите, чтобы модель сохраняла контекст переписки, воспользуйтесь одним из способов управления контекстом.
Чтобы воспользоваться примером, вам понадобится сервисный аккаунт с ролью ai.languageModels.user и API-ключ с областью действия yc.ai.foundationModels.execute. API-ключ, который вы можете создать в AI Studio, имеет такие разрешения. Пример того, как настроить рабочее окружение, можно найти в разделе Начало работы.
import openai
import time
YANDEX_API_KEY = "<API-ключ>"
YANDEX_FOLDER_ID = "<идентификатор_каталога>"
YANDEX_MODEL = "yandexgpt"
client = openai.OpenAI(
api_key=YANDEX_API_KEY,
base_url="https://ai.api.cloud.yandex.net/v1",
project=YANDEX_FOLDER_ID,
)
# --- 1. Создаем ответ в фоне
resp = client.responses.create(
model=f"gpt://{YANDEX_FOLDER_ID}/{YANDEX_MODEL}",
input="Сделай краткое резюме текста: 'На платформе Yandex AI Studio доступно более 20 развернутых в облаке моделей в разных режимах работы. Самыми популярными по потреблению остаются модели семейства YandexGPT — на них приходится 62,7% от общего трафика на облачной платформе. Такой высокий спрос позволил снизить цены на собственные модели компании, сделав их более доступными. На втором и третьем местах — опенсорсные модели Qwen3‑235b от Alibaba Group (30,9%) и GPT‑OSS от OpenAI (5,7%).'",
background=True, # запускаем в фоне
)
print("Задача отправлена:", resp.id)
# --- 2. Опрашиваем статус
while True:
status = client.responses.retrieve(resp.id)
print("Статус:", status.status)
if status.status in ["completed", "failed", "cancelled"]:
break
time.sleep(2)
# --- 3. Получаем результат
if status.status == "completed":
print("Готовый ответ:", status.output_text)
else:
print("Ошибка:", status.status)
Где:
-
YANDEX_API_KEY— API-ключ для работы в AI Studio. -
YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта. -
YANDEX_MODEL— имя модели, которая будет обрабатывать запрос. -
background— флаг фонового режима; при значенииtrueзапрос выполняется асинхронно, не ожидая завершения генерации. -
resp— объект с результатами запроса на генерацию ответа.Возможные статусы результата генерации:
queued— задание находится в очереди на выполнение.in_progress— задание выполняется.failed— выполнение задания завершилось ошибкой.cancelled— выполнение задания было отменено.completed— задание успешно выполнено.
Результат генерации сохранится в поле
status.output_textпри переходе в статусcompleted.
Пример результата:
Задача отправлена: 1e5ee267-2d01-49d7-abf9-94b9********
Статус: queued
Статус: completed
Готовый ответ: В Yandex AI Studio доступно более 20 облачных моделей. Лидеры по популярности — модели YandexGPT (62,7% трафика), за ними следуют Qwen3‑235b (30,9%) и GPT‑OSS (5,7%). Высокий спрос на YandexGPT позволил снизить цены на модели компании.
import OpenAI from "openai";
const YANDEX_API_KEY = "<API-ключ>";
const YANDEX_FOLDER_ID = "<идентификатор_каталога>";
const YANDEX_MODEL = "yandexgpt";
const client = new OpenAI({
apiKey: YANDEX_API_KEY,
baseURL: "https://ai.api.cloud.yandex.net/v1",
project: YANDEX_FOLDER_ID,
});
// 1. Создаем ответ в фоне
const resp = await client.responses.create({
model: `gpt://${YANDEX_FOLDER_ID}/${YANDEX_MODEL}`,
input: "Сделай краткое резюме текста: 'На платформе Yandex AI Studio доступно более 20 развернутых в облаке моделей в разных режимах работы. Самыми популярными по потреблению остаются модели семейства YandexGPT — на них приходится 62,7% от общего трафика на облачной платформе. Такой высокий спрос позволил снизить цены на собственные модели компании, сделав их более доступными. На втором и третьем местах — опенсорсные модели Qwen3‑235b от Alibaba Group (30,9%) и GPT‑OSS от OpenAI (5,7%).'",
background: true,
});
console.log("Задача отправлена:", resp.id);
// 2. Опрашиваем статус
let status;
do {
status = await client.responses.retrieve(resp.id);
console.log("Статус:", status.status);
if (!["completed", "failed", "cancelled"].includes(status.status)) {
await new Promise((r) => setTimeout(r, 2000));
}
} while (!["completed", "failed", "cancelled"].includes(status.status));
// 3. Получаем результат
if (status.status === "completed") {
console.log("Готовый ответ:", status.output_text);
} else {
console.log("Ошибка:", status.status);
}
Где:
-
YANDEX_API_KEY— API-ключ для работы в AI Studio. -
YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта. -
YANDEX_MODEL— имя модели, которая будет обрабатывать запрос. -
background— флаг фонового режима; при значенииtrueзапрос выполняется асинхронно, не ожидая завершения генерации. -
resp— объект с результатами запроса на генерацию ответа.Возможные статусы результата генерации:
queued— задание находится в очереди на выполнение.in_progress— задание выполняется.failed— выполнение задания завершилось ошибкой.cancelled— выполнение задания было отменено.completed— задание успешно выполнено.
Результат генерации сохранится в поле
output_textобъектаstatusпри переходе в статусcompleted.
Пример результата:
Задача отправлена: 1e5ee267-2d01-49d7-abf9-94b9********
Статус: queued
Статус: completed
Готовый ответ: В Yandex AI Studio доступно более 20 облачных моделей. Лидеры по популярности — модели YandexGPT (62,7% трафика), за ними следуют Qwen3‑235b (30,9%) и GPT‑OSS (5,7%). Высокий спрос на YandexGPT позволил снизить цены на модели компании.
TASK_ID=$(curl -s -X POST https://ai.api.cloud.yandex.net/v1/responses \
-H "Authorization: Api-Key ${YANDEX_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt://'"${YANDEX_FOLDER_ID}"'/'"${YANDEX_MODEL}"'",
"input": "Сделай краткое резюме текста: \"На платформе Yandex AI Studio доступно более 20 развернутых в облаке моделей в разных режимах работы. Самыми популярными по потреблению остаются модели семейства YandexGPT — на них приходится 62,7% от общего трафика на облачной платформе. Такой высокий спрос позволил снизить цены на собственные модели компании, сделав их более доступными. На втором и третьем местах — опенсорсные модели Qwen3‑235b от Alibaba Group (30,9%) и GPT‑OSS от OpenAI (5,7%).",
"background": true
}' | jq -r '.id')
echo "Задача отправлена: $TASK_ID"
# 2. Опрашиваем статус
while true; do
RESPONSE=$(curl -s https://ai.api.cloud.yandex.net/v1/responses/${TASK_ID} \
-H "Authorization: Api-Key ${YANDEX_API_KEY}" \
-H "x-project: ${YANDEX_FOLDER_ID}")
STATUS=$(echo $RESPONSE | jq -r '.status')
echo "Статус: $STATUS"
if [[ "$STATUS" == "completed" || "$STATUS" == "failed" || "$STATUS" == "cancelled" ]]; then
break
fi
sleep 2
done
# 3. Получаем результат
echo $RESPONSE | jq .
Где:
-
YANDEX_API_KEY— API-ключ для работы в AI Studio. -
YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта. -
YANDEX_MODEL— имя модели, которая будет обрабатывать запрос. -
background: true— флаг фонового режима; запрос выполняется асинхронно, не ожидая завершения генерации. -
TASK_ID— идентификатор фоновой задачи, извлеченный из ответа с помощьюjq. -
STATUS— текущий статус задачи, извлеченный из ответа с помощьюjq.Возможные значения:
queued— задание находится в очереди на выполнение.in_progress— задание выполняется.failed— выполнение задания завершилось ошибкой.cancelled— выполнение задания было отменено.completed— задание успешно выполнено.
При статусе
completedполеoutput_textсодержит результат генерации.
Пример результата:
{
...
{
"annotations": [],
"text": "На платформе Yandex AI Studio доступно более 20 облачных моделей в разных режимах работы. Модели YandexGPT занимают 62,7% трафика, что позволило снизить их стоимость. На втором и третьем местах по популярности — модели Qwen3‑235b от Alibaba Group (30,9%) и GPT‑OSS от OpenAI (5,7%).",
"type": "output_text",
"logprobs": null,
"valid": true
... }
}
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
"github.com/openai/openai-go/responses"
)
const (
YANDEX_API_KEY = "<API-ключ>"
YANDEX_FOLDER_ID = "<идентификатор_каталога>"
YANDEX_MODEL = "yandexgpt"
)
func main() {
client := openai.NewClient(
option.WithAPIKey(YANDEX_API_KEY),
option.WithBaseURL("https://ai.api.cloud.yandex.net/v1"),
option.WithProject(YANDEX_FOLDER_ID),
)
model := fmt.Sprintf("gpt://%s/%s", YANDEX_FOLDER_ID, YANDEX_MODEL)
inputText := "Сделай краткое резюме текста: 'На платформе Yandex AI Studio доступно более 20 развернутых в облаке моделей в разных режимах работы. Самыми популярными по потреблению остаются модели семейства YandexGPT — на них приходится 62,7% от общего трафика на облачной платформе. Такой высокий спрос позволил снизить цены на собственные модели компании, сделав их более доступными. На втором и третьем местах — опенсорсные модели Qwen3‑235b от Alibaba Group (30,9%) и GPT‑OSS от OpenAI (5,7%).'"
// --- 1. Создаем ответ в фоне
resp, err := client.Responses.New(context.Background(), responses.ResponseNewParams{
Model: model,
Input: responses.ResponseNewParamsInputUnion{
OfString: openai.String(inputText),
},
Background: openai.Bool(true),
})
if err != nil {
log.Fatalf("Ошибка при создании задачи: %v", err)
}
fmt.Println("Задача отправлена:", resp.ID)
// --- 2. Опрашиваем статус
var status *responses.Response
for {
status, err = client.Responses.Get(context.Background(), resp.ID, responses.ResponseGetParams{})
if err != nil {
log.Fatalf("Ошибка при получении статуса: %v", err)
}
fmt.Println("Статус:", status.Status)
if status.Status == "completed" ||
status.Status == "failed" ||
status.Status == "cancelled" {
break
}
time.Sleep(2 * time.Second)
}
// --- 3. Получаем результат
if status.Status == "completed" {
fmt.Println("Готовый ответ:", status.OutputText())
} else {
fmt.Println("Ошибка:", status.Status)
}
}
Где:
-
YANDEX_API_KEY— API-ключ для работы в AI Studio. -
YANDEX_FOLDER_ID— идентификатор каталога сервисного аккаунта. -
YANDEX_MODEL— имя модели, которая будет обрабатывать запрос. -
background— флаг фонового режима; при значенииtrueзапрос выполняется асинхронно, не ожидая завершения генерации. -
resp— объект с результатами запроса на генерацию ответа.Возможные статусы результата генерации:
queued— задание находится в очереди на выполнение.in_progress— задание выполняется.failed— выполнение задания завершилось ошибкой.cancelled— выполнение задания было отменено.completed— задание успешно выполнено.
Результат генерации сохранится в поле
status.output_textпри переходе в статусcompleted.
Пример результата:
Задача отправлена: 1e5ee267-2d01-49d7-abf9-94b9********
Статус: queued
Статус: completed
Готовый ответ: В Yandex AI Studio доступно более 20 облачных моделей. Лидеры по популярности — модели YandexGPT (62,7% трафика), за ними следуют Qwen3‑235b (30,9%) и GPT‑OSS (5,7%). Высокий спрос на YandexGPT позволил снизить цены на модели компании.