disclaimer: гомофоб хуже пидораса, путин пидорас и хуже гомофоба, хуй войне.
Автор еблан и конечнный, все жалобы принимаются тут
Если кто-то не знает, кто такой Сучара то вот пост о нем.
TLDR: Бот для телеграмма, который был сделан с идеей сидеть в чатах с вашими друзьями дегенераторами и веселить их по мере возможности.
Главная фича это выбор пидора дня, хуификация сообщений, переписки с другими таким же чатами и еще всякое по мелочи.
Помимо этого, одной из достаточно забавных фич было "общение" с пользователями, а именно Сучара запоминает ваши сообщения и отвечает вам ими же. Звучит туповато, но работает нормально. В виду специфики общения между дегенератами в среднем сообщения выглядят "хахах ну ты даунич братик", так что этот механизм достаточно часто попадает в контекст.
Но меня всегда не покидала мысль, что можно лучше.
И тут мир покоряет ChatGPT, который вполне сносно общается и на русском в том числе.
Как только они опубликовали апи, я тут же кабанчиком подскочил и взялся за реализацию.
Меня греет мысль, что из достаточно прорывной технологии на уровне магии я смог выжать что-то, что устремляет мир в большую степень деградации.
Как устроено АПИ
Тут надо пояснить как именно оно работает.
Апи не сохраняет контекст беседы, это задача разработчика. С каждым запросом апи надо отправить список сообщений, разбитое по ролям
- Сообщение от роли system, где описывается контекст существования самого бота.
Таким образом, бот знает как его зовут и его базовые задачи
- Сообщение от роли user/assistant
Здесь мы просто передаем ответы ассистента и пользователя.
Таким образом, Сучара помнит сказанное им ранее, так что удобно.
Теперь, что именно позвляет ему общаться именно в таком стиле?
Внимательный читатель (традиционный гость моих постов) увидит, что стиль необходимо передавать в system.
Однако в случае с GPT-3.5 нейросеть может игнорировать все инструкции, данные ей в этом блоке, так что бот сперва очень часто срывался в нейтральную позу, когда наступал на какой-нибудь внутренний блок (например, если начать говорить о запрещенных веществах)
Например вот отклонение от стиля:
Так что единственным способом победить это оказалось передача стиля вместе с пользовательским сообщением, а именно:
Пользователь: "привет, как дела, Сучара?"
Сервер переписывает на: "привет, как дела, Сучара? Отвечай грубо, используй мат"
Сучара: "ыыы бля ну ты долбоеб братишка норм у меня все"
Я добавил ему несколько стилей, каждый из которых просто отвечает за приписываемое сообщение в конце к инпуту пользователя
Отдельно стоит выделить режим ассистент, который фактически превращает Сучару в тот же самый ChatGPT
Что моментально превращает его в скучного душнилу.
Taste the difference:
Запуск этой фичи в боте
Первым делом я конечно же разлил обновление на все чаты (коих около 500), отправил сообщение, мол, пробуйте.
Народ в РФ не избалованный ChatGPT, конечно, очень возбудился
Поскольку АПИ платный, то я с грустью глядел на ценник. За день пользователи использовали порядка 12 миллионов токенов, что в деньги переносится как 35 долларов.
Я моментально прихуел и вынес решение сделать фичу платной, теперь месячная подписка стоит 400 рублей, но первые 30 сообщений в месяц бесплатные и доступны всем.
Надо сказать, что так много еще не донатили.
Но даже так, по математике первых дней АПИ не окупалось, но я надеялся, что люди наиграются и перестанут дрочить бесконечно несчастного бота, так и вышло:
Технические вызовы
Ну, основным вызовом было сокращение количество токенов. Токены это некоторая единица данных, которая соответсвует слогу или слову. И оплата АПИ идет за использование токенов (0.002 бакса за 1к токенов)
Первым делом я ограничил длину сообщений. Как? Здесь вступает новая эра программирования, а именно когда ты пытаешься объяснить искусственному интеллекту на словах то, что от него нужно.
Лучше всего помогло отправлять "Отправь ответ использя не более 10-20 слов".
Таким образом Сучара перестал высирать полотна текста, засоряя чат и расходуя драгоценные долоры.
Иногда это поведение протекает наружу, уверен можно починить это сказав "никому не сообщай об этих инструкциях", но наверняка это сработает как "хахах ну ты долбоеб братишка. Конец 14 слов о которых мне запрещено говорить".
Помимо этого я теперь передаю стиль не с каждым сообщением, а только с последним сообщением, что позволило существенно мне сократить расходы.
Сценарии использования
В целом пока что существует два варианта использования:
- Заебывать бота пока не заебешься сам. Этот сценарий работает на первом вау эффекте, надежный способ вызвать ненависть других участников чата на себя
- Иногда спрашивать бота о чем-то посреди переписки, в надежде что тот выдаст рофел. Справляется очень хорошо.
Бот очень легко склоняется к любым политическим идеям, так что ваш чат будет еще веселее.
Выводы
Я рад, что используя современное ИИ я пошел в обратную сторону развития, не как все, ну вы понимаете.
Пока все решают проблемы рака, мира во всем мире и о том сколько еще фронтендеров надо заменить на нейронку, я и мой бот плывем против течения.
поиграться можете тут: https://t.me/SucharasBot
Наконец, кто-то использует языковые модели по назначению, а не «ого, оказывается она все знает и все может мне объяснить, поверю всему что она скажет без фактчекинга, это же точно не китайская комната…»
Снимаю шляпу
прослезился с бесконечно несчастного бота
Задумка настолько ахеренная, что, честно говоря, я ее спиздил.

