Создание запроса и проверка статуса
В рамках чата
state: Answer
intent!: /вопрос
scriptEs6:
// Если чата еще нет, бот создает новый чат в базе знаний
$client.chat = $client.chat || await $rag.chat.create("MyKnowledgeHub");
// Бот создает запрос на генерацию ответа
var ragRequest = await $rag.chat.processQueryAsync(
"MyKnowledgeHub", $client.chat.id, $request.query
);
$session.requestId = ragRequest.id;
$reactions.answer("Хорошо, ищу ответ");
state: Status
intent!: /какой статус
scriptEs6:
// Бот получает статус
var ragRequest = await $rag.chat.getQueryAnswer(
"MyKnowledgeHub", $client.chat.id, $session.requestId
);
// Бот отвечает пользователю в зависимости от статуса
if (ragRequest.status === "FINISHED") {
$reactions.answer(ragRequest.response);
} else if (ragRequest.status === "FAILED" || ragRequest.status === "CANCELED") {
$reactions.answer("Извините, что-то сломалось. Статус: " + ragRequest.status);
} else {
$reactions.answer("Пока еще ищу ответ");
}
state: Cancel
intent!: /отмена
scriptEs6:
// Бот отменяет запрос
var ragRequest = await $rag.chat.cancelRecordProcessing(
"MyKnowledgeHub", $client.chat.id, $session.requestId
);
$reactions.answer("Я отменил запрос");
В этом сценарии:
-
В стейте
Answer
:- Если чата еще нет, бот создает новый чат с помощью
$rag.chat.create
. - Бот создает запрос на генерацию ответа с помощью
$rag.chat.processQueryAsync
и сохраняет идентификатор запроса.
- Если чата еще нет, бот создает новый чат с помощью
-
Бот реагирует на запрос пользователя:
- Если пользователь спрашивает о готовности ответа, бот получает статус запроса с помощью
$rag.chat.getQueryAnswer
. Бот отвечает пользователю в зависимости от статуса. - Если пользователь просит отменить запрос, то бот отменяет его с помощью
$rag.chat.cancelRecordProcessing
.
- Если пользователь спрашивает о готовности ответа, бот получает статус запроса с помощью
Одиночные запросы
state: Answer
intent!: /вопрос
scriptEs6:
// Бот создает запрос на генерацию ответа
var ragRequest = await $rag.query.generateAnswerAsync("MyKnowledgeHub", $request.query);
$session.requestId = ragRequest.id;
$reactions.answer("Хорошо, ищу ответ");
state: Status
intent!: /какой статус
scriptEs6:
// Бот получает статус
var ragRequest = await $rag.query.getAnswer("MyKnowledgeHub", $session.requestId);
// Бот отвечает пользователю в зависимости от статуса
if (ragRequest.status === "FINISHED") {
$reactions.answer(ragRequest.response);
} else if (ragRequest.status === "FAILED" || ragRequest.status === "CANCELED") {
$reactions.answer("Извините, что-то сломалось. Статус: " + ragRequest.status);
} else {
$reactions.answer("Пока еще ищу ответ");
}
state: Cancel
intent!: /отмена
scriptEs6:
// Бот отменяет запрос
var ragRequest = await $rag.query.cancelProcessing("MyKnowledgeHub", $session.requestId);
$reactions.answer("Я отменил запрос");
В этом сценарии:
-
В стейте
Answer
бот создает запрос на генерацию ответа с помощью$rag.query.generateAnswerAsync
и сохраняет идентификатор запроса. -
Бот реагирует на запрос пользователя:
- Если пользователь спрашивает о готовности ответа, бот получает статус запроса с помощью
$rag.query.getAnswer
. Бот отвечает пользователю в зависимости от статуса. - Если пользователь просит отменить запрос, то бот отменяет его с помощью
$rag.query.cancelProcessing
.
- Если пользователь спрашивает о готовности ответа, бот получает статус запроса с помощью