Бот с базой знаний Jay Knowledge Hub
В этом уроке показано, как обращаться к Jay Knowledge Hub из бота Aimylogic. Бот использует блок HTTP-запрос, чтобы получать информацию из базы знаний.
Jay Knowledge Hub — интеллектуальная вопросно-ответная система от компании Just AI. Она использует большие языковые модели (LLM) и технологию RAG. Эта система находит нужную информацию в наборе документов и генерирует ответы для пользователей. Подробнее о Jay Knowledge Hub смотрите на сайте и в документации.
Подготовка базы знаний
- Перейдите в Jay Knowledge Hub.
- Создайте проект.
- Добавьте источники и проиндексируйте базу знаний. Смотрите инструкции для подготовки базы знаний в документации Jay Knowledge Hub.
Сценарий Aimylogic
В сценарии бот:
- Создает чат в Jay Knowledge Hub.
- Получает вопрос от пользователя.
- Отправляет вопрос в чат базы знаний и получает ответ.
- Отправляет ответ пользователю.
База знаний по умолчанию учитывает всю историю в своем чате. Вам не нужно передавать историю в сценарии.
Создание чата
-
Создайте экран с названием
Создание чата. Добавьте на него блок HTTP-запрос. -
Укажите настройки блока HTTP-запрос, чтобы вызвать метод
POST /api/knowledge-hub/chatиз API Jay Knowledge Hub:- Запрос
- Response
- Body
- Headers
- Метод —
POST. - URL —
https://khub.just-ai.com/api/knowledge-hub/chat.
Укажите одну переменную:
- Имя переменной —
chatId. - Значение —
$httpResponse.id.
В переменной
$chatIdбудет храниться идентификатор чата Jay Knowledge Hub. По этому идентификатору бот сможет отправлять запросы в чат базы знаний.Укажите в поле пустой объект
{}.Добавьте два заголовка:
-
Заголовок
Content-Type. Значение —application/json. -
Заголовок
Authorization. Значение —Bearer <token>, где<token>— это API-ключ из проекта Jay Knowledge Hub.Пример значения:
Bearer A1bcdE.abcde1234.
В результате бот в начале диалога будет создавать чат в Jay Knowledge Hub.
Получение вопроса от пользователя
-
Создайте еще один экран. Название —
Получение вопроса.Добавьте на него блок text to $var. В блоке укажите:
- Сообщение —
Задай вопрос, я найду ответ. - Имя переменной —
question.
- Сообщение —
-
Соедините выход Завершен успешно из блока HTTP-запрос с экраном
Получение вопроса.
Если чат в базе знаний создан успешно, то бот попросит задать вопрос и сохранит текст вопроса в переменную $question.
Отправка запроса в базу знаний
-
Создайте новый экран с названием
Запрос в базу знаний. Добавьте на него блок HTTP-запрос. -
Укажите настройки блока HTTP-запрос, чтобы вызвать метод
POST /api/knowledge-hub/chat/{chatId}/queryиз API Jay Knowledge Hub:- Запрос
- Response
- Body
- Headers
-
Метод —
POST. -
URL —
https://khub.just-ai.com/api/knowledge-hub/chat/${chatId}/query.Здесь URL содержит переменную
$chatId. В переменной хранится идентификатор, который был получен при создании чата.
Укажите одну переменную:
- Имя переменной —
baseAnswer. - Значение —
$httpResponse.response.
В переменной
$baseAnswerбудет храниться ответ базы знаний на вопрос пользователя.В теле передайте запрос пользователя с помощью переменной
$question:{"query": "$question"}Добавьте два заголовка:
-
Заголовок
Content-Type. Значение —application/json. -
Заголовок
Authorization. Значение —Bearer <token>, где<token>— это API-ключ из проекта Jay Knowledge Hub.Пример значения:
Bearer A1bcdE.abcde1234.
-
Соедините выход Переход после ввода $question на экране
Получение вопросас экраномЗапрос в базу знаний.
Бот получает вопрос и отправляет его в базу знаний.
Отправка ответа пользователю
-
Создайте новый экран с названием
Отправка пользователю. Добавьте на экран блок Текст с репликойОтвет из базы знаний: $baseAnswer. Бот выведет ответ из базы знаний, который хранится в этой переменной. -
Добавьте на этот же экран блок Переход и соедините блок с экраном
Получение вопроса.
В результате бот отправит ответ пользователю. После этого бот опять попросит задать вопрос.
Для каждого следующего вопроса база знаний будет учитывать историю в ее чате. Она будет готовить ответы с учетом контекста.
Возможные ошибки
Ошибки при отправке HTTP-запросов
Ошибки могут возникнуть при отправке запросов в блоках HTTP-запрос. Например, если у токена Jay Knowledge Hub закончился срок действия.
Чтобы обработать такие ошибки, создайте новые экраны и соедините их с выходами Завершен с ошибкой у блоков HTTP-запрос. Так вы сможете сообщить пользователю, что не удалось отправить HTTP-запрос.
Ошибки при генерации ответа в базе знаний
Ошибки могут возникнуть, когда база знаний готовит ответ.
Например, если генерация в базе знаний завершилась с ошибкой, то база отправит ответ, но $httpResponse.status будет иметь значение FAILED.
Чтобы обрабатывать такие ошибки, используйте блок Условия.
Отправляйте ответ пользователю, только если $httpResponse.status имеет значение FINISHED:
$httpResponse.status === "FINISHED"
Таймаут в сценарии
Генерация ответа в базе знаний может занять длительное время.
Если база знаний генерирует ответ более 10 секунд, то бот отправит сообщение об ошибке.