Serverless-эндпоинты
Эндпоинт — это очередь задач плюс пул воркеров с автоскейлингом. Вы отправляете JSON в /run, платформа выдаёт ID задачи и сама масштабирует пул под нагрузку.
Что такое эндпоинт
Эндпоинт подходит, когда у вас:
- много короткоживущих запросов (инференс, эмбеддинги, классификация);
- нагрузка неравномерная (нужно держать пул > 0 ночью бессмысленно);
- нужен потоковый вывод (генерация LLM по токенам);
- важна изоляция: каждая задача обрабатывается одним воркером.
Создание эндпоинта
Эндпоинты → Новый эндпоинт.- Имя, образ воркера, CPU/память, GPU на воркер. Воркер — это ваш код, реализующий контракт воркера платформы (или используйте встроенный
echo-workerдля проверки). - Автоскейлинг: минимум и максимум воркеров, политика (по задержке очереди / числу запросов / активным воркерам), порог задержки, idle-таймаут.
- Параметры задач: таймауты выполнения, TTL в очереди, срок хранения результата.
Отправка задач
На странице эндпоинта во вкладке Консоль задач:
- Отправить задачу (
POST /v1/endpoints/[id]/run) — асинхронно. Возвращает ID задачи, статус опрашивается отдельно. Опционально указывается webhook URL, куда платформа пришлёт результат. - Запустить синхронно (
POST /v1/endpoints/[id]/runsync) — блокирует запрос до завершения задачи или до истечения таймаута.
curl -X POST https://api.play2go.ai/v1/endpoints/ep_.../run \
-H "Authorization: Bearer $PLAY2GO_AI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {"prompt": "Hello"},
"idempotencyKey": "<uuid>"
}'Streaming-вывод
Кнопка Стримить вывод открывает SSE-соединение с GET /v1/endpoints/[id]/stream/[jobId]. Воркер отправляет инкрементные чанки, платформа пересылает их клиенту в формате JSON-строк {"result": {"seq": N, "chunk": "...", "final": bool}}.
Подходит для построчной генерации LLM, прогресса длительных задач, частичных результатов.
Управление задачами
- Отменить — отменяет задачу (если она в очереди — выкидывает, если выполняется — посылает сигнал воркеру).
- Повторить — для завершённых задач: ставит заново в очередь с тем же inputом, но новым ID.
- Очистить очередь — выкидывает все задачи в статусе
JOB_STATUS_QUEUED. Используйте, когда задачи накопились из-за бага и их выполнение бессмысленно.
Автоскейлинг
Платформа наблюдает очередь и метрики каждого эндпоинта и масштабирует пул в пределах minWorkers–maxWorkers. Доступные политики:
- По задержке очереди — масштабирует, если самая старая задача в очереди ждёт дольше порога. Делитель (
scalerValue) ограничивает рост. - По числу запросов — пропорционально длине очереди.
- По активным воркерам — поддерживает постоянное число тёплых (заранее запущенных) воркеров.
Idle-воркер живёт idleTimeoutSeconds и сам выключается, если задач больше нет. По соответствующим тарифам в потребление попадает только активное время воркера (с задачей на руках).