Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 45

Для того же самого используем локальную gemma3-4b для отсеивания спама на почте. Раньше справлялся штатный спам-фильтр, но рекламщики стали креативней и фильтр справляться перестал. Не в последнюю очередь, видимо, из-за того, что на помощь рекламщикам пришли нейронки. Ну и мы себе в помощь одну пристроили и нормально. Крутится локально, по затратам практически бесплатно

А на каком железе она у вас живет?

На rtx 2060 super, купленной на авито 😅, занимает половину видеопамяти, оставшуюся заняли нейротранскрибатором

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

Вряд ли "практически бесплатно". Стоимость видеокарты + энергия. Грубо подсчитаем: в среднем без большой нагрузки они потребляют 100 ватт * 24 часа и на 30 = 72 kw/месяц, при цене 8 р. = 576 р. за месяц.

У автора - 1.23$, до оптимизации запросов.

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

Можете рассказать подробнее как это реализовали?

Я даже не уверен, что у нас всё достаточно правильно реализовано, но пока работает - не трогаем.
Есть скрипт на python, который раз в минуту проверяет почтовый ящик на наличие новых писем. При наличии оных - по очереди показывает их гемме вместе со списком критериев классификации (спам пометить как спам, заявку как заявку и т.д). Гемма выдает односложный ответ и уже исходя из него скрипт пересылает содержимое письма в чатик нужного отдела. Чатик спама тоже есть, на случай ложных срабатываний. Но, на удивление, gemma3 за всё время работы не ошиблась ни разу. До неё была gemma2-9b - тоже идеально. А вот до них были Llama2 и Llama3, не помню на сколько параметров, фaкапились они частенько. Qwen2.5 и Qwen3 еще пробовали - в принципе неплохо, но как-то русские инструкции они понимают своеобразно.
Теперь, что касается самой Gemma. На том же python развернут крошечный сервер на flask, там же при помощи llama-cpp-python, сконфигурированной под cuda, крутится квантованная gemma-3-4b в 8q квантовании. Сервер ожидает запроса, передает его суть в create_chat_completion, получает ответ и возвращает его адресату (реализовано через отложенный ответ, потому что Gemma может думать несколько секунд, если запрос в несколько тысяч символов).
Gemma находится не в одном скрипте со спам-надзором потому, что он не единственный, кто работает с gemma, с ней еще можно и за жизнь перетереть, как с чат-ботом, с сохранением контекста, но это уже тема отдельная, таких на хабре уже много было. В планах её еще напрячь чем-нибудь, потому что справляется она неплохо. Gemma3 является мультимодальной, помимо текста умеет понимать и изображения (хоть у нас это и не реализовано), так еще и недавно вышла Gemma-3N, еще более мультимодальная, надеюсь скоро до неё руки дойдут, выглядит она многообещающе.

Точность 98% это конечно звучит очень хорошо. Но если скоррелировать с реальностью, то из 1000 сообщений, 20 сообщений от нивчём неповинных людей. Вроде бы мало, а вроде 20 человек.

С такими показателями рано чатботов привлекать к судейству )

Но для чата, наверное сойдёт.

В статье же написано: 9 ложных срабатываний)

Да, но я исхожу из того, что это 9 человек из чата неожиданно расстроились, что их сообщения удалили. Если сообщения удаляются вручную (я может пропустил это в статье) то тогда норм, если же все удаляет бот, то потенциально минус 9 подписчиков.

Нет, удаляет бот. Каждый день приходят десятки спам-сообщений, и для ручной модерации пришлось бы мониторить чат круглосуточно.

Да, 9 человек могли расстроиться (хотя бот присылает им обоснование для удаления). Но зато рады остальные 3991, которым не приходится ежечасно читать спамерские сообщения.

2% от 4000 человек, это все же 80 человек, а не 9.

А 80- звучит уже серьезно.

Но отчасти я согласен.

Вы все же прочитайте статью, а заодно и мой комментарий. Там написано, что из 4000 человек только 9 человек попали на ложное срабатывание. Там НЕ написано, что все эти 4000 человек писали в чат. Там написано, что 4000 человек подписаны на канал. Подписаться - не значит писать туда.

В телеграм чатах с несколькими тысячами людей пишут обычно не больше 2 десятков. Всего а не за день.

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

Сижу в одном чате с такой же проблемой, туда добавили бота, теперь в итоге от бота оповещений больше чем от спамеров, приходится чат мутить постоянно. Мб в лс писать нарушителям а не в общий чат?

Разве телеграм-боты имеют права писать пользователям, не отправившим им команду /start?

У тг-ботов вроде есть функция отправки сообщения в чат без звукового уведомления.

Так же можно не генерировать новое сообщение о блокировке спама, а редактировать какое-то специально закрепленное сообщение для этого, все равно ложных срабатываний мало, всем от этого только легче станет

Спасибо, это надо попробовать)

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

Привет! А что за бот там?

Вот бы ещё спамерские звонки как-то блокировать. Я ничего умнее не придумал, как блокировать всех, кого нет в контактах.

Блокировщик звонков от Яндекса не пробовали? Мне помогает.

