Перейти к содержимому

Запустить синхронизацию эмбеддингов

POST
/wp-json/wp2tutor/embedding/v1/sync
curl --request POST \
--url https://example.com/wp-json/wp2tutor/embedding/v1/sync \
--header 'Content-Type: application/json' \
--header 'X-WP-Nonce: <X-WP-Nonce>' \
--data '{ "ids": [ 42, 43 ] }'

Считает векторы для переданных id фрагментов RAG (id_chunk) и пишет их в sqlite-vec. PHP EmbeddingRestController::sync → SyncService::sync_chunk_ids. Источник чанков — фильтр wp2tutor/embedding/chunk_source (модуль RAG). Тело JSON { ids: int[] }; не массив — как пустой. PHP intval + unique. Пустой список — 200, ok true, processed 0, message No ids. Не WP_Error: и успех, и отказ — один объект { ok, processed, message }. ok false → HTTP 400 (нет chunk source, пустой API-ключ эмбеддингов, нет модели, нет sqlite-vec, сбой батча и т.д.). ok true → 200, processed = число id после нормализации, message OK. Нужно manage_options. Cookie + X-WP-Nonce или Application Password.

Media typeapplication/json
object
ids

ID фрагментов RAG (id_chunk), не ID постов. PHP: не массив — как []. intval, unique. Пусто — 200 ok true processed 0 message No ids.

Array<integer>
Example
{
"ids": [
42,
43
]
}

Ok true. processed — сколько id ушло в батчи (после intval/unique). message обычно OK или No ids.

Media typeapplication/json
object
ok

True при 200 (в т.ч. пустой ids). false при HTTP 400 — эмбеддинги не записаны (или батч сорвался).

boolean
processed

Число id после нормализации, для которых прошли батчи embed+upsert. При ok false PHP ставит 0. При No ids. — 0.

integer
message

Короткий итог SyncService: OK, No ids., либо причина отказа (chunk source, API key, sqlite-vec, Embedding API failed for a batch, exception).

string
Example
{
"ok": true,
"processed": 2,
"message": "OK"
}

Ok false, то же тело (не WP_Error). Типичные message PHP: Chunk source unavailable (enable RAG + chunks DB).; Unknown embedding model configuration.; Embedding API key is empty.; Chunk database path missing.; sqlite-vec extension could not load (see lib/sqlite-vec/README.md).; Embedding API failed for a batch.; либо getMessage() исключения.

Media typeapplication/json
object
ok

True при 200 (в т.ч. пустой ids). false при HTTP 400 — эмбеддинги не записаны (или батч сорвался).

boolean
processed

Число id после нормализации, для которых прошли батчи embed+upsert. При ok false PHP ставит 0. При No ids. — 0.

integer
message

Короткий итог SyncService: OK, No ids., либо причина отказа (chunk source, API key, sqlite-vec, Embedding API failed for a batch, exception).

string
Example
{
"ok": false,
"processed": 0,
"message": "Embedding API key is empty."
}

Не аутентифицирован. DualRest: rest_forbidden (status 401), если нет cookie-сессии. Cookie + X-WP-Nonce или Application Password.

Media typeapplication/json
object
code

Код WP_Error. Для POST /chat 401 — rest_forbidden. DualRest cookie — rest_forbidden / rest_not_logged_in / rest_cookie_invalid_nonce.

string
message

Сообщение WP_Error (для секрета чата — Missing or invalid secret.).

string
data

Обычно { status: HTTP-код }, как PHP кладёт в WP_Error data.

object
Example
{
"code": "rest_forbidden",
"message": "Missing or invalid secret.",
"data": {
"status": 401
}
}

Нет права manage_options или невалидный REST nonce. WordPress REST: rest_forbidden / rest_cookie_invalid_nonce.

Media typeapplication/json
object
code

Код WP_Error. Для POST /chat 401 — rest_forbidden. DualRest cookie — rest_forbidden / rest_not_logged_in / rest_cookie_invalid_nonce.

string
message

Сообщение WP_Error (для секрета чата — Missing or invalid secret.).

string
data

Обычно { status: HTTP-код }, как PHP кладёт в WP_Error data.

object
Example
{
"code": "rest_forbidden",
"message": "Missing or invalid secret.",
"data": {
"status": 401
}
}