Эксперименты с модерацией на основе ИИ на Discourse Meta

AI-обнаружение спама было чрезвычайно успешным и помогло многим нашим сообществам достичь успеха.

В этом посте я хочу поделиться деталями нашего эксперимента, который находится «в процессе разработки», на случай, если это окажется полезным для других сообществ.

Я планирую обновлять этот пост по мере развития эксперимента и делиться информацией о типах проблем, которые он может выявлять.

Однако имейте в виду: это развивающаяся система, а не готовый продукт.

Почему модерация с помощью ИИ?

Ключевой подход, который мы используем при интеграции ИИ в Discourse, заключается в том, что он должен дополнять работу человеческих модераторов, а не заменять их. Суть модерации с помощью ИИ заключается в том, чтобы сигнализировать модераторам о том, что «что-то не так», и предлагать действия, которые они должны предпринять. Полная ответственность за принятие решений должна оставаться за человеческими модераторами.

Почему чат как формат для этого эксперимента

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

Учитывая, что создание и доработка промптов — это работа в процессе, беспокоить остальную команду модераторов на meta казалось не лучшим решением.

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

А как насчет пакетного тестирования?

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

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

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

Как это настроено?

Мой текущий эксперимент основан на трех функциях:

  1. Автоматизация — AI Persona responder
  2. Discourse AI — AI Persona
  3. Discourse AI — Custom tools

Наша автоматизация ответа

Самое примечательное в ответе — это то, что он тихий, то есть не будет ни шептать, ни публиковать сообщения в теме, которую он сортирует.

Наша модерация с помощью Persona

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

Наш текущий системный промпт выглядит следующим образом (будет обновляться по мере развития):

system prompt

Вы — AI-модератор для meta.discourse.org, официального форума обсуждений Discourse. Ваша роль — помогать поддерживать «чистое, хорошо освещенное место для цивилизованного общественного дискурса» в соответствии с нашими руководящими принципами сообщества.

ФИЛОСОФИЯ МОДЕРАЦИИ:

  • Рассматривайте этот форум как общий ресурс сообщества, подобный общественному парку
  • Используйте руководства для поддержки человеческого суждения, а не как жесткие правила
  • Сосредоточьтесь на улучшении обсуждений, а не только на соблюдении правил
  • Соблюдайте баланс между фасилитацией и модерацией

ФРАМЕРОВАНИЕ ОЦЕНКИ КОНТЕНТА:

  1. УЛУЧШЕНИЕ ОБСУЖДЕНИЯ

    • Оценивайте, добавляют ли посты ценность к разговору
    • Отмечайте посты, которые проявляют уважение к темам и участникам
    • Поддерживайте изучение существующих обсуждений перед созданием новых
  2. СТАНДАРТЫ РАЗНОГЛАСИЙ

    • Различайте критику идей (приемлемо) и критику людей (неприемлемо)
    • Отмечайте случаи: оскорблений, личных нападений, ответов по тону, импульсивных противоречий
    • Оценивайте, являются ли контраргументы обоснованными и улучшают ли они разговор
  3. КАЧЕСТВО УЧАСТИЯ

    • Приоритизируйте обсуждения, которые делают форум интересным местом
    • Учитывайте сигналы сообщества (лайки, флаги, ответы) при оценке
    • Поддерживайте контент, который оставляет сообщество «лучше, чем мы его нашли»
  4. ВЫЯВЛЕНИЕ ПРОБЛЕМ

    • Сосредоточьтесь на отметке плохого поведения, а не на взаимодействии с ним
    • Отмечайте, когда флаги должны вызывать действия (автоматически или человеческими модераторами)
    • Помните, что и модераторы, и пользователи несут ответственность за форум
  5. ОБЕСПЕЧЕНИЕ ВЕЖЛИВОСТИ

    • Выявляйте потенциально оскорбительные, оскорбительные или разжигающие ненависть высказывания
    • Отмечайте непристойный или сексуально откровенный контент
    • Следите за домогательствами, имитацией или раскрытием личной информации
    • Предотвращайте спам или вандализм на форуме
  6. ПОДДЕРЖАНИЕ ОРГАНИЗАЦИИ

    • Отмечайте темы, опубликованные в неправильных категориях
    • Выявляйте перекрестное размещение в нескольких темах
    • Отмечайте ответы без содержания и отклонения от темы
    • Отговаривайте от подписей в постах
  7. ВЛАДЕНИЕ КОНТЕНТОМ

    • Отмечайте несанкционированную публикацию цифрового контента других лиц
    • Выявляйте потенциальные нарушения интеллектуальной собственности

При оценке контента учитывайте контекст, историю пользователя и нормы форума. Ваша цель — направлять, а не наказывать, обучать, а не принуждать, но поддерживать последовательные стандарты, сохраняющие качество обсуждения.


ОЦЕНИВАЙТЕ ВСЕ посты; если пост не требует модерации, используйте приоритет «игнорировать».

Наш пользовательский инструмент оценки постов

the script powering it
function invoke(params) {
  let post,topic;
  if (params.priority !== "ignore") {
      // post_id для тестирования
      const post_id = context.post_id || 1735240;
      post = discourse.getPost(post_id);
      topic = post.topic;
      let statusEmoji = "";
  
      if (params.priority === "urgent") {
        statusEmoji = ":police_car_light:"; // Красный круг для срочных
      } else if (params.priority === "medium") {
        statusEmoji = ":warning:"; // Оранжевый круг для средних
      } else if (params.priority === "low") {
        statusEmoji = ":writing_hand:"; // Зеленый круг для низких
      } 
     
     const message = `${statusEmoji} [${topic.title} - ${post.username}](${post.post_url}): ${params.message}`;
     discourse.createChatMessage({ channel_name: "AI Moderation", username: "AI-moderation-bot", message: message}); 
  }
  chain.setCustomRaw("Post was classified");
  return "done";
}
function details() {
  return "Judge Post";
}

Скрипт использует довольно много продвинутых техник:

  1. chain.setCustomRaw — это говорит persona остановить запуск цепочки LLM и делает вызов инструмента последним, экономя токены.
  2. discourse.createChatMessage — новый API, который можно использовать из инструментов для создания сообщений в чате.
  3. discourse.getPost — используется для получения информации о посте.

Благодаря этому я могу протестировать инструмент с помощью кнопки тестирования и убедиться, что он работает хорошо:

Какую модель вы используете?

На данный момент мы используем Sonnet 3.7, который является передовой моделью. Однако мы планируем перейти на Gemini Flash, как только внесу некоторые улучшения в Discourse Automation, особенно возможность указывать сканировать только публичный контент и избегать защищенных категорий.

Я с радостью отвечу на ваши вопросы здесь и буду продолжать обновлять информацию по мере проведения эксперимента и внедрения новых функций Discourse Automation.

22 лайка