В данной статье мы разберем, каким образом можно реализовать запоминание истории диалога при использовании в боте интеграции с ChatGPT. Это позволяет задавать уточняющие вопросы в диалоге с ботом, использующим ChatGPT.
Данная статья актуально только для чатов. Использование данной схемы в звонках невозможно, так как на генерацию ответа ChatGPT может уйти значительное количество времени.
Порядок действий
- Добавьте в сценарий блок Информация с приветствием (если необходимо), блок Вопрос и блок Условие, затем соедините их стрелками.
В стрелке из блока вопроса в блок условия установите галочку Сохранить ответ, и в поле Название переменной введите question.
В поле Тип выходных данных выберите тип Ветка по умолчанию. - Затем добавьте блок Арифметика с типом Произвольный тип.
Проведите стрелку из блока условия в блок арифметики, в параметрах стрелки выберите тип Условие "И", и создайте следующее условие:{gpt4Context} = gpt4Context
- В поле BPL-Выражение блока арифметики введите следующее выражение:В данном выражении задается стартовый промпт для ChatGPT - это может быть роль в диалоге и различная информация, которая может быть интересна клиенту.
$gpt4Context = ["Ты консультант компании Twin, которая занимается разработкой голосовых и чат роботов"]
После добавления выражения нажмите кнопку Преобразовать BPL в AST.Если в стартовом промте нет необходимости - данный блок арифметики можно не устанавливать.
- Далее добавьте Пустой блок, и проведите в него стрелку из блока условия.
В параметрах стрелки выберите тип По умолчанию. - Затем добавьте еще один блок Арифметика с типом Произвольный тип, и проведите в него стрелку из пустого блока.
В поле BPL-Выражение блока арифметики введите следующее выражение:Данное выражение отвечает за отправку запроса в ChatGPT 4, ответ сохраняется в переменную {answer}.$answer = gpt4.ask($question, 0.5, true)
0.5 в данном выражении это параметр temperature - чем он ниже, тем более точные, но менее разнообразные ответы будет возвращать ChatGPT.
Значения этого параметра могут варьироваться от 0 до 1.
После добавления выражения нажмите кнопку Преобразовать BPL в AST. - Добавьте блок Условие и блок Информация.
Данный блок информации будет возвращать ответ ChatGPT - в поле Информационное сообщение в параметрах этого блока введите {answer}.
В параметрах стрелки из блока условия в блок информации выберите тип По умолчанию. - Затем добавьте еще один блок Информация.
Текст данного блока будет выводиться в случае таймаута ответа ChatGPT - если ответ слишком большой, то время ожидания ответа может превысить максимально допустимое, и система вернет пустой ответ.
В поле Информационное сообщение параметров данного блока введите фразу по типу "К сожалению я не могу ответить на этот вопрос."
Проведите стрелку из блока условия в этот блок информации, в параметрах стрелки выберите тип Условие "И", и создайте следующее условие:
Данное условие проверяет наличие информации в переменной. - Добавьте пустой блок, и проведите к нему стрелки из двух блоков информации.
Затем проведите стрелку из пустого блока в первоначальный блок вопроса. - Для корректной работы сценария установите повышенное значение параметра Допустимое количество циклов в круглом блоке.
Максимальное количество циклов - 100.
Бот готов к работе!
Сценарий будет зациклен, и ChatGPT будет запоминать историю сообщений, что позволит задавать уточняющие вопросы и вести более живой диалог.