Интеграция событий приложения

Эта настройка даёт GenUI слушать локальные события приложения FlutterFlow и превращать их в контекст разговора.

Так модель узнаёт о том, чего пользователь не писал:

  • корзина изменилась;
  • процесс завершён;
  • сработало предупреждение;
  • пользователь перешёл на другой экран;
  • пришли данные с датчика.

GenUI сам подписывается на нужные локальные события и превращает их в скрытые сообщения контекста.

Два режима

  • Внедрение контекста (auto_respond: false) — событие обогащает будущие ответы, не перебивая пользователя. Сообщение попадает в очередь ожидания и отправляется перед следующим сообщением пользователя, чтобы модель учла его при ответе.

  • Немедленная реакция (auto_respond: true) — событие сразу уходит в разговор как InternalMessage, модель начинает отвечать. Ответом может быть текст, интерфейс, то и другое или ничего видимого — зависит от системного запроса и контекста.

Как собирается сообщение

Текст задаётся в поле Message Template — вручную или из переменной.

Данные события GenUI подставит сам. Например, шаблон «Your order status is:» плюс событие со значением pending дадут сообщение «Your order status is pending».

Очередь ожидания

При auto_respond: false сообщения событий копятся в памяти до следующего сообщения пользователя. Размер очереди — 50 сообщений; при переполнении отбрасываются самые старые. Перед отправкой запроса накопленные сообщения добавляются в историю разговора как InternalMessage — без дополнительных обращений к модели.

Что стоит учесть

Фоновое состояние — через внедрение контекста

Например:

  • содержимое корзины;
  • текущий экран;
  • результаты фоновой синхронизации.

Ответы становятся точнее, а пользователя ничто не отвлекает.

Срочное — через немедленную реакцию

Например:

  • превышение порогового значения;
  • завершение задачи;
  • сбой задания;
  • важное обновление.

Это те случаи, когда вмешаться в разговор оправданно.

Данные события — структурой

Если событие несёт данные, опишите их внятным типом. При сборке сообщения вызывается toMap(), и чем яснее структура, тем понятнее контекст для модели.

Не переполняйте очередь

Событие, срабатывающее часто, стоит группировать перед отправкой — очередь ограничена 50 сообщениями.

Примеры

Корзина без вмешательства

Локальное событие CartUpdated с auto_respond: false.

Каждое изменение корзины тихо пополняет контекст, и на вопрос «что у меня в корзине?» модель отвечает по актуальным данным.

Срочное предупреждение

Локальное событие TemperatureAlert с auto_respond: true.

Событие срабатывает — модель немедленно предупреждает пользователя и, если в каталоге есть подходящий компонент, рисует его.

перевод официальной документации FlutterFlow

обновлено

⌕ ESC