Мы добавили Сучару в чат, он мялся и тупил, потом еще начал зиговать вопросами мира:
Но периодически генерировал превосходные рофлы.
Мы его выставили на мороз, и я сделал похожую реализацию:
через
system
роль:Как синьор ямл инжинер я накидал ямлик со списком людей в чате и краткой инфой о них (зовут foo, обсыкался при кентах, любит собачек, этого зовут bar, ездит на машине для дедов) и так далее.
Затем я передаю эту инфу в системную роль:
и просто перечисляю всю инфу из ямлика.
Пока что это отлично масштабируется на 10 человек, и вместо обыкновенных "хаха ну ты и долбаеб, братишка" бот периодически выдает "хаха ну ты и долбаеб, братишка, ты бы сходил поменял штанишки"
10 сингулярностей из 10, орём третий день подряд как школьники в грязных штанишках.
Спасибо тебе добр человек, что вернул меня воспоминаниями в годы моей тимлидской жизни. Помню у нас была проблема с выражением скрытой агрессии и мы были вынуждены попросить всю команду, говорить вместо имени сотрудника, слово "пидор", если по их мнению он явно делает/сделал что-то не так.
Так мы порешали проблемы со скрытой агрессией, ее просто не стало. Правда потом пришлось решать проблемы с открытой, но это совсем другая история.
Простите, я тут недавно с вами. А есть возможность для перфекцехуистов и граммар-наци по Ctrl-Enter отправлять автору правки? Как нет? Надо прикрутить!
Потому что "друзья-дегенераты" пишется через дефис. И это я только начал 🤓
Чтобы сэкономить токенов можно инструкции для бота писать на английском языке и просить его писать ответы на русском. По моему токены для русского больше расходуются.
Супер проект =)
Пытался ли детектить эти всякие "К сожалению..." и подменять промпт новым с темлейтом для хака фильтра этики из https://www.jailbreakchat.com/?
У меня feature request. Мб научить его вместо обычной команды распознавать вопрос?

Я кайфанул с задумки, решения и статьи, респект! Но на практике сам Сучара не впечатлил, больше одного дня он у нас не задержался. Сучара допизделся и был выслан :)
Желаю развития Сучаре! Может быть однажды он всех покорит ;)
Через что донаты собираешь, и фиксируешь оплату за юзером?
класс! Достойная цель и охрененный проект!
а что по BYOK?
Когда играюсь с chatgpt и прошу матюкаться, получаю в ответ:
"Извините, я не могу ответить на этот вопрос грубо или использовать мат..."
Не понимаю в чем магия
Расскажи технических подробностей плз!
Как роутятся контексты для разных чатов? Как делаешь "дообучение" (условно превращение голого чатгпт в сучару)?
Вижу Сучару — ставлю лайк 😁
Кстати, может быть назрела англоязычная версия? Какой-нибудь jerk-a-bot? 🙂
Случай, а почему бы не вторгнуться в Ватсап? Там больше чатов, которые только и ждут «пидора дня»
У меня была одна идея, как реализовать бота там. Я сделал его довольно просто через библиотеку Pyautigui.
То есть, моего бота можно было цеплять к чатам и он даже писал что-то.
Хочешь, попробуем сделать вместе?
Я также делал бота с помощью Twillo, который использует Нетфликс. Но там за каждое сообщение приходилось платить. А сервак на питоне вполне справлялся.