API

Для интеграции с внешними системами (при необходимости), Sherpa AI Server предлагает набор инструментов для обмена данными через API.

Раздел "API" представляет собой справочник по доступным API-методам в формате Swagger. В данном разделе представлены следующие вкладки:

1. Ключ (API Key)

В этом разделе пользователь может увидеть свой уникальный ключ доступа к API в поле Ключ. Также при изменении данного поля необходимо подтвердить действие нажатием одной из кнопок:

(Assignment) - Назначить новый ключ;

(Refresh) - Обновить текущий ключ.

Ниже расположено информационное поле "Authorization", которое используется для предоставления токена доступа, подтверждающего, что Пользователь имеет право на выполнение запрашиваемого действия.

Пример:

“Bearer” — тип токена,

“Y2Y5M2U3OGUtMDk1ZC00MGNjLTkwNWUtZTYyNjUwM_______” — сам токен, который сервер будет использовать для идентификации Пользователя.

Запросы к API осуществляются с обязательной передачей API Key, который хранится в настройках Учетной записи. Подробные примеры запросов приведены в разделе по каждому блоку отдельно.

Коды ответов:

2. Хранилище

Позволяет управлять Хранилищем. Пользователь может создавать новые папки и файлы, получать информацию о папках и файлах, обновлять информацию о папках и файлах, а также удалять папки и файлы.

На данной странице располагаются вкладки с методами:

По клику на иконку справа от нужного метода, раскрывается соответствующая страница:

1. Создание новой папки

  • Эндпоинт: /api/folders/create

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • Name: Название новой папки;

    • Description: Описание для новой папки.

  • Пример:

Запрос

Ответ

```json

{

"Name": "New Folder 1",

}

```

[

"guid": "16f94238-ede9-435b-a001-1489b32e7dc2",

]

2. Получение информации о папке по GUID

  • Эндпоинт: /api/folders/read/{guid}

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • Guid (обязательно): Guid новой папки.

  • Пример:

Запрос

Ответ

/api/folders/read/4dd6abf4-daa3-45d0-9347-6780c2b46b0c

```json

{

"id": 1,

"guid": "4dd6abf4-daa3-45d0-9347-6780c2b46b0c",

"name": "Test Folder 1",

"description": "My new test Folder",

"created": "2023-01-29 10:29:25",

"updated": "2023-01-29 10:44:09",

"is_deleted": 0,

"account_id": 1,

}

```

3. Получение списка папок, связанных с GUID

  • Эндпоинт: /api/folders/list

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры: нет;

  • Пример:

Запрос

Ответ

/api/folders/list

```json

[

{

"id": 1,

"guid": "4dd6abf4-daa3-45d0-9347-6780c2b46b0c",

"name": "Test Folder 1",

"description": "My new test Folder",

"created": "2023-01-29 10:29:25",

"updated": "2023-01-29 10:44:09",

"is_deleted": 0,

"account_id": 1,

},

{

"id": 2,

"guid": "4dd6abf4-daa3-45d0-9347-6780c2b46a3c",

"name": "Test Folder 2",

"description": "My another new test Folder",

"created": "2023-10-05 10:59:41",

"updated": "2023-10-05 10:59:41",

"is_deleted": 0,

"account_id": 1,

}

]

```

4. Обновление информации о папке по GUID

  • Эндпоинт: /api/folders/update

  • Метод: PUT;

  • Авторизация: обязательна;

  • Параметры:

    • Guid (обязательно): Guid папки;

    • Name: Название нового папки;

    • Description: Описание для новой папки.

  • Пример:

Запрос

Ответ

```json

{

"Guid": "554ab883-1f82-48e1-bb12-5049002e7d70",

"Name": "New Folder Name",

}

```

[]

5. Создание нового файла

  • Эндпоинт: /api/files/create

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • name (обязательно): Имя файла;

    • name_new (обязательно): Новое имя файла;

    • description (обязательно): Описание файла;

    • folder_id (обязательно): GUID или путь к папке, в которую будет добавлен файл;

    • Metadata (обязательно): Метаданные файла;

    • file (обязательно): Файл в бинарном формате, либо в кодировках Base16 / Base32.

  • Пример:

Запрос

Ответ

```json

{

"name": "example.txt",

"name_new": "example_new.txt",

"description": "Описание файла",

"folder_id": "123e4567-e89b-12d3-a456-426614174000",

"Metadata": {},

"file": "file_content",

}

```

[]

6. Получение информации о файле по GUID

  • Эндпоинт: /api/files/read/{guid}

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • Name (обязательно): Название нового файла.

  • Пример:

Запрос

Ответ

