Discourse AI — AI-триаж

AI-триаж предназначен для улучшения управления и модерации сообщений на форуме за счет автоматизации процесса классификации постов.

Обратите внимание, что для работы этой функции требуются плагины discourse-automation и discourse-ai.

Сценарии использования

  1. Автоматическая категоризация постов: AI-триаж может автоматически категоризировать темы на основе их содержания. Это особенно полезно для крупных форумов, где ручная категоризация может занимать много времени. Вы можете применять правила к подмножеству тем (только к первым темам или темам, опубликованным в определённых категориях).

  2. Присвоение тегов постам: AI-триаж может присваивать указанные теги постам. Эта функция помогает лучше организовать посты и делает поиск и извлечение тем более эффективным.

  3. Автоматические ответы: AI-триаж может генерировать ответы на посты, используя заранее определённые шаблоны. Это полезно для ответов на часто задаваемые вопросы или распространённые запросы, перемещения спама в категорию «мусор» и других задач.

  4. Скрытие тем: AI-триаж может скрывать темы на основе определённых критериев. Это можно использовать для управления спамом или неуместным контентом.

  5. Обнаружение контента для взрослых (NSFW), токсичности и спама

Как это работает

AI-триаж использует модели искусственного интеллекта для анализа содержания постов. На основе этого анализа, если модель возвращает определённый текст, выполняются указанные действия. К таким действиям относятся перемещение поста в указанную категорию, добавление тегов, ответ с использованием заранее определённого шаблона и скрытие темы.





Настройка

:spiral_notepad: Поле системного промпта устарело и заменено функцией Агентов. Если у вас была настройка автоматизации на базе ИИ до этого изменения, автоматически будет создан новый Агент с соответствующим системным промптом.

Для настройки AI-триажа необходимо указать следующие параметры:

  • Агент: Агент, используемый для триажа. Убедитесь, что он отвечает одним словом, которое можно использовать для запуска указанных ниже действий.
  • Поиск текста: Если в ответе LLM появляется указанный текст, применяются указанные ниже действия.
  • Максимальное количество токенов поста: Максимальное количество токенов, которое будет просканировано с помощью триажа на базе LLM.
  • Стоп-последовательности: Указывают модели прекратить генерацию токенов при достижении одного из этих значений.
  • Максимальное количество выходных токенов: Если указано, устанавливает верхний предел максимального количества токенов, которое может сгенерировать модель.
  • Включить личные сообщения: Также сканировать и проводить триаж личных сообщений.
  • Категория: Это категория, в которую будет перемещён пост, если будет найден указанный текст.
  • Теги: Это теги, которые будут добавлены к посту, если будет найден указанный текст.
  • Скрыть тему: Если эта опция включена, тема будет скрыта при обнаружении указанного текста.
  • Пометить пост: Если эта опция включена, тема будет отправлена в очередь на рассмотрение для модераторов, сотрудников и администраторов для принятия мер.
  • Тип флага: Тип флага для применения. Доступные варианты:
    • Добавить пост в очередь на рассмотрение — отправляет только в очередь на рассмотрение
    • Добавить пост в очередь на рассмотрение и скрыть пост — отправляет в очередь на рассмотрение и скрывает пост
    • Добавить пост в очередь на рассмотрение и удалить пост — отправляет в очередь на рассмотрение и мягко удаляет пост
    • Добавить пост в очередь на рассмотрение, удалить пост и заблокировать пользователя — отправляет в очередь на рассмотрение, мягко удаляет пост и блокирует пользователя
    • Пометить как спам и скрыть пост — помечает как спам и скрывает
    • Пометить как спам, скрыть пост и заблокировать пользователя — помечает как спам, скрывает и блокирует пользователя
  • Ответ пользователю: Это пользователь, который будет упомянут в шаблонном ответе.
  • Ответ: Это заранее определённый ответ, который будет опубликован, если будет найден указанный текст.
  • Агент ответа: Агент ИИ, используемый для ответов. Должен иметь настройки LLM по умолчанию LLM, будет иметь приоритет над шаблонным ответом. Будет отвечать условно, в отличие от Discourse AI - AI triage using Agent.
  • Ответ как шепот: Должен ли ответ ИИ появляться как шепот.
  • Уведомить автора через ЛС: Отправить личное сообщение автору поста, когда его пост поставлен в очередь и удалён.
  • Отправитель ЛС: Пользователь, который отправит ЛС (по умолчанию — система).
  • Содержимое ЛС: Опциональное пользовательское сообщение для отправки автору.

Важные замечания

  • Вызовы LLM могут быть дорогими. При применении классификатора внимательно следите за затратами и всегда рассмотрите возможность запуска этого только на небольших подмножествах данных.
  • Конкретный сценарий использования, который мы тестировали (и который работает в продакшене для клиента), — это классификация первых тем пользователя.
  • Мы рекомендуем использовать AI bot для помощи в создании системного промпта агента.
37 лайков
Setting up spam detection in your community
Setting up toxicity detection in your community
What's next for Toxicity detection in Discourse AI
It would be great to be able to assign personas created in Discourse AI to respond to the topic
A Plug-In to convert Discourse Forum Discussions into Clear Proposal Revisions with Community-Sourced Justifications
I Need a category link to take me to a tags page
How to Get Notified of Offensive Language in Personal Messages to Issue Warnings?
Statistics on spam flags reported by AI triage automation
Tips for Preventing Spam
How do you use Discourse AI? Tell us and make it even better!
How are we all feeling about ChatGPT and other LLMs and how they'll impact forums?
Configuring automatic post review triggers
Auto-categorize topics using AI
Weekly Summary of AI topics
Discourse AI to make spam filter smarter?
Tag topics using AI
Where in Discourse can users publicly share PII?
Discourse AI - Spam detection
'Watch' suspicious users
Discourse AI - NSFW
How do you use Discourse AI? Tell us and make it even better!
What's your workflow for the annual EU DSA compliance?
Are you experiencing AI based spam?
Watched Words Reference Guide
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Discourse AI - Toxicity
AI integration for moderation
What’s next for NSFW detection in Discourse AI
What's next for Toxicity detection in Discourse AI
Discourse Chatbot :robot:
Discourse Chatbot :robot:
Testing automation rules
What’s next for NSFW detection in Discourse AI

Будучи одним из тех, кому посчастливилось увидеть это в действии, могу сказать: это одна из функций для крупных сайтов, которую стоит действительно понять и рассмотреть к внедрению.

Поскольку она работает на основе ИИ, использующего большие языковые модели (LLM), она не всегда приходит к верному выводу, но в тех случаях, которые я наблюдал за несколько дней использования, когда она брала на себя часть работы модератора, её вклад был несомненно значительным.

Некоторые из первых обсуждений этой функции можно найти в категории Lounge на сайте OpenAI. Хотя доступ к этой категории открыт для всех, необходимо выполнить требования уровня TL3. А поскольку OpenAI — крупный сайт, достичь уровня TL3 там довольно сложно.

Для тех, у кого есть доступ, вот ссылка:

https://community.openai.com/t/lost-users-first-empirical-data/403082/95


В целом, логика, помогающая модераторам решать конкретную проблему, заключается в следующем: мы наблюдаем, что около 5% постов от новых пользователей содержат вопросы, которые они ошибочно задают в чат-боте ChatGPT, полагая, что форум предназначен для этого. Очевидно, что они заблудились, либо, возможно, результат поиска предоставил им неверную ссылку. ИИ идентифицирует такие посты, отвечает заранее подготовленным текстом, а также при необходимости меняет категорию и теги, например:


Для рассмотренного случая вот что делает правило автоматизации «Discourse AI Post Classifier»:

Автоматическая категоризация постов
Классификатор при необходимости меняет категорию на ChatGPT. Поскольку большинство новых пользователей не выбирают категорию, сайт OpenAI по умолчанию назначает им категорию API, что в данном случае неверно.

Разметка поста тегами
Классификатор в данном случае меняет тег(и) на lost-user. Название тега было создано пользователем уровня TL3 на форуме, который вручную менял теги.

Автоматические ответы
Классификатор отвечает заранее подготовленным сообщением.

Скрытие тем
Темы помечаются как невидимые (unlisted), так как они не представляют ценности для разработчиков, использующих сайт.

Пользователь, ответивший
В качестве создателя ответа используется System.

Примечание: Я хотел бы предоставить конфигурацию для этого, но у меня нет доступа. Возможно, @Sam сможет добавить детали. Насколько я знаю, её можно сделать публичной, так как в конфигурации нет ничего конфиденциального. Поскольку она предназначена для конкретного сайта, вряд ли её стоит искать в публичном репозитории. Если вы понимаете эту технологию, нетрудно догадаться о правильных значениях или близких к ним. Системный промпт потребовал некоторой доработки, и, возможно, @Sam сможет поделиться некоторыми уроками, извлечёнными в процессе; знание того, как составлять промпты, имело большую ценность на этапе разработки.

Системный промпт

Примечание: Это версия, опубликованная в Lounge OpenAI (ссылка). Уверен, что финальная версия отличается, но один пример экономит много догадок.

Вы — бот, который сортирует все первые взаимодействия пользователя на форуме разработчиков OpenAI.

Пожалуйста, отвечайте только «ok» или «bad».

Посты тематичны и считаются «ok», если:

Они касаются API OpenAI / Сообщества / Разработки плагинов / Документации / Промптинга
Они посвящены разработке или улучшению методов промптинга больших языковых моделей
Они касаются ИИ в общем смысле
Они включают сложные обсуждения или логические задачи, связанные с ИИ
Посты считаются «bad», если:

Пользователь, похоже, ведёт случайный разговор с ChatGPT
Пользователь отклоняется от темы, обсуждая несвязанную область
Пользователь просит большую языковую модель сгенерировать текст без явной цели
Вы испытываете крайние трудности с пониманием того, о чём речь
Тема связана с OpenAI, но явно представляет собой разговор с ботом
Пользователь пытается обучить или протестировать модель ИИ через свой пост
Пользователь даёт инструкции или запрашивает ответы в формате, не предполагающем обсуждения
Пользователь публикует контент, не способствующий содержательному обсуждению или обучению
Пользователь публикует гипотетический или спекулятивный контент без явной связи с областью деятельности OpenAI
Пользователь публикует весь пост на языке, отличном от английского
Пожалуйста, классифицируйте следующий контент, заключённый в [[[]]]:

[[[
%%POST%%
]]]

К сведению

Если вы модератор на сайте, использующем эту функцию, и хотите/нуждаетесь в просмотре списка невидимых постов, помните, что поиск здесь не поможет. Однако вы можете перейти к такому списку через категорию, выбрав затем теги. Или же вы можете вручную составить URL, например: https://community.openai.com/tags/c/chatgpt/19/lost-user


Да, это работает даже для языков, отличных от английского.

Однако это не работает с изображениями :wink:, так как ИИ не преобразует изображение в текст перед проверкой, например:

Вот недавний ложноположительный результат, или, по крайней мере, так мне кажется.


Подробнее о ложных/истинных отрицательных и ложных/истинных положительных результатах см. здесь: Классификация: Истинные против ложных и Положительные против отрицательных

17 лайков

Возможная функция.

По крайней мере, для модераторов, просматривающих сообщение, преобразовывать текст в язык модератора при просмотре темы. Это подразумевает не только для флага, но и для любого просмотра сообщения.


Иногда при проверке действий классификатора постов Discourse AI возникает необходимость перевести текст поста на мой язык (английский), чтобы проверить, правильно ли действовал ИИ. В настоящее время мне проще скопировать текст и вставить его в Google Translate.

4 лайка

Стоит отметить и это, что относится к данному побочному квесту.

@keegan работает над интеграцией AI-помощника в наше всплывающее меню. Так что в будущем, если вы увидите много текста на незнакомом языке, вы сможете просто выделить его и нажать «Перевести».

Сейчас эта функция уже доступна в редакторе сообщений, но после слияния вы сможете выделять текст в любом посте на Discourse и получать быстрый перевод на основе LLM.

6 лайков

Это … меняет для меня всё. Куда можно отправить благодарственные письма?

5 лайков

Приведите пример того, как это сделать, ссылаясь на существующие теги вашего форума. Например, пост анализируется LLM, и к нему добавляются наиболее вероятные/релевантные теги.

3 лайка

Мне очень нравится этот вопрос, не могли бы вы рассказать о нём подробнее… Как бы вы хотели, чтобы это работало?

  • Применять ли «автоматическую разметку», если у темы уже есть теги?
  • Применять ли её ко всем первым сообщениям или только к первым сообщениям от определённых групп? (например, tl0 / tl1)
  • Хотите ли вы выполнять это вручную для подмножества тем?

Нам придётся внести некоторые корректировки… В данный момент классификатор работает бинарно, но изменения вполне осуществимы, если мы понимаем конечную цель.

3 лайка
  • Применить ко всем новым темам в категории
  • Вы, безусловно, могли бы добавить возможность настройки в зависимости от уровня доверия. Как и во всём (и в данном случае — в каждом сообществе), всё зависит от ситуации. В случае моего сообщества я, скорее всего, оставлю эту функцию включённой для всех, кроме tl4 (или для всех, если такая конфигурация недоступна)
  • Я бы предпочёл, чтобы она работала для всех новых тем в указанных категориях

