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 '{
"query": "Как создать собственную базу знаний"
}' \
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, MDX, HTML. Если вы используете Confluence для хранения знаний, настройте интеграцию с Jay Knowledge Hub для автоматической загрузки данных.\n\n3. **Индексация базы знаний**: Запустите процесс индексации загруженных данных. Индексация может занять некоторое время, следите за прогрессом в интерфейсе продукта.\n\nПосле выполнения этих шагов ваша база знаний будет готова к использованию.",
"updatedAt": "2024-11-18T12:02:04.481433Z",
"comment": null
}
Чат
-
Создайте чат.
В запросе можно указать название чата и настройки обработки запросов в чате. По умолчанию используются настройки проекта.
Пример запроса:
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,
"candidateRadius": 0,
"reranker": null,
"fullTextSearch": null,
"rephraseUserQuery": null,
"segment": null
},
"llm": {
"model": "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"
} -
Отправьте запрос к базе знаний в асинхронном режиме.
Укажите идентификатор чата, созданного на предыдущем шаге, и пользовательский запрос. Дополнительно можно указать настройки обработки запроса. По умолчанию используются настройки обработки запросов в данном чате.
Пример запроса:
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
} -
Отслеживайте готовность ответа.
В запросе укажите идентификатор чата и идентификатор запроса, полученный в результате асинхронного вызова. Дополнительно можно указать параметр
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, вы можете использовать её для входа на платформу.\n\n2. **Создание проекта и загрузка данных**: Создайте ваш первый проект и загрузите данные в Jay Knowledge Hub. Поддерживаются файлы форматов PDF, DOCX, TXT, XML, JSON, YAML, MD, MDX, HTML. Если вы используете Confluence для хранения знаний, настройте интеграцию с Jay Knowledge Hub для автоматической загрузки данных.\n\n3. **Индексация базы знаний**: Запустите процесс индексации базы знаний на загруженных данных. Индексация может занять некоторое время, следите за прогрессом в интерфейсе продукта.\n\n4. **Тестирование и использование**: После индексации протестируйте базу знаний, чтобы убедиться в её корректной работе. Перейдите в раздел \"Диалог\" и задавайте вопросы, чтобы проверить, как база знаний отвечает на них.\n\nЭти шаги помогут вам создать и настроить собственную базу знаний в Jay Knowledge Hub.",
"updatedAt": "2024-11-18T13:59:26.181718Z",
"comment": null
}