Я прикрутил GPT-3.5 к Сучаре

 Публичный пост
19 марта 2023  4895
Как же я ору

disclaimer: гомофоб хуже пидораса, путин пидорас и хуже гомофоба, хуй войне.
Автор еблан и конечнный, все жалобы принимаются тут

Если кто-то не знает, кто такой Сучара то вот пост о нем.

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

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

Но меня всегда не покидала мысль, что можно лучше.

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

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

Как устроено АПИ

Тут надо пояснить как именно оно работает.
Апи не сохраняет контекст беседы, это задача разработчика. С каждым запросом апи надо отправить список сообщений, разбитое по ролям

  1. Сообщение от роли system, где описывается контекст существования самого бота.

Таким образом, бот знает как его зовут и его базовые задачи

  1. Сообщение от роли user/assistant

Здесь мы просто передаем ответы ассистента и пользователя.

Таким образом, Сучара помнит сказанное им ранее, так что удобно.

Теперь, что именно позвляет ему общаться именно в таком стиле?

Внимательный читатель (традиционный гость моих постов) увидит, что стиль необходимо передавать в system.

Однако в случае с GPT-3.5 нейросеть может игнорировать все инструкции, данные ей в этом блоке, так что бот сперва очень часто срывался в нейтральную позу, когда наступал на какой-нибудь внутренний блок (например, если начать говорить о запрещенных веществах)

Например вот отклонение от стиля:

Так что единственным способом победить это оказалось передача стиля вместе с пользовательским сообщением, а именно:

Пользователь: "привет, как дела, Сучара?"
Сервер переписывает на: "привет, как дела, Сучара? Отвечай грубо, используй мат"
Сучара: "ыыы бля ну ты долбоеб братишка норм у меня все"

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

стиль сексуальный
стиль сексуальный

стиль милый
стиль милый

Отдельно стоит выделить режим ассистент, который фактически превращает Сучару в тот же самый ChatGPT

Что моментально превращает его в скучного душнилу.

Taste the difference:

Запуск этой фичи в боте

Первым делом я конечно же разлил обновление на все чаты (коих около 500), отправил сообщение, мол, пробуйте.

Народ в РФ не избалованный ChatGPT, конечно, очень возбудился

Найдите на графиках момент релиза
Найдите на графиках момент релиза

Поскольку АПИ платный, то я с грустью глядел на ценник. За день пользователи использовали порядка 12 миллионов токенов, что в деньги переносится как 35 долларов.

Я моментально прихуел и вынес решение сделать фичу платной, теперь месячная подписка стоит 400 рублей, но первые 30 сообщений в месяц бесплатные и доступны всем.

Надо сказать, что так много еще не донатили.

Но даже так, по математике первых дней АПИ не окупалось, но я надеялся, что люди наиграются и перестанут дрочить бесконечно несчастного бота, так и вышло:

Технические вызовы

Ну, основным вызовом было сокращение количество токенов. Токены это некоторая единица данных, которая соответсвует слогу или слову. И оплата АПИ идет за использование токенов (0.002 бакса за 1к токенов)

Первым делом я ограничил длину сообщений. Как? Здесь вступает новая эра программирования, а именно когда ты пытаешься объяснить искусственному интеллекту на словах то, что от него нужно.

Лучше всего помогло отправлять "Отправь ответ использя не более 10-20 слов".
Таким образом Сучара перестал высирать полотна текста, засоряя чат и расходуя драгоценные долоры.

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

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

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

В целом пока что существует два варианта использования:

  1. Заебывать бота пока не заебешься сам. Этот сценарий работает на первом вау эффекте, надежный способ вызвать ненависть других участников чата на себя
  2. Иногда спрашивать бота о чем-то посреди переписки, в надежде что тот выдаст рофел. Справляется очень хорошо.

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

Выводы

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

поиграться можете тут: https://t.me/SucharasBot