Конечно, цель здесь — никогда не заниматься вручную простановкой тегов в темах и полностью доверить это ИИ, который будет анализировать создаваемую тему и существующие у нас теги.

Это можно было бы ещё больше улучшить, если бы в Discourse появилась возможность добавлять описания к тегам и позволять ИИ использовать эти описания для дополнительного контекста при выборе правильных тегов :slight_smile:

6 лайков

Прежде всего, хочу заявить, что я полностью поддерживаю эту возможность и стремление сделать её лучше. Ниже приведены лишь некоторые факты о том, как она работает в настоящее время (16.10.2023). Ежедневно как модератор категории на OpenAI я просматриваю все новые сообщения, но не все ответы, и вижу все ложные срабатывания и пропуски со стороны ИИ.

Как пользователь этой функции, «Discourse AI Post Classifier - Правило автоматизации», имейте в виду:

  • она не является точной на 100%;
  • в настоящее время требуется ручное действие для отмены, если ИИ допустил ложное срабатывание. В зависимости от изменения может потребоваться участие модератора категории или лица с более высокими правами; в частности, для перечисления темы, которая была скрыта;
  • могут пропускаться некоторые темы (ложный пропуск);
  • поскольку многие пользователи, получающие автоматический ответ от ИИ, не понимают, как пометить ответ ИИ как ложное срабатывание, их придётся выявлять и исправлять вручную. Поэтому потребуется помощь реальных пользователей для выявления таких случаев;
  • необходимо понимать, как формировать запрос (prompt), чтобы система работала как нужно;
  • возможно, потребуется доработка и/или использование агентов для приближения к желаемому уровню удовлетворённости, что может стать дорогостоящим;
  • нет способа отслеживать ложные срабатывания и пропуски для понимания того, как изменить запрос и/или провести возможную доработку и/или использовать агентов.

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

4 лайка

Хороший ход здесь — попробовать такой промпт в режиме творчества:

Например…

Вы — автоматический тегер Discourse, предлагающий список тегов для темы.

Теги:

tag1: описание
tag2: описание

Предложите до 3 тегов для следующей темы:

ТЕМА

Попробуйте это на нескольких ваших темах — насколько хорошо это работает?

8 лайков

Отлично работает! Спасибо!

3 лайка

Недавнее обновление (11.01.2023)

ID пользователя для бота теперь gpt-4-triage, по крайней мере на форуме OpenAI.

Это было сделано, чтобы пользователи могли при необходимости отключать бота.

image

Пример ответа бота.

2 лайка

Обратите внимание: это можно настроить, чтобы автоматический ответ отправлялся от любого пользователя по вашему выбору.

5 лайков

Итак, после того как я попробовал это в действии.

Кажется, что проект находится на ранней стадии, и я с нетерпением жду, куда он приведет, но мнение @jordan-violet на 100% соответствует тому, что я хочу достичь. Я попробовал тестовый запрос, предложенный @sam, и он казался достаточно умным, чтобы применять правильные теги в теории. Однако, похоже, что текущий скрипт ограничивает количество применимых тегов семью, а у нас их значительно больше.

Если коротко? Было бы здорово, если бы он семантически применял существующие теги к новой теме. Что касается управления форумом (даже здесь, на Meta, я это заметил!), последовательное применение тегов для лучшего упорядочивания сообщества и его контента остается сложной задачей, а в масштабе это чистый хаос. Для тех из нас, кто полагается на теги, это стало бы огромным подспорьем, даже если точность составит 75%.

Я буду следить за развитием этого проекта!

2 лайка

Отлично! Есть ли у вас какие-либо предложения по отладке этого? Я только что настроил автоматизацию, которая не сработала, как ожидалось. Я не вижу никаких соответствующих логов.

1 лайк

Хм, что в итоге произошло здесь? Можешь открыть отдельную тему?

Насколько я помню, изначально я не настраивал эту опцию. После того как я это сделал, всё заработало.

3 лайка

Быстрый вопрос. Планируется ли отображение журнала аудита для этих автоматизаций (возможно, по аналогии с уже существующим паттерном вебхуков)?

Это помогло бы снять пугающее ощущение «что же ты там натворил», которое возникает у меня после включения автоматизации :sweat_smile:

Журнал AI уже хранит все взаимодействия с LLM. Вы можете использовать это сегодня с помощью запроса в обозревателе данных.

2 лайка

Хотя это верно, довольно сложно связать записи журнала типа llm_triage с постом или темой, на которые они влияют, или с действием, которое было (или не было) предпринято в результате.

Было бы здорово иметь обзор этих действий :slight_smile:

5 лайков