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

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

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

Вы также можете скопировать этот код или шаг J‑Graph в уже подключенной базе знаний.

Типы запросов

  • Запросы в рамках чатов.

    Вы можете создать чат в вашей базе знаний и отправлять в него запросы. База знаний будет учитывать историю чата при генерации ответов.

  • Одиночные запросы в базу знаний.

    База знаний будет учитывать историю, только если вы сами передадите ее в запросе.

Код по умолчанию

state: NoMatch
event!: noMatch
scriptEs6:
// Если чата еще нет, бот создает новый чат в базе знаний
$client.example = $client.example || await $rag.chat.create("example");
// Бот получает ответ
$rag.chat.processQuery("example", $client.example.id, $request.query)
.then(chatResponse => {
// Отправка ответа пользователю
$conversationApi.sendTextToClient(chatResponse.response);
})
.catch(error => {
// Сообщение об ошибке
$conversationApi.sendTextToClient("Error: " + error);
});

# Если пользователь задаст вопрос во время ожидания, бот сможет сразу на него ответить
state: Waiting
q!: Почему ты молчишь
a: Я еще думаю…

Здесь бот:

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

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

Примеры

Выберите пример в зависимости от:

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

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