Отправка HTTP-запросов к сервису

После разворачивания образа на указанной конфигурации можно отправлять запросы на хост для целевого использования модели. REST API сервиса использует протокол HTTP для отправки данных и ответы в формате JSON. HTTP-запросы можно исполнить из консоли с помощью инструмента командной строки curl. Для проверки корректности запросов с клиента на сервис и получения ответа от бэкенда рекомендуется использовать набор инструментов Postman.

Стандартный HTTP-запрос состоит из следующих частей:

  • Конечная точка. URL, который клиент использует для связи с сервисом.

  • Метод HTTP. Он сообщает сервису, какое действие хочет выполнить клиент. В примере ниже метод POST используется для создания ресурса на сервисе. Если ресурс существует, он переопределяется.

  • Заголовок (header). Используется для передачи дополнительной информации между сервисом и клиентом.

  • Тело. Данные, которые отправляются на сервис.

Отправка HTTP-запросов через Postman

Рассмотрим как отправлять HTTP-запросы к модели. Используем для этой цели Postman.

  1. Скачайте и установите приложение с сайта https://www.postman.com/downloads/. Если приложение уже установлено на вашем компьютере, переходите к шагу 2.

  2. В интерфейсе Postman откройте вкладку Import. В открывшемся диалоговом окне выберите опцию Raw text. В поле ниже вставьте следующий текст.

    curl --location --request POST 'https://api.aicloud.sbercloud.ru/public/v2/auth' \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "email": "example123@ex.ru",
    "password": "example"
    }'
    

    Где email, password — это логин и пароль от учетной записи пользователя.

    В интерфейсе программы это выглядит так:

    ../_images/s__raw-text.png

    Важно

    x-api-key в запросе выше приведен в информативных целях и не нужен для авторизации.

  3. Нажмите кнопку Continue → Import.

  4. Для отправки запроса на авторизацию нажмите кнопку Send. В ответ придет access token, который можно использовать для отправки запросов к модели.

    ../_images/s__access-token.png

    Важно

    Access token действует ограниченное время, по истечении которого нужно отправлять повторный запрос на авторизацию. Для получения нового access token используйте refresh token.

    Для отправки запроса к модели на сервис, необходимо указать x-api-key, access_token и x-workspace-id в соответствующих полях. Обратите внимание на то, что x-api-key — это клиентский ключ доступа к API. Он индивидуален для каждого аккаунта пользователя. Его можно узнать двумя способами:

    • Выполните в терминале Jupyter Notebook команду set для вывода всех переменных окружения пользователя. Используйте значение переменной GWAPI_KEY.

    • Выполните в терминале Jupyter Notebook следующий блок:

      import os
      print(os.environ['GWAPI_KEY'])
      
    ../_images/s__access-token-and-api-keyjpg.png

    x-workspace-id — это идентификатор workspace. Он индивидуален для каждого workspace, созданного пользователем. Порядок получения идентификатора приведен в разделе Параметры разработчика.

    Нажмите кнопку Code на правой панели диалога для генерации кода запроса.

    ../_images/s__generate-code-snippets.png

    Итоговый запрос может выглядеть следующим образом:

    curl --location --request POST 'https://api.aicloud.sbercloud.ru/public/v2/inference/v1/predict/{name}/{predict}/' \
    --header 'X-Api-Key: <your GWAPI key>' \
    --header 'authorization: <your access token>' \
    --header 'x-workspace-id: <your workspace id> \
    --header 'Content-Type: application/json' \
    --data-raw '{
    "instances": [
    {
    "text": "Hello world!"
    }
    ]
    }'
    

В ответ на запрос придет результат выполнения метода predict.

Отправка HTTP-запросов с использованием ключа

Благодаря этим ключам появляется возможность отправлять запросы к развернутому деплою, минуя этап авторизации, пользуясь только сгенерированными ранее ключами. Создание ключа осуществляется по кнопке Сгенерировать ключ. Создаваемый ключ является уникальным.

Для ключей можно создать описание, нажав на значок плюса в столбце Описание.

В качестве примера можно выполнить Базовый сценарий использования сервиса AutoML до этапа отправки HTTP-запросов к модели на сервисе Deployments.

Для отправки запроса к деплою по ключу:

  1. Нажмите Сгенерировать ключ.

  2. Задайте описание ключа (например, тестовый ключ для проверки функции).

  3. Нажмите Скопировать как cURL.

    В результате копирования получится запрос, имеющий следующий вид:

    curl 'https://mlspace.aicloud.sbercloud.ru/deployments/dgx2-inf/kfserving-1629374788/v1/models/kfserving-1629374788:predict' \
      -H 'content-type: application/json' \
      -H 'cookie: authservice_session=MTYzMjMRV2pZek4' \
      -H 'x-workspace-id: ee8cd85f-1886-4bbe-a2db-12ce69206a26' \
      --data-raw '{
    "instances":
    [
       {
         "records":
         {
            "Id" : ["0"],
        }
      }
     ]
    }'
    
  4. Скопируйте требуемый ключ.

  5. Замените значение cookie: authservice_session=MTYzMjMRV2pZek4 на x-api-key: 116708e901aa481a9c9d4200357ed31d, где 116708e901aa481a9c9d4200357ed31d — ключ, который был сгенерирован по кнопке Сгенерировать ключ.

    В результате запрос примет следующий вид:

    curl 'https://mlspace.aicloud.sbercloud.ru/deployments/dgx2-inf/kfserving-1629374788/v1/models/kfserving-1629374788:predict' \
      -H 'content-type: application/json' \
      -H 'x-api-key: 116708e901aa481a9c9d4200357ed31d' \
      -H 'x-workspace-id: ee8cd85f-1886-4bbe-a2db-12ce69206a26' \
      --data-raw '{
    "instances":
    [
       {
         "records":
         {
            "Id" : ["0"],
        }
      }
     ]
    }'
    
  6. Отправьте запрос.

После отправки запроса счетчик в поле Предсказания увеличится на 1.

Для удаления ключа:

  1. Выберите ключ, который необходимо удалить, отметив чекбокс.

  2. Нажмите на иконку Кнопка удаления в соответствующей строке списка.

  3. В появившемся диалоговом окне подтвердите действие нажатием на кнопку Подтвердить.