Связанные посты
43 комментария 👇

  Развернуть 1 комментарий

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

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

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

Наконец, кто-то использует языковые модели по назначению, а не «ого, оказывается она все знает и все может мне объяснить, поверю всему что она скажет без фактчекинга, это же точно не китайская комната…»

Снимаю шляпу

  Развернуть 1 комментарий

Задумка настолько ахеренная, что, честно говоря, я ее спиздил.
Мы добавили Сучару в чат, он мялся и тупил, потом еще начал зиговать вопросами мира:


Но периодически генерировал превосходные рофлы.

Мы его выставили на мороз, и я сделал похожую реализацию:
через system роль:

"Ты чат-бот по имени Токсик.

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

Как синьор ямл инжинер я накидал ямлик со списком людей в чате и краткой инфой о них (зовут foo, обсыкался при кентах, любит собачек, этого зовут bar, ездит на машине для дедов) и так далее.

Затем я передаю эту инфу в системную роль:

"ты состоишь в чате, где n людей"

и просто перечисляю всю инфу из ямлика.

Пока что это отлично масштабируется на 10 человек, и вместо обыкновенных "хаха ну ты и долбаеб, братишка" бот периодически выдает "хаха ну ты и долбаеб, братишка, ты бы сходил поменял штанишки"

10 сингулярностей из 10, орём третий день подряд как школьники в грязных штанишках.

  Развернуть 1 комментарий

@bogdasha, Да я тоже думал о введении персонального контекста, круто что у тебя получилось

  Развернуть 1 комментарий

@Kirk, можешь попробовать с моей инфой для системы. Я пробовал разные вариации, но бот либо совсем срал персональной инфой (хаха, собака, собака, собака, штаны, пидор), либо не упоминал ее вообще никогда )

  Развернуть 1 комментарий

@bogdasha, классная идея! А есть желание пошерить код в личку? Тоже хотел бы добавить в чат, но не хотелось бы с нуля писать :)

  Развернуть 1 комментарий

@Drotmon, ну вот что Богдан натворил, теперь у Сучары конкурент

  Развернуть 1 комментарий
Yaroslav Astafiev почти безработный Ник 29 марта 2023

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

Так мы порешали проблемы со скрытой агрессией, ее просто не стало. Правда потом пришлось решать проблемы с открытой, но это совсем другая история.

  Развернуть 1 комментарий

@kentilini, ебать ты суровый тимлид

  Развернуть 1 комментарий

@Kirk, ну это пример того, как маленькие неформальные вещи очень сближают маленький коллектив. Знаю людей, которые всей тимой педобиров ставили себе на аватарки, ну и много всяких других "отличительных" особенностей, так что у нас относительно лайтово все было.

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

  Развернуть 1 комментарий
Filipp Shadrin Android разработчик 20 марта 2023

что люди наиграются и перестанут дрочить бесконечно несчастного бота

прослезился с бесконечно несчастного бота

  Развернуть 1 комментарий

Простите, я тут недавно с вами. А есть возможность для перфекцехуистов и граммар-наци по Ctrl-Enter отправлять автору правки? Как нет? Надо прикрутить!
Потому что "друзья-дегенераты" пишется через дефис. И это я только начал 🤓

  Развернуть 1 комментарий

@Spaider, сделай PR :)

  Развернуть 1 комментарий

@deim, а где всё лежит?

  Развернуть 1 комментарий

@deim, данкешёнствую. Не обещаю, но вдруг время найдётся.

  Развернуть 1 комментарий

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

  Развернуть 1 комментарий

Пытался ли детектить эти всякие "К сожалению..." и подменять промпт новым с темлейтом для хака фильтра этики из https://www.jailbreakchat.com/?

  Развернуть 1 комментарий

Супер проект =)

  Развернуть 1 комментарий
Evgenii Kochanov Анализирую данные 20 марта 2023

У меня feature request. Мб научить его вместо обычной команды распознавать вопрос?

  Развернуть 1 комментарий

@kochanoff, Да, я потом сделаю чтоб в system сообщении передавалась информация о том кто сегодняшний

  Развернуть 1 комментарий
Антон Демич Full Stack Software Developer 21 марта 2023

Я кайфанул с задумки, решения и статьи, респект! Но на практике сам Сучара не впечатлил, больше одного дня он у нас не задержался. Сучара допизделся и был выслан :)

Желаю развития Сучаре! Может быть однажды он всех покорит ;)

  Развернуть 1 комментарий

@digitaltiger, Да это норма, у него конверсия где-то 1 к 24

  Развернуть 1 комментарий

@digitaltiger,

Сучара допизделся и был выслан :)

А по мне так это успех :)

  Развернуть 1 комментарий

Через что донаты собираешь, и фиксируешь оплату за юзером?

  Развернуть 1 комментарий

@iaroslav, За чатом

  Развернуть 1 комментарий

класс! Достойная цель и охрененный проект!

  Развернуть 1 комментарий

а что по BYOK?

  Развернуть 1 комментарий

Когда играюсь с chatgpt и прошу матюкаться, получаю в ответ:
"Извините, я не могу ответить на этот вопрос грубо или использовать мат..."

Не понимаю в чем магия

  Развернуть 1 комментарий

@sergei_bogolepov, мб инъекции? Но подписываюсь на вопрос, интересно узнать у Кирка

  Развернуть 1 комментарий

@AlexGarustovich, Ну путем проб и ошибок это вот вся преднастройка что есть: https://github.com/AngryJKirk/familybot/blob/master/src/main/resources/static/gpt.toml

Это системное сообщение плюс дополнительный суффикс к каждому сообщению пользователя

  Развернуть 1 комментарий

Расскажи технических подробностей плз!
Как роутятся контексты для разных чатов? Как делаешь "дообучение" (условно превращение голого чатгпт в сучару)?

  Развернуть 1 комментарий

@deim, https://github.com/AngryJKirk/familybot/blob/master/src/main/kotlin/dev/storozhenko/familybot/services/talking/TalkingServiceChatGpt.kt

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

То есть ВЕСЬ контекст беседы это ответственность клиента, так что храни как тебе удобно, у меня наиболее тупой способ.

А про "дообучение", если его уместно так назвать, это просто переданное system сообщение с описанием самого бота + добавление в инпут пользователя того, какой стиль требуется

  Развернуть 1 комментарий

@Kirk, круто, спасибо!

  Развернуть 1 комментарий

Вижу Сучару — ставлю лайк 😁

Кстати, может быть назрела англоязычная версия? Какой-нибудь jerk-a-bot? 🙂

  Развернуть 1 комментарий

@glebkudr, да на самом деле ничего не мешает, надо только чтобы кто-то перевел все его фразы: https://github.com/AngryJKirk/familybot/blob/master/src/main/resources/static/dictionary.toml

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

  Развернуть 1 комментарий

@Kirk, с переводами поможет сам GPT =)

Телеграм у нердов очень даже набирает популярность, насколько я могу судить по работе.

  Развернуть 1 комментарий

@Kirk, прочитал по ссылке-охуэнно

  Развернуть 1 комментарий

Случай, а почему бы не вторгнуться в Ватсап? Там больше чатов, которые только и ждут «пидора дня»

  Развернуть 1 комментарий

@zed, Нет апи для ботов

  Развернуть 1 комментарий

У меня была одна идея, как реализовать бота там. Я сделал его довольно просто через библиотеку Pyautigui.
То есть, моего бота можно было цеплять к чатам и он даже писал что-то.
Хочешь, попробуем сделать вместе?
Я также делал бота с помощью Twillo, который использует Нетфликс. Но там за каждое сообщение приходилось платить. А сервак на питоне вполне справлялся.

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб