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

API базы знаний

Jay Knowledge Hub предоставляет API для взаимодействия с базой знаний. API позволяет интегрировать базу знаний с сайтами и приложениями, чтобы ваши клиенты и сотрудники могли обращаться к ней с вопросами.

подсказка

Методы, параметры запросов, форматы ответов, возвращаемые ошибки подробно описаны в спецификации API.

Доступ к API

В интерфейсе Jay Knowledge Hub выберите проект и перейдите в раздел API-ключи. Нажмите Создать API-ключ. При необходимости вы можете ограничить срок действия ключа.

API-ключ предоставляет доступ к базе знаний проекта. Его нужно указывать в каждом запросе к API в HTTP-заголовке:

Authorization: Bearer <your_API_key>

Базовый URL

https://khub.just-ai.com/api/knowledge-hub

Список методов

API включает набор методов для взаимодействия с вашими знаниями:

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

Проект

МетодНазначениеДокументация
GET /infoПолучение информации о проекте.Подробнее

Запросы

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

МетодНазначениеДокументация
POST /retrieveПоиск чанков (retrieving).Подробнее
POST /queryГенерация ответа (синхронный вызов).Подробнее
POST /async/queryГенерация ответа (асинхронный вызов).Подробнее
GET /query/{queryId}Получение статуса генерации ответа.Подробнее
POST /query/{queryId}/cancelОтмена генерации ответа.Подробнее

Чаты и запросы в рамках чата

Создание чата, обработка запросов на поиск чанков и генерацию ответов в рамках чата. При этом учитывается история сообщений в чате.

МетодНазначениеДокументация
POST /chatСоздание чата.Подробнее
GET /chat/{chatId}Получение информации о чате.Подробнее
POST /chat/{chatId}/retrieveПоиск чанков (retrieving).Подробнее
POST /chat/{chatId}/queryГенерация ответа (синхронный вызов).Подробнее
POST /async/chat/{chatId}/queryГенерация ответа (асинхронный вызов).Подробнее
GET /chat/{chatId}/query/{queryId}Получение статуса генерации ответа.Подробнее
POST /chat/{chatId}/query/{queryId}/cancelОтмена генерации ответа.Подробнее

Варианты использования

Одиночный запрос

В запросе можно указать настройки обработки запроса. По умолчанию используются настройки проекта. Дополнительно можно передать в запросе историю сообщений.

Пример запроса:

curl \
--header 'Authorization: Bearer <your_API_key>' \
--header 'Content-Type: application/json' \
--data '{}' \
https://khub.just-ai.com/api/knowledge-hub/query
Пример ответа
{
"id": 20199,
"request": "Как создать собственную базу знаний",
"status": "FINISHED",
"createdAt": "2024-11-18T12:01:56.166692Z",
"response": "Для создания собственной базы знаний в Jay Knowledge Hub выполните следующие шаги:\n\n1. **Регистрация**: Зарегистрируйтесь в Jay Knowledge Hub. Если у вас уже есть учетная запись от других продуктов Just AI, вы можете использовать её для входа на платформу.\n\n2. **Создание проекта и загрузка данных**: Создайте ваш первый проект и загрузите данные в Jay Knowledge Hub. Поддерживаются файлы форматов PDF, DOCX, TXT, XML, JSON, YAML, MD, HTML. Если вы используете Confluence для хранения знаний, настройте интеграцию с Jay Knowledge Hub для автоматической загрузки данных.\n\n3. **Индексация базы знаний**: Запустите процесс индексации загруженных данных. Индексация может занять некоторое время, следите за прогрессом в интерфейсе продукта.\n\nПосле выполнения этих шагов ваша база знаний будет готова к использованию.",
"updatedAt": "2024-11-18T12:02:04.481433Z",
"comment": null
}

