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

Создание запроса и проверка статуса

В рамках чата

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("Я отменил запрос");

В этом сценарии:

  1. В стейте Answer:

    1. Если чата еще нет, бот создает новый чат с помощью $rag.chat.create.
    2. Бот создает запрос на генерацию ответа с помощью $rag.chat.processQueryAsync и сохраняет идентификатор запроса.
  2. Бот реагирует на запрос пользователя:

    • Если пользователь спрашивает о готовности ответа, бот получает статус запроса с помощью $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("Я отменил запрос");

В этом сценарии:

  1. В стейте Answer бот создает запрос на генерацию ответа с помощью $rag.query.generateAnswerAsync и сохраняет идентификатор запроса.

  2. Бот реагирует на запрос пользователя:

    • Если пользователь спрашивает о готовности ответа, бот получает статус запроса с помощью $rag.query.getAnswer. Бот отвечает пользователю в зависимости от статуса.
    • Если пользователь просит отменить запрос, то бот отменяет его с помощью $rag.query.cancelProcessing.