Покажите нам свои рабочие процессы

Продолжаю тему из поста, который я опубликовал в исходной ветке о рабочих процессах. Я выяснил, как настроить систему так, чтобы она делала именно то, что мне нужно. Это, конечно, всего лишь тест, но вот что она делает:

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

Фаза A: Поиск и суммаризация

Находите посты, которым более 30 дней, и которые соответствуют одному из следующих критериев (или их комбинации):

-Популярные темы, в которых давно не было новых постов.
-Темы, которые получают много просмотров, но давно не получали ответов.
-Темы, в которых была активность в прошлом году, а затем она прекратилась.

Когда такая тема находится, запускается агент «AI Summary» в Discourse. ИИ-агент пишет краткое содержание. Он делает это, отправляя HTTP-запрос POST на конечную точку API для суммаризации. После того как краткое содержание готово, наличие этого рабочего процесса сохраняется в таблице данных.

(Это выполняется один раз в час, но потенциально может запускаться чаще).

Фаза B: Оценка краткого содержания для последующих действий

Другой запланированный рабочий процесс работает независимо по собственному расписанию. Он проверяет таблицу данных на наличие строк, для которых создано краткое содержание, но которые ещё не были оценены. Он выбирает одну тему из таблицы данных и затем получает 5–10 последних постов по этой теме.

Далее данные передаются в ИИ-агента, который занимается сортировкой (триаж). Он принимает решение. Стоит ли оживить эту тему? Если да, то как? Он решает, нужно ли просто поднять тему (бамп), или стоит сделать пост, который повторно вовлечёт пользователей в обсуждение темы: задать вопрос, задать уточняющий вопрос или вообще ничего не делать.

Он обновляет таблицу данных с принятым решением.

(Эта фаза должна выполняться примерно с той же частотой, что и Фаза A. Её также можно запускать из Фазы A или объединить с ней).

Фаза C: Повторное вовлечение в тему

Ещё один запланированный рабочий процесс работает по собственному расписанию, но не так часто. Его первый шаг — проверить, насколько активен форум был в последнее время. Он делает это, проверяя, сколько в среднем постов было создано в час за последние 3 часа. Затем он вычисляет среднюю загруженность форума за 3-часовые периоды в то же время суток за последние 2 месяца. Если сайт не так загружен, как обычно в это же время в этот же день, он выносит вердикт: «мы можем выполнить повторное вовлечение сейчас».

Затем он получает до 10 доступных возможностей для повторного вовлечения. Он отправляет их в ИИ-агента и просит выбрать из списка самого сильного кандидата для повторного вовлечения. ИИ принимает решение и возвращает topic_id. Классификатор в Фазе B выбрал один из трёх вариантов: поднять тему, сделать последующий пост, ничего не делать.

Рабочий процесс выполнит бамп, если только не назначен последующий пост. Если выбран последующий пост, он возьмет topic_id и получит последние посты из этой темы. Затем он передаст их ИИ-агенту, который определит, каким будет лучший ответ для повторного вовлечения в тему. У него есть ограничения (guardrails), чтобы обеспечить очень базовый ответ, который остаётся в рамках темы и не даёт рекомендаций или комментариев. В основном он просто просит о новостях, спрашивает, есть ли у первоначального автора обновления по поводу того, что произошло, и т. д. Он публикует ответ, а затем обновляет таблицу данных с датой завершения.

Надеюсь, я не просто дублирую какую-то скрытую функцию Discourse, о которой я не знал! Пришлось пощупать методом проб и ошибок, но у меня получилось.

3 лайка