Чат

  1. Создайте чат.

    В запросе можно указать название чата и настройки обработки запросов в чате. По умолчанию используются настройки проекта.

    Пример запроса:

    curl \
    --header 'Authorization: Bearer <your_API_key>' \
    --header 'Content-Type: application/json' \
    --data '{}' \
    https://khub.just-ai.com/api/knowledge-hub/chat
    Пример ответа
    {
    "id": 15045,
    "settings": {
    "pipeline": "semantic",
    "search": {
    "similarityTopK": 5,
    "numCandidates": 50,
    "candidateRadius": 0,
    "rephraseUserQuery": null,
    "segment": null
    },
    "llm": {
    "model": "openai/gpt-4o",
    "contextWindow": 16000,
    "maxTokens": 1000,
    "temperature": 0.0,
    "topP": 1.0,
    "frequencyPenalty": 0.0,
    "presencePenalty": 0.0
    },
    "responseGeneration": {
    "prompt": "You are a Russian-speaking question answering system. You help users look for information in the Documentation.\nTry to answer their Question or find documents related to the Question according to the Documentation provided below.\nEach document starts from New document.\nFollow the rules:\n- (1) Firstly, find relevant documents related to the Question. It is possible that there are no related documents in the Documentation.\n- (2) Answer strictly according to the documents. Don't make things up.\n- (3) Question can be formulated as either an ordinary question with a question mark or words (когда работает банк?) or a search query (режим работы банка). You must deal with all types.\n- (4) If there is more than one answer to the Question, list all possible solutions separately.\n- (5) If there is not a direct Answer, but just information on the related topic, answer with it.\n- (6) If you can't find relevant documents, ask a user to reformulate the Question in your answer.\n- (7) Answer the Question in Russian.\n- (8) If you see a URL to an image in Documentation, use it in your response.\n\nYour task:\n______\n\nDOCUMENTATION: <{context_str}>;\nQUESTION: {query_str};\nANSWER:"
    }
    },
    "name": "2024-11-18-13-47-06"
    }
  2. Отправьте запрос к базе знаний в асинхронном режиме.

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

    Пример запроса:

    curl \
    --header 'Authorization: Bearer <your_API_key>' \
    --header 'Content-Type: application/json' \
    --data '{
    "query": "Как создать собственную базу знаний",
    }' \
    https://khub.just-ai.com/api/knowledge-hub/async/chat/15045/query
    Пример ответа
    {
    "id": 17748,
    "chatId": 15045,
    "request": "Как создать собственную базу знаний",
    "status": "READY_TO_PROCESS",
    "createdAt": "2024-11-18T13:59:17.642584567Z",
    "response": null,
    "updatedAt": "2024-11-18T13:59:17.642585762Z",
    "comment": null
    }
  3. Отслеживайте готовность ответа.

    В запросе укажите идентификатор чата и идентификатор запроса, полученный в результате асинхронного вызова. Дополнительно можно указать параметр waitTimeSeconds, чтобы использовать long polling. Когда генерация завершена, возвращается статус FINISHED.

    Пример запроса:

    curl \
    --header 'Authorization: Bearer <your_API_key>' \
    https://khub.just-ai.com/api/knowledge-hub/chat/15045/query/17748
    Пример ответа
    {
    "id": 17748,
    "chatId": 15045,
    "request": "Как создать собственную базу знаний",
    "status": "FINISHED",
    "createdAt": "2024-11-18T13:59:17.642585Z",
    "response": "В документации нет прямого ответа на вопрос о создании собственной базы знаний. Однако, есть информация о процессе работы с Jay Knowledge Hub, который включает следующие шаги:\n\n1. Регистрация в Jay Knowledge Hub. Если вы уже работали с другими продуктами Just AI, вы можете использовать свою прежнюю учетную запись для входа на платформу.\n2. Создание проекта и загрузка данных. Используйте файлы форматов: PDF, DOCX, TXT, XML, JSON, YAML, MD, HTML. Также можно настроить интеграцию с Confluence для автоматической загрузки данных.\n3. Индексация загруженных данных. Процесс индексации может занять некоторое время, и за прогрессом можно следить в интерфейсе продукта.\n4. Тестирование базы знаний в интерфейсе, чтобы убедиться, что она правильно работает и корректно отвечает на возможные вопросы пользователей.\n\nЕсли вам нужна более конкретная информация, пожалуйста, уточните ваш запрос.",
    "updatedAt": "2024-11-18T13:59:26.181718Z",
    "comment": null
    }