Блок Генерация ответа предназначен для генерации ответа пользователю чат-бота через GigaChat.
Блок выполняет запрос в GigaChat. По параметрам, заданным в настройках блока, выполняется генерация ответа в GigaChat. После получения ответа выполняется переход по сценарию.
В настоящее время возможна генерация ответа только для проектов на русском языке.
Как подключить блок в сценарий
Для подключения блока в сценарий:
-
Откройте проект сценария Graph для вашего чат-бота.
-
Выберите в сценарии шаг, на котором вы хотите добавить обращение в GigaChat.
-
Добавьте блок Генерация ответа.
-
Заполните параметры блока.
-
Сохраните и соберите сценарий.
С рекомендациями по созданию промптов вы можете ознакомиться в разделе Промпт-инжинириг.
Параметры блока
Параметр | Описание | Обязательность | Пример |
---|---|---|---|
Системный промпт | Текстовое поле, многострочное. Общий лимит токенов для полей Системный промпт и Запрос — не более 20 000 токенов. Позволяет задать промпт для настройки контекста обработки основного промпта. Поддерживает использование переменных сценария. Токен может быть символом, несколькими символами, фрагментом слова или словом целиком. В среднем в одном токене 3—4 символа, включая пробелы, знаки препинания и специальные символы. Все, что модель получает в запросе, сначала преобразуется в токены. Количество символов в токене зависит от модели | Нет | «Отвечай в стиле Винни Пуха» |
Запрос | Текстовое поле, многострочное. Общий лимит токенов для полей Системный промпт и Запрос — не более 20 000 токенов. Текст вопроса к GigaChat. Поддерживает использование переменных сценария | Да | $queryText содержит вопрос пользователя из чата с ботом, например: «Где купить гречишный мед?». В блоке можно вручную заполнить переменную с историей, указав ее в нужном месте текста промпта |
Ответ от GigaChat | Текстовое поле для указания названия переменной, в которую должен сохраниться ответ от GigaChat. Не более 30 символов | Да | |
Выводить результат пользователю | Отметка об отправке сообщения пользовалтелю | Да | true : отправлять сообщение клиенту бота при выполнении блока, в случае успешного выполнения и получения ответа от GigaChat false : не отправлять сообщение. Результат будет сохранен в указанную переменную |
Учитывать контекст диалога | Отметка о включении отправки истории переписки | Да | true : история переписки отправляется false : история переписки не добавляется в запрос в GigaChat. Отправка истории отключена вручную |
Выходы из блока в сценарии
- Успешно - успешное выполнение запроса в GigaChat и получение ответа
- Ошибка - при выполнении запроса в GigaChat возникла ошибка
- Сработал цензор - при срабатывании цензора в ходе обработки, когда GigaChat не отвечает на вопрос. Такой переход отображается только в случае, если в настройках блока включена настройка Включить цензор
Обратите внимание: клиенту не будут показаны дополнительные сообщения или уведомления пока не будет получен ответ от GigaChat.
Обработка ошибок
В рамках выполнения блока может возникнуть ошибки по различным причинам. При возникновении ошибки выход из блока произойдет по переходу Ошибка. Для подробной обработки ошибки необходимо сохранять ответ со статусом ошибки в системные переменные:
Название | Описание | Комментарий |
---|---|---|
$gigaChatResponseStatus | Код ошибки, возникшей при выполнении запроса | Пример значения: 408 (Таймаут при выполнении запроса) В сценарии можно использовать в блоке Условия, добавив кастомное условие, например, $gigaChatResponseStatus==408 и сделать переход из блока для случаев таймаута |
$gigaChatResponseError | Текст ошибки, возникшей при выполнении запр оса | Пример значения: Read timed out |
Список возвращаемых статусов ошибок
Кейс | Код ошибки | Описание ошибки |
---|---|---|
Таймаут выполнения запроса (выполнение запроса не выполнено в указанный таймаут) | 408 | Read timed out |
Превышены лимиты по размеру полей Запрос или Системный промпт | 413 | Content is too large |
Ошибка при выполнении запроса в GigaChat | 500 | Request failed |
Достигнуто максимальное количество обращений на одного клиента | 503.1 | The limit of requests for the user per day |
Достигнуто максимальное количество обращений для тестового виджета | 503.2 | The limit of requests for test per project |
Запросы ограничены для текущей интеграции | 503.3 | Restricted for the channelType |
При совершении более 50 запросов в течение 10 минут будет произведена блокировка на 10 минут, по истечению которой вы сможете продолжить работу. Максимальное количество обращений от одного клиента - 500.
Ниже вы можете найти примеры использования блока с реальными промптами. Вы можете классифицировать сообщение пользователя по нескольким категориям.
Пример классификации сообщений
-
Паспортный стол Любое обращение, в котором упоминается паспортный стол или регистрация человека по месту его нахождения. В обращении используются ключевые слова:
паспортный стол
,регистрация граждан по месту жительства
,регистрация граждан по месту пребывания
,снятие с регистрационного учета через портал Госуслуги
,снятие с регистрационного учета через МФЦ
. -
Получить ключ Любое обращение, в котором спрашивают про ключ или ключи. В обращении использую тся ключевые слова:
получить ключи от домофона
,получить метку
,получить ключи от подъезда
. -
Регистрация в мобильном приложении Любое обращение, в котором спрашивают про регистрацию в мобильном приложении. В обращении используются ключевые слова:
зарегистрироваться в мобильном приложении
,регистрация в мобильном приложении
. -
Добавление объекта в мобильном приложении Любое обращение, содержащее запросы:
добавить объект в мобильном приложении
,добавить в мобильном приложении
. -
Контакты Любое обращение, содержащее запросы:
номер телефона
,контакты
,номер телефона управляющей компании
,телефон единого контакт-центра
. -
Показания счетчика Любое обращение, содержащее запросы:
как передать показания счетчика
,кому передать показания
,показания приборов у четов
. -
Отключение Любое обращение, в котором клиент спрашивает про отключение пожарной сигнализации или иного ресурса в квартире при выполнении любых работ.
Пример промпта
В ответе верни только название категории к которой относит ся сообщение пользователя.
Если обращение не соответствует никакой категории, ответь "Нет категории".
Если ты не понял вопрос, ответь "Я не понял".
Если пользователь задал вопрос, не отвечай на него, а верни категорию, к которой этот вопрос относится.