Не пробовал. Посмотрю, что это такое.

К сожалению, он адекватно работает в менее, чем 2% стран земного шара

Репозиторием не поделитесь?

Я думала, что весь основной код и так есть в статье. Вот здесь одна из последних версий: https://github.com/AstFreelancer/ioanno_bot

Благодарю

Ну как же тут не вспомнить классику...

*** Now talking in #christian
-Word_of_God- Welcome Abstruse to #christian I am a Bible Bot.
For more info type: /msg Word_of_God !info
!kjv numbers 22:21
Numbers 22:21 -- And Balaam rose up in the
morning, and saddled his ass, and went with the princes of
Moab. - (KJV)
*** SageRider sets mode: +b
!
@c211-30-208-111.rivrw3.nsw.optusnet.com.au
*** Word_of_God was kicked from #christian by SageRider
(Please dont Swear)

Надеюсь, у вас тоже найдутся весёлые применения боту.

Проанализируйте ложные срабатывания и пропишите в промпт фильтр исключений.

Также в случае спорных моментов можно сделать опцию передачи комментария на ручную модерацию без удаления.

Также можно добавить дополнительную проверку контекста комментария попавшего под первый фильтр относительно поста в канале + анализировать предшествующий диалог, а не отдельные посты.

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

И вопрос: а как справились со спамерами, которые пишут фразы вроде "хорошая статья", "я с вами согласен" и т.п. Но в их профиле уже стоит спам ссылка?

Спасибо за советы, надо обдумать! Да, не мешало бы добавить третью градацию: "спам", "не спам" и "сомневаюсь" с пересылкой третьего варианта кому-нибудь из модераторов в личку.

Поддержку контекста я делала для другого своего бота @findplantbot. Цена в целом не сильно вырастает. Но в данном случае контекст не играет большой роли. ChatGPT и без него вычисляет спам удивительно точно. Я бы не назвала точность 98% уровнем школьника.

Но в их профиле уже стоит спам ссылка?

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

Добавьте, чтобы банились субъекты, пропагандирующие альтернативные мировоззрения :) Меня бот так и не забанил, я сам решил прекратить участие в чате :)

Альтернативное мировоззрение - не спам. Так что это ожидаемое поведение.

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

Можно проверить нсфв фильтром аватарку спам бота а так же узнать название канала в его биографии и уже пропускать его через того же чатгпт

Да. Шлюхботы во многих каналах уже как норма оставляют первый десяток сообщений сразу после публикации.

До вас они видимо не добрались... Но стоит подумать. Тут уже дали рекомендации что можно делать

В чате одном тоже велосипед был, использовался чатгпт, вроде распознает спам, но 1 раз из 12 спам принимает за норм сообщение, причем если его еще раз отправить - то уже определяет как надо.

Для себя же остановился на боте от умпутума, там ии используется только если остальные проверки не сработали, которые и без ии очень много и достаточно хорошо детектят (обычный Naive Bayes закрввает 95%)

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

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

Использую локально вот эту модель.
Аккуратность 99% (случаются пропуски, но очень редко).
https://www.kaggle.com/code/dima806/email-spam-classification-roberta

Не понял можно ли ее дообучать на своих легитимных сообщениях и своем спаме.

Да, можно.

Dataset открытый, исходники в линке, добавляете свой спам набор и вперед.
Я так и планирую сделать, когда наберу достаточно своих, вручную отобранных, spam emails.

Мы со студентами обычно обучали RNN для этой задачи. Но в данном случае я взяла наиболее простое технически решение.

Задача решена, это самое важное.

Хотел сначала написать комментарий ниже, но потом увидел, что этот пост это просто завуалированная реклама ещё одного GPT-бота в Телеграме. Странно, что никто из комментаторов выше этого не заметил.

Использовать доступ к АПИ OpenAI для детекции спама в чате на 4К людей, это даже не из пушек по воробьям, а скорее термоядерной бомбой по тараканам.

В Телеграме есть уже готовые инструменты для модерации, например Rose или combot, которые закрывают все базовые кейсы массового спама. Там нет нейросеток, но как правило большая часть спама ими режется и так + встроенные фильтры самой телеги + фильтры по словам или кусочкам слов.

Заявленные в статье типы спама - типа вакансий - режутся уже на этапе запрета типов контента в Телеграме (например ссылки).

Реальная сложно решаемая без возни проблема - это массовые GPT порно-спам-боты (легко отличить по аватаркам с дамами в томных позах, иногда порно-гифки), которые пишут AI-slop реакции на каналы или прогнанные через GPT тексты в духе "залетай в личку и получи X". Их тексты реально сложно отличить от комментариев школоты … кроме того, что люди так не пишут. И что в интернете никто не пишет положительных комментариев.

Обход бана ссылки тут идёт через ссылку в био, или ссылку на личный канал в био.

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

А где реклама-то? В конце своих статей там, где все оставляют ссылку на свой ТГ-канал, я обычно даю ссылки на свои проекты - боты, приложения, курсы, - потому что ТГ-канала у меня нет)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации