Дневник стартапа #4: неделя фейлов — рассылка ушла в спам, удалили фичу из-за рекламы, у нас запросили возврат оплаты
Привет, я Настя, руководитель отдела контента в Aigital. Каждую неделю мы рассказываем о развитии стартапа и изнанке продукта.
В этом выпуске расскажем о фейлах, с которыми столкнулись за последние несколько дней: пришлось удалить классную функцию, которая не прошла тест, вся рассылка ушла в спам, а новый дизайн дэшборда снизил конверсию. Но на фоне всего этого случилась одна важная для нас победа.
За мемы спасибо Саше, главному по телеграм-каналу Aigital
Вся наша рассылка ушла в спам
На прошлой неделе заметили, что резко упала открываемость нашей рассылки. У нас порядка 40 000 подписчиков. С привычным open rate в 30% нас читало 12 000 человек. Теперь наши письма открывает всего 3% получателей — 1 200 человек. Оказалось, что у всей команды письма улетели в спам, а до сервиса рассылок, которым пользуемся, очень тяжело достучаться, чтобы выяснить причину этого.
Кадр из сериала «Теория большого взрыва»
У нас попросили первый возврат оплаты
Так случилось, что впервые за год существования сервиса пользователь запросил у нас возврат оплаты. Это был представитель интернет-агентства, которого заинтересовал навык «Структура посадочной страницы». Он посчитал, что навык полностью отрисует структуру лендинга. Но результат генерации в этом навыке — текстовое описание структуры, а не ее графическое отображение.
Поставили задачу проработать нейминг навыков, чтобы реальный и ожидаемый результат совпадали.
Нам очень помогает ваша обратная связь, когда вы пишете об ошибках, невозможности сгенерировать контент, задаете вопросы. Несмотря на то что мы сами пользуемся Aigital, привыкнув у сервису, можем не чувствовать каких-то моментов, которые неудобны и ненативны для нового пользователя.
Тест нового дэшборда снизил конверсию в оплаты
Обновленный дизайн дэшборда
В первом дайджесте мы писали, что решили отказаться от строчного списка навыков в пользу карточек с примерами. Сейчас видим, что это сказалось негативно. Проверяем гипотезу о том, что продукт стал выглядеть несерьезно, и из-за этого уменьшился поток корпоративных клиентов. Пока думаем, как лучше организовать дэшборд, чтобы он и выглядел более профессионально , и в то же время был наглядным.
Убрали редактор картинок из-за рекламы
Пару недель назад мы интегрировали редактор изображений. О нем был написан отдельный раздел в предыдущем дайджесте. Но прямо перед выпуском статьи мы решили убрать функцию редактирования картинок из интерфейса, соответственно, не упоминать его в дайджесте.
Мы подключили API бесплатного онлайн-редактора, который по функциональности не уступает фотошопу. Но, поскольку это был MVP продукта, решили протестировать его без брендирования и интеграции в продукт, просто перенаправляя пользователя на сторонний сервис. По клику на кнопку «Изменить» пользователь попадал вместе со своей картинкой в фоторедактор и мог бесплатно пользоваться всеми функциями сервиса. Без блокировки рекламы в браузере рядом с рабочей областью редактора отображались политические баннеры, что и стало причиной нашего отказа от интеграции редактора в сервис. Хотя решение пока не окончательное.
Мы не успели замерить, насколько часто пользователи переходили в редактор. Если вы использовали его или считаете, что интеграция редактора будет полезна для сервиса, — напишите об этом в комментариях. Мы хотели бы, чтобы у Aigital была эта функциональность, но в первую очередь будем ориентироваться на то, насколько это нужно пользователям.
Автоперевод с русского на русский
И если в случае с редактором изображений мы не увидели баннеры из-за блокировки рекламы, то представьте, как нас удивило, когда один наш друг прислал скрин, где вместо «Изображение» было написано «Ибрейна», а вместо «Удаление фона» — «Удаление фонаря».
При этом ни у кого из нас ни разу не выпадало подобное написание. Спустя некоторое время к нам в команду пришел редактор, которая занялась вычиткой интерфейса и на правке прописала вопросы об этих странных «ибрейнах» и «фонарях».
Проблему нашли — оказывается, если у пользователя включен в браузере автопереводчик, он видит искаженный текст.
Кстати, название сервиса на русском читается «Аиджитал», хотя переводчик и называет его «Aйгиталь». В Яндекс.Метрике мы часто встречаем эту версию :)
Навык «Саммаризатор»
Каждую неделю мы рассказываем, что под капотом одного из наших навыков. На этой неделе мы как раз переработали саммаризатор, который плохо справлялся со своей задачей прежде. Тем не менее он востребован среди 20% наших пользователей.
Промпт для этого навыка основан на научной работе From Sparse to Dense: GPT-4 Summarization with Chain of Density Prompting. Chain of Density переводится как «цепочка плотности».
В первых двух дайджестах мы показывали, как работает цепочка из различных нейросетей. А в этом навыке — цепочка подсказок в рамках одного промпта. Они управляют плотностью информации в сгенерированном резюме. Если просто — на каждом шаге они подсказывают ИИ, как сохранить краткий объем резюме и при этом дополнить его важной для читателя информацией.
Но в первой версии навык работал на GPT-3.5 и не отрабатывал этот сложный промпт. Кроме того, в интерфейсе было поле с выбором количества слов, и мы пытались «договориться» с нейронкой выдавать в результате хотя бы примерно заданный объем. Но все, кто работают с LLM, знают, что этого добиться крайне сложно, а часто практически невозможно. Проведя множество тестов, мы решили не противиться этому, и во второй версии саммаризатора убрали выборку объема. Помимо этого, мы перевели его на GPT-4.
Сгенерировано в «Саммаризаторе»
У навыка несложная последовательная механика — сначала генерируется первичное резюме, а затем ИИ в 2 захода пересматривает его и дополняет новыми важными пунктами. В поиске ключевых моментов ИИ ориентируется на релевантность теме, краткость, новизну и верность. То есть новые добавленные пункты не должны повторять предыдущие или быть выдуманы самой нейронкой. При этом саммари должно быть самодостаточным — понятным и без обращения к исходному тексту.
Большая победа
Несмотря на множество фейлов, у нас есть одна огромная победа — мы стартовали White Label для одного из ведущих игроков из топ-50 компаний в России. Это будет их корпоративный ИИ, надеюсь, чуть позже расскажу об этом подробнее.
А пока мы продолжаем тему исследований и видим, что одна из самых больших потребностей, как для White Label, так и для наших пользователей, — это навык, в который можно сгружать десятки файлов и «общаться» с ними в чате. Например, получать ответы на вопросы, делать саммари на основе той информации, которую вы закинули в чат. Давайте обсудим, мог бы стать такой чат топ-фичей Aigital?
Существо — AI Анимация
🐸Телеграм - 🎥Text2Video
Конкурс для мемоделов: с вас мем — с нас приз
Конкурс мемов объявляется открытым!
Выкручивайте остроумие на максимум и придумайте надпись для стикера из шаблонов ниже. Лучшие идеи войдут в стикерпак, а их авторы получат полугодовую подписку на сервис «Пакет».
Кто сделал и отправил мемас на конкурс — молодец! Результаты конкурса мы объявим уже 3 мая, поделимся лучшими шутками по мнению жюри и ссылкой на стикерпак в телеграме. Полные правила конкурса.
А пока предлагаем посмотреть видео, из которых мы сделали шаблоны для мемов. В главной роли Валентин Выгодный и «Пакет» от Х5 — сервис для выгодных покупок в «Пятёрочке» и «Перекрёстке».
Реклама ООО «Корпоративный центр ИКС 5», ИНН: 7728632689
Генеративные изображение в стиле старой компьютерной игры
Один из любимых промптов создателя канала для Dall-e 3 — это стиль старой компьютерной игры. Сердечко трепещет от ностальгии и деталек, которые хочется рассматривать. Полюбуйтесь вместе с нами :)
Когда хочется поиграть в DOOM с комфортом!)
FORSITE HGX-8100H
Платформа
5U, 2 x Intel Xeon Gen4 LGA 4677, 8 x 2.5" Gen4 NVMe/SATA, БП 6x3000W (8 x SXM5 GPUs)
(60-ядерный Intel Xeon Platinum 8490H 1.9-3.5GHz, 112.5M, TDP 350W, LGA4677) - 2 шт.
(128GB DDR5 4800Mhz ECC REG PC5-38400) - 32 шт.
Видеокарта
BMC integrated Aspeed AST2600
Сопроцессор
8 x NVIDIA HGX™ H100 80GB SXM5 GPUs
Слот расширения x16 #1
ConnectX-6 VPI, HDR IB (200Gb/s) and 200GbE, dual-port QSFP56, PCIe4.0 x16
Накопитель SSD NVMe U.2
(7.68TB PM9A3 Series SSD PCIe NVMe 4.0x4 U.2 (R:6700MB/s;W:4000MB/s)) - 8 шт.
Накопитель SSD SATA
(3.84TB Enterprise Series SSD SATA 3.0 2.5") - 8 шт.
Встроенный сетевой контроллер
2 x 10GbE RJ-45 ports
Контроллер удаленного управления
IPMI 2.0 with KVM and Dedicated LAN
От перфокарт до ИИ: программирование 55 лет назад vs сегодня
Сначала ты носишь свой код в коробках и борешься с коллегами за возможность сесть за клавиатуру (одну на всех), а потом ты просто говоришь машине, что делать. Или всё не так просто? Если присмотреться, то так ли много изменилось? Меняют ли что-то сегодня нейросети в работе, например, джуна или синьора?
Эта статья состоит из трех частей. Первая и вторая написаны по воспоминаниям программистов из Швеции и СССР: Марианны Эрнерфельд и Владимира Николаевича Орлова. И третья — из опыта работы с нейросетями.
Первые коды для дейтинга и железной дороги
Интервью с Марианной Эрнерфельд было опубликовано в июле 2019 в блоге ее сына. Оно более полное, особенно версия на шведском языке.
Девушка решила стать программистом в 1965 году. Тогда не было ни одного университета, обучающего программированию, но существовал годовой курс в Сольне (коммунна в Швеции), и на него могли выдать студенческий займ.
В то же время SJ (шведская государственная железнодорожная компания, на то время монополист) рекламировала годовую программу стажёрства, на которой можно было учиться работе в разных отделах компании. У SJ был компьютерный отдел, поэтому Марианна подала заявление и в эту программу, надеясь оказаться в нем.
На каждое место было по 14 кандидатов, а компания не хотела нанимать соискателей женского пола, но у Марианны (и нескольких других женщин) получилось успешно пройти все тесты.
Во время обучения студенты обучались всему: от поездов и путей и до того, как работали электрические и телефонные линии. В 1969 году SJ начинает программу внутреннего обучения программированию, и Марианна попадает в нее.
Компьютерный отдел SJ состоял примерно из 40 программистов и системных инженеров. Больше никаким другим образом научиться программированию в Швеции было нельзя — совершенно новая профессия. Некоторые из программистов раньше были машинистами локомотивов, и у большинства даже не было аттестатов о полном среднем образовании.
Обучение началось с объяснения, что такое компьютеры. Затем они прошли курсы в IBM, у которой в огромном здании в Стокгольме находилась «машина для обучения».
Одновременно на одном курсе было примерно 50-100 человек, но нас разделили, так что в каждом кабинете присутствовало по 8 студентов. Там мы смотрели на телеэкраны в передней части класса. Преподаватель и его доска транслировались на экраны из другого кабинета. У каждого преподавателя было примерно по 10 кабинетов со студентами, и каждый кабинет мог задавать вопросы при помощи микрофона, обращая на себя внимание нажатием кнопки. Это было сверхсовременно!
Сначала студенты узнали об IBM OS, а затем изучили собственный язык программирования IBM под названием PL/I. Это была более современная версия Кобола, обладавшая возможностями, которых у Кобола пока не было (но они появятся позже), например, создание таблиц и запросов.
После первого курса IBM Марианна вернулась в SJ для выполнения своих первых практических программ. Она и трое обучающихся создали программу для дейтинга — оператор вводит данные мужчин и женщин, их черты, а затем генерирует пары между ними при помощи изобретённого алгоритма. Позже программистка прошла ещё несколько курсов, например, изучала ассемблер (язык программирования).
Как же тогда кодили? Сначала рисовали блок-схемы, а затем писали карандашом код. Его передавали в отдел перфорирования, где код вбивали в перфокарты. Перфокарты состояли из 80 столбцов (72 под программу и 8 для последовательности), поэтому строка кода не могла содержать больше 72 символов.
Программисты должны были писать код чётко, чтобы работавшие на перфораторе женщины могли его читать. Спустя несколько лет работы в SJ им выделили человека для чтения кода. В остальном они по большей мере перфорировали карты данных: отчёты об отработанных часах в SJ, пробег каждого железнодорожного вагона (чтобы их можно было отправлять на обслуживание). Перфоратор выглядел как обычная печатная машинка, пробивающая отверстия с картах. Кроме того, над каждым столбцом она печатала обычным текстом букву.
«А ещё мы носили на перфокартах пирожные, так что они были довольно удобны»
Когда Марианна только начинала работу, программы были маленькими, но позже каждая могла занимать несколько коробок длиной по метру. Одна строка кода превращалась в одну перфокарту. Отдел перфорирования возвращал готовую программу (тысячи карт). Кроме того, приходилось создавать «контрольные карты», в которых кодировалось: должны ли перфокарты компилироваться или исполняться, на каком языке они были написаны и т.д. Контрольные карты имели собственный цвет. Первая карта была рабочей картой с именем на ней, чтобы отдел знал, кому их возвращать.
Еще карты возвращались вместе с «пижамной бумагой», содержащей списки кодов ошибок и номеров строк. У сотрудников был доступ к паре дыроколов, они могли вносить небольшие изменения самостоятельно.
Пижамная бумага с ошибками
Затем создавали тестовые файлы и смотрели, даёт ли программа ожидаемый результат. Если нет, то начинали «настольное тестирование» (с карандашом и бумагой), пытаясь разобраться, в чём ошибка. Для создания правильной программы требовалось много времени.
В машинном зале было примерно 10 операторов машин. Все они носили белые халаты, работали с ленточными накопителями, дисками и вставляли перфокарты. На входе висела табличка «Магазин закрыт», а программистам редко разрешалось посещать огромный машинный зал. Первые машины (IBM 1400) занимали 10-20 квадратных метров, а более новые были размером с холодильник.
Изначально у железнодорожной компании имелась IBM 360, а также более старые машины. Позже они получили IBM 370.
Ближе к концу 70-х появились терминалы. Все работали в общем зале с терминалами. Когда нужно было внести изменения в программу, приходилось сражаться за терминальное время. В компании пользовались жёлто-коричневыми терминалами Alfaskop. До самого увольнения из SJ в 1979 году у Марианны не было персонального терминала.
Alfaskop
Системные инженеры в основном работали со спецификациями, входными и выходными данными программ. Программисты были решателями задач, рисовали блок-схемы и думали, как выполнять задачи.
Какие коды писали? Например, онлайн-бронирование SG, работавшее 24/7. Это было современно по тем временам, а система целиком была написана на ассемблере. Благодаря этому SJ выделялась — ни одна другая компания в Швеции к этому и близко не стояла. Программисты создавали коды, а после завершения и тестирования отдавали их другим отделам. Их поддержкой занимались другие, отдел Марианны только писал новые.
Изображение создал Upgraide.me
Джоконда и работа в Вентспилс
В блоге Владимира Николаевича Орлова есть порядка 7 частей (и несколько отступлений) его автобиографичного рассказа о советском программировании. Дальше наш пересказ одного отрывка.
В 1976 году Владимир служил в Латвийском военном городе Вентспилс-8. Он был в числе первых, кто прошёл полный курс обучения по специальности «военный инженер-программист». Подготовка специалистов по ЭВМ и программированию велась с 1956 года.
Учились тогда прикладному программированию. Из студентов готовили IT-специалистов широкого профиля со знанием теории построения операционных систем, систем программирования, информационно-поисковых систем.
Обучение программированию начиналось с посещения машинного зала ЭВМ М-220.
За пультом ЭВМ М-220 старший лейтенант.
В те годы неотъемлемым атрибутом любого машинного зала (а для размещения ЭВМ М-220 требовалось не менее 100 квадратных метра) было присутствие в нем на стене портрета Джоконды (вспомните кинофильм «Служебный роман»):
Тогда Владимиру и другим обучающимся показали, как рождается портрет. В устройство для чтения перфокарт поставили колоду перфокарт, набрали команду на пульте управления ЭВМ и на АЦПУ стал появляться портрет Джоконды.
«Я окончательно понял, что поступил правильно, выбрав специальность программиста, а ЭВМ М-220 на ближайшие 7 лет стала моей рабочей лошадкой»
Это не означает, что Орлов не работал на других ЭВМ : к концу обучения в академии он был «на ты» с М-220, Минск-32, ЭВМ «Весна», СПЭМ-80, а также имел навыки работы на ЕС ЭВМ. Но главной машиной до 1979 года в Советском Союзе оставалась ЭВМ М-220.
Как тогда кодили? Программирование на М-220 серьёзно отличается от сегодняшнего программирования. Нужно обязательно знать машинные команды. Хотя бы те, которые позволяли загрузить программу с перфокарт, магнитных ленты и барабана в память машины и передать ей управление, чтобы она начала выполняться.
После Вентспилса я на всю жизнь запомнил команды ЭВМ М-220 для работы с внешними устройствами – 50 и 70. Все программы, которые я в итоге напишу в Вентспилсе, будут написаны в машинных кодах, никаких языков высокого уровня или даже автокода.
Одним из рабочих заданий была автоматизация кассы взаимопомощи.
Сначала информация по новым членам кассы взаимопомощи записывалась на бумажные бланки. С бланков данные набивались на перфокарты. Затем перфокарты вручную сортировались. Запускалась небольшая программа, которая данные с перфокарт записывала на магнитную ленту. После всего этого начинался процесс добавления новых членов в базу данных кассы взаимопомощи.
Для этого в лентопротяжки ставились три бобины, одна с новыми данными, вторая с данными, подготовленными ранее или текущей базой данных, и чистая, на которую переносилась информация, получаемая слиянием.
Неочевидное обучение программированию
Спустя 55 лет развития сферы программирования писать код можно даже не своими пальцами. Не работать на громоздких и медленных машинах, не запоминать команды. Можно и читерить: искусственный интеллект уже хорошо справляется со многими задачами. Вот модель GPT 4 — стандарт по умолчанию для создания контента, анализа, машинного перевода и, конечно, для решения задач.
GPT 4 можно использовать и для обучения программированию. Скормите чату условие своей задачки, а на выходе будет код программы на требуемом языке, часто еще и с объяснениями основных моментов в коде. Так можно создать себе персонального учителя.
Как можно использовать нейронку? Например, отправить в чат фрагмент или готовый код программы и промпт к нему:
расскажи, какую задачу решает код
объясни код по строкам
добавь комментарии в код
найди в коде синтаксические ошибки
найди в коде логические ошибки
оптимизируй код (уменьши расход памяти или ускорь выполнение)
уменьши сложность алгоритма
Не всегда, правда, код без глюков, а решения полные :( Главная проблема ИИ типа ChatGPT в том, что многие считают их универсальными. Из-за этого нередко либо результат не устраивает (завышенные ожидания), либо понимаешь, что проще и быстрее сделать самому.Чтобы апгрейднуть результат и сэкономить время, достаточно сделать очевидное: для каждой задачи использовать профильную нейронку.
В рамках API ограничения по получению ответа у GPT-4 составляет 4096 токенов, а у Claude 3 Opus около 128к токенов, в связи с этим и ответ получаемый от Claude 3 Opus будет больше. Плюс модели Claude 3 показывают себя более вдумчивыми.
Так мы справились с громоздкой задачей по программированию, сохранив себе пару часов для отдыха или другой задачи. Возьмем за пример задание из типовых курсов по программированию: написать мобильное приложение для сети клиник.
Возьмем эту задачу и декомпозируем ее. Разбить на более легкие шаги — это заведомо хорошая стратегия, чтобы нейронка не разваливалась и не отвлекалась.
У нас вышли такие шаги:
Составь функциональные требования, основанные на следующем описании: [полное описание из задания].
Теперь распиши полученные функциональные требования в виде User stories.
На основе полученных данных (Функциональных требований и user stories) составь сущности и атрибуты к ним с выделением первичных ключей.
Теперь на основе полученной информации составь plantUML.
Теперь составь BPMN TO-BE в виде кода.
Теперь составь полную спецификацию требований к этому ПО.
Теперь распиши каждый пункт спецификации подробнее, мне нужна готовая заполненная спецификация.
Составь документацию API с описанием всех методов системы на базе swagger.
И на все у Opus был ответ. Теперь проверим, исправим баги, если они есть — и готово! Конечно, не все так легко, как здесь читается, но работа над этими 8 пунктами своими руками была бы дольше в много-много раз.