Skip to Content

Агентская система

Описание

Взаимодействие с компонентом Агентская система строится по следующей схеме:

  1. Проверка готовности конвейера на прием запросов с указанным ключом маршрутизации
  2. Отправка запроса и получение его идентификатора
  3. (Подождать) [Проверка списка](/primo-ai/developer/tutorial/agent-system#Проверка готовых запросов) обработанных запросов, пока идентификатор не появился в списке
  4. Получение данных запроса по идентификатору

Ключ маршрутизации

Чтобы сервер мог обработать запрос, нужно указать ключ маршрутизации (часть routingKey маршрута запроса POST /inference/agentSystem/\{routingKey\}/async). Ключ маршрутизации можно получить в Портале при создании проекта Агентских систем. Если использовать ключ маршрутизации, не настроенный на сервере, сервер вернёт ошибку. Для обработки запроса также должен быть активен на Целевой машине связанный с проектом Исполнитель агентских систем.

Авторизация

Каждый запрос в данном разделе требует указания заголовка Authorization. Подробнее об авторизации см. Авторизация.

Проверка готовости навыка

Проверка готовности навыка производится методом GET /inference/agentSystem/\{routingKey\}/status. Укажите в маршруте запроса routingKey: это ключ маршрутизации (например, agsys-xxxx, где xxxx – произвольное сочетание цифр и латинских букв).

GET /inference/agentSystem/\{routingKey\}/status HTTP/1.1 Host: ai-server-endpoint:44392 Accept: text/plain Authorization: ••••••

Если модель полностью готова принимать запрос, вернётся JSON со следующим содержимым:

{ "isServerLicensed": true, "isModelTypeRunning": true, "isAgentLicensed": true }

Если сервер работает без лицензии, isServerLicensed примет значение false. Если указанный routingKey не настроен в Портале, isModelTypeRunning примет значение false, а поле isAgentLicensed пропадет из JSON. Если ключ маршрутизации настроен на Целевых машинах (одной или нескольких), но их Агенты работают без лицензии, isAgentLicensed примет значение false.

Создать запрос

Запрос создаётся методом POST /inference/agentSystem/\{routingKey\}/async. Запрос отправляется с типом содержимого multipart/form-data / application/json.

POST /inference/agentSystem/agsys-xxxx/async HTTP/1.1 Host: ai-server-endpoint:44392 Accept: text/plain Authorization: •••••• Content-Length: 238 Content-Type: application/json; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW { "Prompt": "привет" }

Если запрос будет успешно создан, сервер вернёт в ответе его идентификатор (поле key):

{ "key": "5499d9d6-9ce6-465f-8016-72bad24dc1ce", "createdAt": "2026-03-11T11:32:43.034415+03:00", "expiresAt": "2026-03-11T12:32:43.034415+03:00", "routingKey": "agsys-xxxx", "result": { "isReady": false }, "files": [] }

Поля запроса.

  • files – коллекция с изображениями / документами. Поддерживаются форматы: jpg, jpeg, png, pdf, tiff. Опциональное поле
  • prompt** – запрос к модели. Опциональное поле
  • dataKey** – ключ данных. Опциональное поле. Позволяет обращаться к изолированным данным (например, через OwnerId в некоторых компонентах) по ключу.
ℹ️

** Обязательно укажите либо запрос к модели (поле prompt), либо изображения/документы (поле files). Запрос без prompt и без files получит ответ 400 Bad Request. Поля prompt и без files можно указывать одновременно.

Проверка готовых запросов

Проверка готовых запросов производится методом GET /inference/nlp/ready.

GET /inference/agentSystem/ready HTTP/1.1 Host: ai-server-endpoint:44392 Accept: text/plain Authorization: ••••••

Сервер вернёт список идентификаторов готовых запросов в виде JSON:

["5499d9d6-9ce6-465f-8016-72bad24dc1ce"]
ℹ️

Запрос появляется в этом списке, когда у него появляется флаг IsReady в поле Result.

Получить запрос

Получить запрос можно методом GET /inference/agentSystem/\{requestKey\}. Замените \{requestKey\} на идентификатор запроса (получен в предыдущем пункте):

GET /inference/agentSystem/5499d9d6-9ce6-465f-8016-72bad24dc1ce HTTP/1.1 Host: ai-server-endpoint:44392 Accept: text/plain Authorization: ••••••

В ответе придет JSON с результатами обработки текста запроса:

{ "key": "5499d9d6-9ce6-465f-8016-72bad24dc1ce", "createdAt": "2026-03-11T11:39:55.7324243+03:00", "expiresAt": "2026-03-11T12:39:55.7324243+03:00", "routingKey": "agsys-xxxx", "result": { "streamingStartedAt": "2026-03-11T11:39:56.1340994+03:00", "updatedAt": "2026-03-11T11:39:56.1797964+03:00", "streamingCompletedAt": "2026-03-11T11:39:56.1797964+03:00", "isReady": true, "isFailed": false, "answer": "Привет! Как дела?" }, "files": [] }

Обратите внимание на следующие поля:

  1. expiresAt: Когда запрос будет удален с сервера. Стандартное время – 1 час – можно перенастроить в параметре ClearRequestsService > DefaultExpirationSeconds файла конфигурации Api.Inference.
ℹ️

Обратите внимание, что если за отведенное время запрос не распознался, он всё равно будет удален.

  1. result > isReady: Готовность ответа. Если true, ответ полностью готов.

  2. result > isFailed: Корректно ли обработан запрос. Если false, при обработке запроса произошла ошибка.