Использование в сценарии
Код для обращения к базе знаний автоматически добавляется в сценарий, если вы подключаете базу знаний с опцией Добавить код в сценарий.
Код находится в основном файле — в стейте NoMatch
.
Вы также можете скопировать этот код или шаг J‑Graph в разделе База знаний → RAG.
Для обращения к базе знаний используется сервис $rag
.
Типы запросов
-
Вы можете создать чат в вашей базе знаний и отправлять в него запросы. База знаний будет учитывать историю чата при генерации ответов.
-
Одиночные запросы в базу знаний.
База знаний будет учитывать историю, только если вы сами передадите ее в запросе.
Код по умолчанию
state: NoMatch
event!: noMatch
scriptEs6:
const secretName = "Example";
// Если чата еще нет, бот создает новый чат в базе знаний
$client.ragChat_Example = $client.ragChat_Example || await $rag.chat.create(secretName);
// Бот получает ответ
$rag.chat.processQuery({secretName, chatId: $client.ragChat_Example.id, query: $request.query})
.then(chatResponse => {
// Отправка ответа пользователю
$conversationApi.sendTextToClient(chatResponse.response);
})
.catch(error => {
// Сообщение об ошибке
$conversationApi.sendTextToClient("Error: " + error);
});
# Если пользователь задаст вопрос во время ожидания, бот сможет сразу на него ответить
state: Waiting
q!: Почему ты молчишь
a: Я еще думаю…
В стейте NoMatch
бот:
- Если чата еще нет, создает новый чат в базе знаний с помощью
$rag.chat.create
. - Получает ответ с помощью метода
$rag.chat.processQuery
. Метод вызывается асинхронно. - Отправляет ответ с помощью
$conversationApi.sendTextToClient
.
- Такой сценарий не поддерживается в телефонном канале, голосовых ассистентах и Webim (Custom Channel API).
- Если база знаний не успеет сгенерировать ответ за 2 минуты, возникнет ошибка.
Вы можете адаптировать этот код для своего сценария. Смотрите примеры и описание методов $rag
.
Способы обращения к базе знаний
Выберите способ, как вы хотите обращаться к базе знаний. При выборе учитывайте следующие параметры:
- Канал, в котором вы будете использовать бота. В некоторых каналах бот не может асинхронно отправлять ответ пользователю.
- Время, которое ваша база знаний тратит на генерацию ответа. Например, если бот вызывает метод синхронно, он может ожидать ответ не более 25 секунд.
Способ | Каналы | Время ответа базы знаний | Описание |
---|---|---|---|
Синхронный ответ бота | Все | До 25 секунд | Бот отправляет запрос к базе знаний и ждет ответ. Бот не может выполнять другие реакции или отвечать на запросы пользователя, пока не получит ответ от базы знаний. |
Асинхронный ответ бота | Не поддерживаются:
| До 2 минут | Бот отправляет запрос к базе знаний и ждет ответ. В это время бот может продолжать реагировать на запросы пользователя. |
Создание запроса и проверка статуса | Все | Без ограничений | Бот отправляет запрос в базу знаний. Если пользователь просит, то бот проверяет статус запроса. |
При любом способе вы можете использовать разные типы запросов: одиночные или в рамках чата.