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

Использование в сценарии

Код для обращения к базе знаний автоматически добавляется в сценарий, если вы подключаете базу знаний с опцией Добавить код в сценарий. Код находится в основном файле — в стейте 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 бот:

  1. Если чата еще нет, создает новый чат в базе знаний с помощью $rag.chat.create.
  2. Получает ответ с помощью метода $rag.chat.processQuery. Метод вызывается асинхронно.
  3. Отправляет ответ с помощью $conversationApi.sendTextToClient.
Ограничения
  • Такой сценарий не поддерживается в телефонном канале, голосовых ассистентах и Webim (Custom Channel API).
  • Если база знаний не успеет сгенерировать ответ за 2 минуты, возникнет ошибка.

Вы можете адаптировать этот код для своего сценария. Смотрите примеры и описание методов $rag.

Способы обращения к базе знаний

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

  • Канал, в котором вы будете использовать бота. В некоторых каналах бот не может асинхронно отправлять ответ пользователю.
  • Время, которое ваша база знаний тратит на генерацию ответа. Например, если бот вызывает метод синхронно, он может ожидать ответ не более 25 секунд.
СпособКаналыВремя ответа базы знанийОписание
Синхронный ответ ботаВсеДо 25 секундБот отправляет запрос к базе знаний и ждет ответ. Бот не может выполнять другие реакции или отвечать на запросы пользователя, пока не получит ответ от базы знаний.
Асинхронный ответ ботаНе поддерживаются: До 2 минутБот отправляет запрос к базе знаний и ждет ответ. В это время бот может продолжать реагировать на запросы пользователя.
Создание запроса и проверка статусаВсеБез ограниченийБот отправляет запрос в базу знаний. Если пользователь просит, то бот проверяет статус запроса.

При любом способе вы можете использовать разные типы запросов: одиночные или в рамках чата.