```json

{

"Name": "example.txt",

}

```

[]

7. Обновление информации о файле по GUID

  • Эндпоинт: /api/files/update

  • Метод: PUT;

  • Авторизация: обязательна;

  • Параметры:

    • Name (обязательно): Название нового файла;

    • folder_guid: ID папки, в которую необходимо добавить файл;

    • file: Файл в бинарном формате, либо в кодировках Base16 / Base32;

  • Пример:

Запрос

Ответ

```json

{

"Name": "example.txt",

}

```

[]

8. Удаление файла/папки

  • Эндпоинт: /api/files/delete

  • Метод: DELETE;

  • Авторизация: обязательна;

  • Параметры:

    • file_folder_guid (обязательно): GUID или путь к файлу или папке;

    • type_processing (обязательно): Тип обработки. Возможные значения: 0 = Auto, 1 = File, 2 = Directory.

  • Пример:

Запрос

Ответ

```json

{

"file_folder_guid": "123e4567-e89b-12d3-a456-426614174000",

"type_processing": 0,

}

```

[]

9. Загрузка файла

  • Эндпоинт: /api/files/uploadfile

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • file (обязательно): Файл для загрузки;

    • folder_id: ID папки, в которую необходимо добавить файл;

    • metadata: Метаданные файла.

  • Пример:

Запрос

Ответ

```json

[

"file": "@/path/to/Document.pdf",

"folder_id=4b5f2f2e-1c8a-4d3c-9b2a-b0f7d9a0a123",

"metadata":

{

"source": "kb",

"tags": ["policy","2025"]

} ]

```

```json

{

"id": 123,

"object": "file",

"purpose": "assistants",

"filename": "Document.pdf",

"bytes": 1048576,

"created_at": 1726742400,

"status": "processed",

"status_details": "Indexed",

"tools_type": "retrieval"

} ```

10. Скачивание файла по GUID

  • Эндпоинт: /api/files/download/{guid}

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • filename (обязательно): Имя файла.

  • Пример:

Запрос

Ответ

```json

{ "filename": "example.txt", } ```

```json

{

"result": "0"

}

```

3. Лог

Позволяет управлять Логами. Пользователь может создавать новый Лог, получить информацию о Логе, обновить информацию о Логе, а также удалить Лог.

В верхней части страницы располагается таблица со всеми уровнями Логирования:

В нижней части располагаются вкладки с методами:

По клику на иконку справа от нужного метода, раскрывается соответствующая страница:

1. Создание Лога

  • Эндпоинт: /api/log/create

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • RobotGUID: GUID Робота;

    • ProcessVersionGUID: GUID версии Процесса;

    • JobGUID: GUID Работы;

    • Level: уровень Логирования;

Message (обязательно): текст Лога.

  • Пример:

Запрос

Ответ

```json

{

"RobotGUID": "16f94238-ede9-435b-a001-1489b32e7dc2",

"ProcessVersionGUID": "c39713ea-d8b9-4669-976e-5ff39677dc64",

"JobGUID": "70ce211b-3c9a-48f6-8e71-11088b41b825",

"Level": 1,

"Message": "no message",

}

```

[]

2. Получение информации о Логе по GUID

  • Эндпоинт: /api/log/read/{guid}

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • Guid (обязательно): Guid Лога.

  • Пример:

Запрос

Ответ

/api/log/read/c39713ea-d8b9-4669-976e-5ff39677dc64

```json

{

"id": "1",

"guid": "16f94238-ede9-435b-a001-1489b32e7dc2",

"robot_id": "16",

"process_version_id": "39",

"job_id": "70",

"Level": 1,

"Message": "no message",

"created_at": "2023-09-17 15:39:06",

"updated_at": "2023-09-17 16:39:06",

}

```

3. Получение списка файлов, связанных с GUID

  • Эндпоинт: /api/log/list

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры: нет.

  • Пример:

Запрос

Ответ

/api/log/list

[]

4. Удаление Логов, принадлежащих текущей учетной записи и созданных до выбранного времени

  • Эндпоинт: /api/log/purge

  • Метод: DELETE;

  • Авторизация: обязательна;

  • Параметры:

    • Time (обязательно): временная метка в формате Unix (Unix timestamp);

  • Пример:

Запрос

Ответ

```json

{

"Time": "1590481487",

}

```

[]

4. Учетные записи

Позволяет управлять Учетными записями. Пользователь может создавать новую Учетную запись, получить информацию об Учетной записи, обновить информацию об Учетной записи, а также удалить Учетную запись.

На данной странице располагаются вкладки с методами:

По клику на иконку справа от нужного метода, раскрывается соответствующая страница:

  • Эндпоинт: /api/account/create

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • Login (обязательно) — Логин для новой Учетной записи;

    • Password (обязательно) — Пароль для новой Учетной записи;

    • FirstName — Имя для новой Учетной записи;

    • LastName — Фамилия для новой Учетной записи;

    • Email — E-mail для новой Учетной записи;

    • Phone — Телефон для новой Учетной записи;

    • Company — Компания для новой Учетной записи;

    • Department — Отдел для новой Учетной записи.

  • Пример:

Запрос

Ответ

```json

{

"Login": "New Test Account",

"Password": "newPassword123",

}

```

["guid": "c39713ea-d8b9-4669-976e-5ff39677dc64"]

2. Получение информации об Учетной записи по GUID

  • Эндпоинт: /api/account/read/{guid}

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • GUID (обязательно): GUID Учетной записи.

  • Пример:

Запрос

Ответ

/api/account/read/c39713ea-d8b9-4669-976e-5ff39677dc64

```json

{

"id": "5",

"guid": "554ab883-1f82-48e1-bb12-5049002e7d70",

"login": "new Account",

"password": "123455678",

"first name": "Vasya",

"last name": "Ivanov",

}

```

3. Обновление информации об Учетной записи по GUID

  • Эндпоинт: /api/account/update

  • Метод: PUT;

  • Авторизация: обязательна;

  • Параметры:

    • Guid (обязательно) — GUID Учетной записи для обновления;

    • Login — Логин Учетной записи для обновления;

    • Password — Пароль Учетной записи для обновления;

    • FirstName — Имя в Аккаунте для обновления;

    • LastName — Фамилия Учетной записи для обновления;

    • Email — E-mail Учетной записи для обновления;

    • Phone — Телефон в Аккаунте для обновления;

    • Company — Компания Учетной записи для обновления;

    • Department — Отдел Учетной записи для обновления.

  • Пример:

Запрос

Ответ

```json

{

"Guid": "554ab883-1f82-48e1-bb12-5049002e7d70",

"Login": "Test Account",

}

```

[]

4. Удаление Учетной записи по GUID

  • Эндпоинт: /api/account/delete/{guid}

  • Метод: DELETE;

  • Авторизация: обязательна;

  • Параметры:

    • Guid (обязательно): Guid Учетной записи;

  • Пример:

Запрос

Ответ

/api/account/delete/554ab883-1f82-48e1-bb12-5049002e7d70

[]

5. ИИ Сервер

Позволяет управлять нейросетями. Пользователь может принять JSON-объект и вернуть ответ от нейросети, получить информацию о текущей используемой модели, получить ответ от Ассистента или отправить сообщение в чат.

По клику на иконку справа от нужного метода, раскрывается соответствующая страница:

1. Добавление текстовых чанков к существующему файлу

  • Эндпоинт: /api/files/addchunk

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • text_chunk (обязательно): Текстовый чанк;

    • guid_file (обязательно): GUID файла или путь к файлу;

    • metadata (обязательно): Метаданные чанка.

  • Пример:

Запрос

Ответ

```json

{

"text_chunk": "Текстовый чанк",

"guid_file": "123e4567-e89b-12d3-a456-426614174000",

"metadata": {},

}

```

[]

2. Нахождение эмбеддингов по заданному тексту

  • Эндпоинт: /api/files/search

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • text_for_search (обязательно): Текст для поиска;

    • n_top (обязательно): Количество топовых результатов;

    • files_ids (обязательно): JSON строка со списком GUID или путей к файлам;

    • folder_ids (обязательно): JSON строка со списком GUID или путей к папкам;

    • enable_subfolders (обязательно): Включение подпапок. Возможные значения: 0 = False, 1 = True.

  • Пример:

Запрос

Ответ

```json

{

"text_for_search": "пример текста",

"n_top": 5,

"files_ids": "[\"123e4567-e89b-12d3-a456-426614174000\", \"123e4567-e89b-12d3-a456-426614174001\"]",

"folder_ids": "[\"123e4567-e89b-12d3-a456-426614174002\", \"123e4567-e89b-12d3-a456-426614174003\"]",

"enable_subfolders": 1

}

```

[]

3. Получение ответа от нейросети

  • Эндпоинт: /api/threads/message

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • messages (обязательно): Массив объектов, каждый из которых представляет сообщение;

    • content: Текст сообщения;

    • role: Роль отправителя сообщения. Возможные значения: system, user;

    • name: Имя отправителя сообщения;

    • temperature: Число с плавающей точкой, определяющее степень случайности в ответах нейросети. Значение по умолчанию: 0.7;

    • model (обязательно): Строка, указывающая путь к модели, например, /model-store/meta-llama/Meta-Llama-3-8B-Instruct;

    • assistant_id: Идентификатор ассистента;

    • thread_id: Идентификатор чата;

    • info: Системная информация.

  • Пример:

Запрос

Ответ

```json

{

"messages": [

{

"content": "Привет, как дела?",

"role": "user",

"name": "Иван"

},

{

"content": "Все хорошо, спасибо!",

"role": "system",

"name": "Система"

}

]

"model": "/model-store/meta-llama/Meta-Llama-3-8B-Instruct",

"temperature": 0.7,

"assistant_id": "123e4567-e89b-12d3-a456-426614174000",

"thread_id": 200

}

```

[]

4. Получение информации о текущей используемой модели

  • Эндпоинт: /api/threads/models

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры: нет.

  • Пример:

Запрос

Ответ

/api/threads/models

```json

{

"object": "list",

"data": [

{

"id": "/model-store/meta-llama/Meta-Llama-3-8B-Instruct",

"object": "model",

"created": 1735113788,

"owned_by": "vllm",

"root": "/model-store/meta-llama/Meta-Llama-3-8B-Instruct",

"parent": null,

"permission": [

{

"id": "modelperm-d7ddf889e9aa423b9949d1cdc551ff21",

"object": "model_permission",

"created": 1735113788,

"allow_create_engine": false,

"allow_sampling": true,

"allow_logprobs": true,

"allow_search_indices": false,

"allow_view": true,

"allow_fine_tuning": false,

"organization": "*",

"group": null,

"is_blocking": false

}

]

}

]

}

```

5. Получение сообщения от Ассистента

  • Эндпоинт: /api/threads/getUpdates

  • Метод: GET;

  • Авторизация: обязательна;

  • Параметры:

    • assistant_id (обязательно): Идентификатор ассистента;

    • offset: Идентификатор сообщения, с которого необходимо получить список сообщений;

    • thread_id (обязательно): Идентификатор чата.

  • Пример:

Запрос

Ответ

/api/threads/getUpdates?assistant_id=123e4567-e89b-12d3-a456-426614174000&offset=0&thread_id=221

```json

{

"error": "Licensing error: license is absent, expired, not activated or limits are reached"

}

или

{

"result": 1,

"data": [

{

"id": "1195",

"content": "{\"type\":\"text\",\"text\":{\"value\":\"привет\",\"annotations\":[]}}",

"account_id": "1",

"is_deleted": "0",

"role": "user",

"thread_id": "221",

"created": "2024-09-11 09:08:48",

"updated": "2024-09-11 09:08:48",

"assistant_id":"123e4567-e89b-12d3-a456-426614174000",

"info": "{\"TestPrm\":\"TestData\"}",

"folder_id": "[]",

"file_id": "[]",

"update_id": null

},

{

"id": "1196",

"thread_id": "221",

"created": "2024-09-11 09:08:49",

"updated": "2024-09-11 09:08:49",

"content": "{\"type\":\"text\",\"text\":{\"value\":\"Привет! Рад видеть вас! Как я могу помочь вам сегодня?\",\"annotations\":[]}}",

"role": "assistant",

"account_id": "1",

"is_deleted": "0",

"folder_id": null,

"file_id": null,

"update_id": null

}

]

}

```

6. Отправка сообщения в чат

  • Эндпоинт: /api/threads/chat

  • Метод: POST;

  • Авторизация: обязательна;

  • Параметры:

    • thread_id (обязательно): Идентификатор чата;

    • role (обязательно): Роль отправителя сообщения (например, assistant);

    • content (обязательно): Текст сообщения;

    • assistant_id: Идентификатор ассистента;

    • model_id: Идентификатор группы моделей;

    • temperature: Число с плавающей точкой, определяющее степень случайности в ответах нейросети. Значение по умолчанию: 0.7;

    • prompt: Начальный контекст или инструкция для модели;

    • title: Заголовок чата;

    • file_id: Список ID файлов, прикрепляемых к сообщению (JSON-массив);

    • folder_id: Список ID папок (или объектов с id), прикрепляемых к сообщению (JSON-массив),

    • info: Системная информация.

  • Пример:

Запрос

Ответ

```json

{ "thread_id": 200, "role": "assistant", "content": "Привет! Как я могу помочь вам сегодня?", "file_id": [101, 102], "folder_id": [201, 202],

"info": "" } ```

```json

[

"result": 1, "data": { "message_id": 1234,

"thread_id": 200, "file_id": [101, 102], "folder_id": [201, 202],

"info": "" }

]

```

Last updated