Проект: Worst Date Ever: AI-симулятор ужасного свидания  Публичный пост
13 апреля 2023  2214
Worst Date Ever: AI-симулятор ужасного свидания
https://wde.app/

Бэкграунд:
В сентябре 2022 года я уволился с работы (я был менеджером крупных проектов в логистической компании) и стал учить программирование. И вот, наконец, настало время дополнить портфолио не каким-то простеньким скриптом или телеграм-ботом, а полноценным продуктом, построенным с нуля.

Идея:
К этому моменту уже началось внедрение ChatGPT во все возможные места. Мне тоже не терпелось поработать с его API, но я понимал, что ниша серьёзных продуктов будет быстро занята и переполнена. К счастью, у меня есть жена Дина, которая, будучи гениальным маркетологом, генерирует десятки идей для стартапов в день. С её подачи я решил заставить искусственный интеллект быть не самым удачным партнёром на Тиндер-свидании.

Продукт:
Worst Date Ever — это голосовой чат с 23-летней девушкой с западного побережья Северной Америки. В зависимости от вашей удачи, она может быть драма-квин, страдать по бывшему, искать богатого парня или просто быть слишком высокого мнения о себе 🥰
UPD: добавил парня по имени Кайл. У него тоже несколько доступных личностей, в том числе высокооплачиваемый и высокомерный айтишник 😏

Стек:
Фронтенд (HTML и CSS) я построил с помощью Webflow. Я обожаю его за то, что я смог написать сайт и сделать его адаптивным за пару часов.

Кнопки и аудио (запись и проигрывание) работают на JavaScript. На это я потратил большую часть времени, поскольку пока что не добрался до того, чтобы полноценно изучить JS. Что ж, lesson learned, пора им заняться.

Бэкенд: Python, Flask.

Хостится всё на Google Cloud Run из-за простоты контейнеризации, удобства CI/CD и низкой latency (как это po-russki?)

Как всё работает:
На стороне юзера аудио записывается в Blob и передаётся в память. На сервере аудио расшифровывается в текст с помощью Google Speech.
Далее я дважды вызываю ChatGPT API: первый раз чтобы сгенерить ответ, второй — чтобы сделать конспект беседы и сохранить её историю.
После этого ответ озвучивается с помощью Google Text-To-Speech и проигрывается у пользователя.

Занятные детали:
• Довелось побороться с ChatGPT, потому что он норовит вставить смайлы и * описание эмоций * в текст при неформальном общении, а при озвучке гугл-голос просто говорит winking face и sighs. Промтингом не удалось заставить AI не использовать это в его (её?) речи. Пришлось прописывать регулярные выражения и отрезать это всё вручную.
• Как я уже упоминал, у Кайли есть основа личности, к которой потом рандомно добавляются особенности. Было интересно подбирать промты, чтобы заставить её вести себя бесяче, но реалистично.
• Мне не хватило бы терпения сделать fine-tuning отдельной модели, поэтому я использую 3.5-turbo. Получается неплохо, но я жду доступа к четвёртой версии ChatGPT и надеюсь, что это сильно повысит органичность ответов.
• Я выставил достаточно высокую температуру в настройке ответов: это значит, что Кайли отвечает разнообразно и креативно, но её также можно вывести из себя, и тогда она начинает выдавать чуть менее связный набор слов. Я не планирую это менять и представляю, что она просто к этому моменту перебрала с алкоголем.
• Поскольку проект некоммерческий, а я — безработный, приходится довольствоваться самым дешёвым голосом, который предоставляет Гугл. Я пробовал озвучивать Кайли с помощью AI-голоса от ElevenLabs, и это было потрясающе: он может определять эмоции и звучать заинтересованно, раздражённо, разочарованно и т.д.
• Проект был готов две недели назад, и всё это время я решал одну единственную проблему: как заставить все браузеры писать аудио в одном формате. Сделал много удивительных открытий относительно состояния фронтенда в 2023-м году! В итоге я сдался и использовал Audio Recorder Polyfill, не придумав более элегантного решения. Не знаю, во мне ли проблема, или лыжи действительно не едут 🥲

Монетизировать этот проект я не планирую. Мои основные цели — научиться работать с OpenAI API и построить портфолио.

Для клуба:

  1. Если вам понравился проект, предложите мне работу или стажировку у себя!
  2. Делитесь скриншотами ваших бесед с Кайли.
  3. Если вы готовы сделать код-ревью или помочь мне улучшить функционал (я хочу как минимум добавить кнопку шеринга скриншота), я буду очень рад. Если я как-то могу помочь вам с технологиями, использованными в этом проекте — пишите! ✌️

P.S.: при написании этого текста не использовался ChatGPT. Если вам показалось, что какая-то часть поста сгенерирована с помощью ИИ, это значит лишь одно — у меня началась профессиональная деформация.

23 комментария 👇

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

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

@StasBushuev, я очень сильно извиняюсь)))

  Развернуть 1 комментарий
emil fattakhov Elixir / Phoenix software developer 14 апреля 2023

Офигенно, очень клевый проект для портфолио!

Kylie is a bitch :)

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

@emilios, спасибо!

Ты не думал, что проблема может быть в тебе? :)

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
Влад Тальянский Продуктовый аналитик 14 апреля 2023

whoops

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

@cifervlad, ого, это что-то новенькое. Я с каждым запросом говорю модели, что она играет роль Кайли. У вас был обычный разговор, или ты пытался её сломать?

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

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

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

@oneout, вообще ломать не пытался, и это мой первый диалог.

Перед этим я обновил окно, один раз получит ответ от "девушки", а другой от gpt

  Развернуть 1 комментарий
Denis Sobolev Питонист, дата скрапер, создатель и внедрятель ЛЛМ агентов под задачи 20 апреля 2023

Какая ж лютейшая годнота!))) Автору неимоверный респект и уважуха.))

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

@Creol, спасибо на добром слове 🥲

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

Решил что если на меня точно будут токсичить то нужно РРРЕЗКО подсобраться и натоксичить первому

Не знаю какой персонаж мне достался, но начиная с фразы "Fuck off" Кайли резко начинает извиняться и старается угождать :D

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

@LuckyWasTaken, возможно, тебе досталась Кайли с разбитым сердцем после прошлого расставания, и ты окончательно убил в ней веру в мужчин. Надеюсь, ты доволен...

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

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

Что я делаю не так? :D

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

@egorev, ты всё ещё не открыл свои курсы пикапа, вот главная ошибка!

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

Хахаха

Только надо было назвать ее на Kylie, а Karen :-D

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

@RuslanL, Karen — это бот для написания жалоб в группу соседей на Фейсбуке :)

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

ну это на 148% пропаганда сексизма

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

@milin, мало того, что я (если верить Кайли) скучный, мало зарабатываю и не обращаю внимания на эмоции других людей, так ещё и сексист...

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

@milin, на 1488%

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

нормальная чувиха, легко согласилась со мной быть )




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

😎

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

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


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