Создание и управление ботами по API
В этой документации описаны методы API для создания поисковых (RAG) ботов и управления ими. Например, вы можете проверить статус ботов, посмотреть их список или добавить / удалить документы. Полный список доступных методов описан ниже.
Создание с заг рузкой файлов
curl -X PUT http://base_url:8080/indexapi/bot/bot_id \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F "files=@/path/to/test.pdf" \
-F "files=@/path/to/test2.pdf" \
-F "user_story=write_your_user_story_here" \
-F "sync=1" \
-F "time_to_eval=2025-04-02 14:49"
Параметры:
YOUR_TOKEN_HERE- токен для доступа по APIbot_id- имя индекса, по которому будет доступен созданный ботuser_story- краткое описание сценария использования (пользовательской истории)sync(необязательно) - флаг приоритета индексации (1 - высокий приоритет, индексация будет выполнена раньше запросов на создание бота без флага и раньше любых документов, которые добавляем в уже существующих ботов)time_to_eval(необязательно) - время, не раньше которого начнётся индексация (формат: YYYY-MM-DD HH:MM)
Параметры sync и time_to_eval могут быть указаны одновременно.
Внутри данного метода есть параметр user_story, это описание сценария использования ассистента. Пользовательская история напрямую влияет на качество индексации и последующих ответов ассистента.
Для написания пользовательской истории рекомендуется отвечать на вопросы: Кто будет использовать ассистента и зачем? Что важно при формировании ответа?
Примеры user_story:
Пример 1: "Я, как инженер проектного отдела корпорации, хочу выяснить как действовать в сложной рабочей ситуации. Описав рабочую ситуацию, я хочу получить инструкцию что делать и к кому обратиться. Для меня важно получить контакты людей. Важно получить объяснения что можно делать и что нельзя. Мне не нравятся общие ответы - я давно в компании и общие моменты знаю."
Пример 2: "Я как сотрудник организации, который работает с разными корпоративными IT системами, хочу выяснить нужную мне информацию по работе одной из систем, получить помощь по своему вопросу, узнать как действовать в конкретной ситуации. Задав вопрос я хочу увидеть короткий и исчерпывающий ответ, содержащий всю необходимую информацию. Искажение фактов для меня самая серьезная проблема. В зависимости от вопроса не полное изложение фактов тоже может быть проблемой."
Ответы:
202 Accepted– команда на создание бота принята в обработку. Ответ будет содержатьcommand_id.{
"command_id": "some-unique-command-id"
}
Для отслеживания статуса выполнения используйте эндпоинты статуса команд (см. раздел "Отслеживание статусов команд").
Создание с указанием файлов по URL
curl -X PUT http://base_url:8080/indexapi/bot/bot_id/urls \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F 'urls={"type": "direct_link", "url": "https://example.com/doc1.pdf"}' \
-F "user_story=write_your_user_story_here" \
-F "sync=1" \
-F "time_to_eval=2025-04-02 14:49"
Параметры аналогичны запросу с загрузкой файлов, кроме:
urls– JSON-объект с URL-адресами. Непосредственно сам документ должен открываться по указанному URL (например, https://example.com/doc1.pdf).
Ответы:
202 Accepted– команда на создание бота c указанием URL принята в обработку. Ответ будет содержатьcommand_id.{
"command_id": "some-unique-command-id"
}
Для отслеживания статуса выполнения используйте эндпоинты статуса команд.
ваш_url
Создание с указанием документов из Jive
curl -X PUT http://base_url:8080/indexapi/bot/bot_id/urls \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F 'urls={"type": "jive", "url": "https://ваш_url/docs/DOC-3085", "login": "your_login", "password": "your_password"}' \
-F "user_story=write_your_user_story_here"
Параметры аналогичны зап росу с загрузкой файлов по URL, однако в поле urls для документа указывается JSON, параметры которого описаны ниже. Обратите внимание, что для корректной работы curl параметр urls должен указываться в одинарных кавычках, а ключи и значения json - в двойных.
Параметры JSON для Jive:
type: "jive" - указывает тип источникаurl- ссылка на документ Jiveloginиpassword- учетные данные для доступа к Jive
Обрабатываются ссылки документации в формате {ссылка на jive}/docs/DOC-{id документа}. Оттуда выкачиваются документы и далее обрабатываются в стандартном процессе индексации файлов.
Для каждого документа необходимо заново указывать логин/пароль.
Есть возможность создать один индекс из разных пространств Jive.
Создание с указанием ссылки на пространство из Jive
curl -X PUT http://base_url:8080/indexapi/bot/bot_id/urls \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F 'urls={"type": "jive", "url": "https://ваш_url/community/knowledge/edu/docs", "login": "your_login", "password": "your_password"}' \
-F "user_story=write_your_user_story_here"
Примеры ссылок на пространство:
https://ваш_url/community/knowledge/edu/docs
https://ваш_url/groups/platforma
ссылки должны быть именно на корень пространства (без фильтров и /content)
Работаем с blogs groups projects spaces community вынимаем все файлы из этих типов пространств (файлы по прямой ссылке и файлы из вложений).
Параметры JSON для Jive:
type: "jive" - указывает тип источникаurl- ссылка на пространство Jiveloginиpassword- учетные данные для доступа к Jive
Создание с указанием документов из Confluence
curl -X PUT http://base_url:8080/indexapi/bot/bot_id/urls \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F 'urls={"type": "confluence", "url": "https://ваш_url/display/dotNet", "api_key": "YOUR_CONFLUENCE_API_KEY"}' \
-F "user_story=write_your_user_story_here"
Параметры аналогичны запросу с загрузкой файлов по URL, однако в поле urls для документа указывается JSON.
Параметры JSON для Confluence:
type: "confluence" - указывает тип источникаurl- ссылка на документ или пространство Confluenceapi_key- токен для доступа к Confluence (Personal Access Token)
Для Confluence поддерживается 2 вида ссылок:
- Текстовые (https://ваш_url/display/dotNet/Concurrency)
- С pageid (https://ваш_url/pages/viewpage.action?pageId=244450657)
Каждая ссылка может быть как простой страницей, содержание которой выкачивается, так и пространством/подпространством ссылок. Все страницы, зависимые вниз по иерархии от указанной страницы, выкачиваются в индекс вместе с ней. Страницы скачиваются в формате PDF, в верхней части документа прописывается путь в иерархии. Далее документы обрабатываются в стандартном процессе индексации файлов.
Для каждого документа необходимо заново указывать токен Confluence. Есть возможность создать один индекс из разных пространств Confluence.
Создание с указанием документов из Google Drive
curl -X PUT http://base_url:8080/indexapi/bot/bot_id/urls \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F 'urls={"type": "google_drive", "url": "https://drive.google.com/drive/folders/your_folder_id_or_file_id"}' \
-F "user_story=write_your_user_story_here"
Параметры аналогичны запросу с загрузкой файлов по URL, однако в поле urls для документа указывается JSON. Обратите внимание, что для корректной работы curl параметр urls должен указываться в одинарных кавычках, а ключи и значения json - в двойных.
Параметры JSON для Google Drive:
type: "google_drive" - указывает тип источникаurl- ссылка на файл или папку в Google Drive. Если указана папка, все файлы из нее (и подпапок рекурсивно) будут включены.
Настройка доступа к Google Drive:
Для работы с Google Drive необходим файл google_credentials.json с учетными данными сервисного аккаунта Google Cloud. Подробнее - в документации Google
При запуске сервиса индексации (indexer) этот файл должен быть доступен. По умолчанию, indexer ищет его по пути /app/google_credentials.json внутри контейнера. Этот путь можно переопределить с помощью переменной окружения GOOGLE_CREDENTIALS_PATH.
Пример google_credentials.json:
{
"type": "service_account",
"project_id": "example-project-12345",
"private_key_id": "your_private_key_id",
"private_key": "-----BEGIN PRIVATE KEY-----\nYOUR_PRIVATE_KEY\n-----END PRIVATE KEY-----\n",
"client_email": "your-service-account-email@example-project-12345.iam.gserviceaccount.com",
"client_id": "your_client_id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account-email%40example-project-12345.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}
Создание с указанием документов из Yandex Disk
curl -X PUT http://base_url:8080/indexapi/bot/bot_id/urls \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-F 'urls={"type": "yandex_disk", "url": "https://disk.yandex.ru/d/your_public_file_or_folder_link"}' \
-F "user_story=write_your_user_story_here"
Параметры аналогичны запросу с загрузкой файлов по URL, однако в поле urls для документа указывается JSON. Обратите внимание, что для корректной работы curl параметр urls должен указываться в одинарных кавычках, а ключи и значения json - в двойных.
Параметры JSON для Yandex Disk:
type: "yandex_disk" - указывает тип источникаurl- публичная ссылка на файл или папку на Яндекс.Диске. Если указана папка, все файлы из нее (и подпапок рекурсивно) будут включены.
Настройка доступа к Yandex Disk:
Для работы с Yandex Disk необходимо указать OAuth-токен через переменную окружения YANDEX_DISK_TOKEN.
Удаление бота
Удаление бота по его идентификатору.
curl -X DELETE http://base_url:8080/indexapi/bot/bot_id -H "Authorization: Bearer YOUR_TOKEN_HERE"
Описание
Позволяет инициировать удаление бота и его индексированных данных. Операция асинхронная.
Параметры
bot_id(string, path) – идентификатор бота.
Заголовки
Authorization: Bearer YOUR_TOKEN_HERE– токен доступа к API.
Ответы
202 Accepted– команда на удаление бота принята в обработку. Ответ буде т содержатьcommand_id.Для отслеживания статуса выполнения используйте эндпоинты статуса команд.{
"command_id": "some-unique-command-id"
}404 Not Found– бот не найден.409 Conflict– бот в процессе выполнения другой критической операции (например, удаление уже запущено), попробуйте позже.