Всем привет и спасибо за интерес к нашему небольшому pet-проекту! 🚶♀️
Чат-бот «А юристы смотрели?» с помощью нейросети, дополненной постоянно обновляющейся базой решений Федеральной антимонопольной службы по рекламным делам, помогает проверять рекламные креативы на соответствие ФЗ «О рекламе». Бот работает по технологии Retrieval-Augmented Generation (RAG, генерация, дополненная поиском): он ищет в базе знаний решения ФАС по креативам, максимально близким к загруженному вами. Это обеспечивает более точную и индивидуальную оценку рисков — как если бы ваш случай проверял юрист, постоянно отслеживающий практику ФАС.
Автор проекта и канала – Екатерина Якуненко😀 , юрист крупного фармацевтического холдинга с опытом более 6 лет.
Во время декретного отпуска я прошлавеликолепный 100/10 would recommend курс от Рунетлекс Академии по использованию нейросетей в работе юриста. Курс вдохновил меня создать полезный для своей работы нейросетевой инструмент (при помощи самих же нейросетей!).
Я много работала с ФЗ «О рекламе» и медиа-проектами и отлично понимаю, насколько сложно маркетологам и предпринимателям одновременно выделиться среди конкурентов, сэкономить бюджет…😐
Так на пересечении желания внедрить нейросети в свои рабочие задачи, попрактиковать так называемый вайб-кодинг, поработать с открытыми и легко добываемыми данными и принести пользу коллегам-юристам, родилась идея сделать бота-помощника. Но главным образом меня вдохновляла мысль о креативщике или малом предпринимателе, который после долгой работы над рекламой в последний момент вспоминает, что ее же не видели юристы. Так сформировалась главная цель проекта и само собой получилось название для бота.
В этом канале я планирую:
🤩 делиться во всех подробностях (в формате инструкций и рассказа о провалах) процессом созданием бота — от гипотез и работы с данными до продуктовой части и проблем на запуске;
🤩 разумеется, рассказывать об обновлениях (точек роста ОЧЕНЬ много!) и других новостях;
🤩 писать о самых забавных кейсах ФАС, которые мне попались при работе с базой знаний, и других кулстори, связанных с проектом.
Поэтому этот канал будет интересен юристам, энтузиастам ИИ и low-code разработки (и особенно тем, кто совмещает эти роли). Возможно, заинтересует и тех, кто следит за жизнью подобных pet-проектов, создаваемых людьми из, казалось бы, совсем других сфер.
Я надеюсь, что бот будет действительно полезен многим людям, и что он вырастет во что-то большее. Поэтому очень приветствую любую конструктивную критику, обратную связь о работе бота, поддержку и предложения о сотрудничестве!
Начать поддержку можно с того, чтобы поставить звездочку проекту на Github или бустануть канал☕️
Чат-бот «А юристы смотрели?» с помощью нейросети, дополненной постоянно обновляющейся базой решений Федеральной антимонопольной службы по рекламным делам, помогает проверять рекламные креативы на соответствие ФЗ «О рекламе». Бот работает по технологии Retrieval-Augmented Generation (RAG, генерация, дополненная поиском): он ищет в базе знаний решения ФАС по креативам, максимально близким к загруженному вами. Это обеспечивает более точную и индивидуальную оценку рисков — как если бы ваш случай проверял юрист, постоянно отслеживающий практику ФАС.
Автор проекта и канала – Екатерина Якуненко
Во время декретного отпуска я прошла
Я много работала с ФЗ «О рекламе» и медиа-проектами и отлично понимаю, насколько сложно маркетологам и предпринимателям одновременно выделиться среди конкурентов, сэкономить бюджет…
и не забыть получить одобрение юристов, чьи многочисленные замечания иной раз вынуждают начинать процесс заново Так на пересечении желания внедрить нейросети в свои рабочие задачи, попрактиковать так называемый вайб-кодинг, поработать с открытыми и легко добываемыми данными и принести пользу коллегам-юристам, родилась идея сделать бота-помощника. Но главным образом меня вдохновляла мысль о креативщике или малом предпринимателе, который после долгой работы над рекламой в последний момент вспоминает, что ее же не видели юристы. Так сформировалась главная цель проекта и само собой получилось название для бота.
В этом канале я планирую:
Поэтому этот канал будет интересен юристам, энтузиастам ИИ и low-code разработки (и особенно тем, кто совмещает эти роли). Возможно, заинтересует и тех, кто следит за жизнью подобных pet-проектов, создаваемых людьми из, казалось бы, совсем других сфер.
Я надеюсь, что бот будет действительно полезен многим людям, и что он вырастет во что-то большее. Поэтому очень приветствую любую конструктивную критику, обратную связь о работе бота, поддержку и предложения о сотрудничестве!
Начать поддержку можно с того, чтобы поставить звездочку проекту на Github или бустануть канал
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - ekaterina-ya/lastminute_legal: Telegram bot for automated compliance review of advertising creatives with Russian advertising…
Telegram bot for automated compliance review of advertising creatives with Russian advertising legislation. Powered by Gemini 2.5 Pro API and Retrieval-Augmented Generation (RAG) for enhanced legal...
1❤14🔥11 6👍1
День релиза! 🤩 🤩 🤩
В честь Дня релиза пост о ближайших планах по развитию бота #ботоводство и канала:
🤩 Настроить регулярный процесс пополнения базы знаний (RAG)
Сейчас в базе чуть больше 700 кейсов из практики всех управлений ФАС за прошедшие 2,5 года (с 01.01.2023 до 16.06.2025, когда я запустила первый скрапинг, т.е. извлечение дел из базы).
Процесс отбора кейсов в базу не на 100% автоматизированный — в нем довольно большая доля ручного отсмотра и контроля (как устроен отбор я обязательно расскажу в отдельном посте).
В ближайшее время хочу дополнить базу решениями за прошедшее с 16 июня время и за 2022 год. И заодно отладить пайплайн «скрапинг — отбор — пополнение RAG для бота».
🤩 Выдачу кейсов из RAG для нейросети хочется сделать более нюансированной и точной
Сейчас нейросеть получает 10 наиболее близких кейсов, и эта близость определяется так называемым косинусным расстоянием. Это неидеальный(и я бы даже сказала местами абсолютно топорный) метод (о нем я тоже обязательно напишу подробнее), и есть несколько идей, как можно это улучшить.
🤩 Сделать в RAG отдельный блок с руководствами ФАС о надлежащем применении законодательства о рекламе
Сейчас нейросеть может их учитывать как часть своего обучения в недрах Google, но никогда не цитирует их. Но вполне можно помимо решений УФАСов добавлять в заключение и ссылки на нужное руководство, когда это уместно.
🤩 Настроить регулярный процесс изменений в коде
MVP – вещь неидеальная, мы специально оставили несколько шероховастей в продуктовой части, чтобы отладить процесс изменения и тестирования кода локально на моем компьютере, переноса итоговой версии на Гитхаб(это, кажется, называется коммитом?) и перезапуска кода на сервере.
🤩 Разобраться с анализом собранных данных
В коде прописан сбор данных обо всех действиях пользователя в боте в связке с этапами работы бэкэнда кода (как нейросеть описала креатив, какие получила кейсы из RAG, какое написала для вас заключение) и вашей обратной связью. Но я пока вообще не вникала, как это устроено, как это будет выглядеть, как лично я буду все это читать,не пойдет ли у меня кровь из глаз от всего этого айтишного.
🤩 Информационная работа
Контент-план и собственно контент для канала, публикации в разных медиа о проекте, прямые контакты со знакомыми предпринимателями, маркетологами, юристами, соц.сети и так далее. Нужно ли добавлять, что психологически лично для меня это самая сложная часть, я бы лучше круглыми сутками ковырялась в базе решений и писала техзадания по продуктовой части🥺
Есть, конечно и ✨отдаленные планы✨
Например, попытаться преодолеть заявленные ботом ограничения, касающиеся каналов распространения рекламы, путем разработки опросников и усложнения архитектуры обработки запросов.
А еще — освоить python на уровне, позволяющем мне понять собственный код😀 кторый я писала, разумеется, не сама, а с помощью Google AI Studio и модели Gemini 2.5 Pro (той же самой, что проверяет креативы, вот такая она молодец).
Размышления о боте приводят и в эмпиреи, где бот разрастается до мультиагентной системы полного цикла для маркетологов, решающей задачи от концепта и изучения запросов клиента до готовой размещенной кампании (соответствующей всем требования законов всех рынков мира, разумеется!).
Но для начала я еще поделаю RAG :)
В честь Дня релиза пост о ближайших планах по развитию бота #ботоводство и канала:
Сейчас в базе чуть больше 700 кейсов из практики всех управлений ФАС за прошедшие 2,5 года (с 01.01.2023 до 16.06.2025, когда я запустила первый скрапинг, т.е. извлечение дел из базы).
Процесс отбора кейсов в базу не на 100% автоматизированный — в нем довольно большая доля ручного отсмотра и контроля (как устроен отбор я обязательно расскажу в отдельном посте).
В ближайшее время хочу дополнить базу решениями за прошедшее с 16 июня время и за 2022 год. И заодно отладить пайплайн «скрапинг — отбор — пополнение RAG для бота».
Сейчас нейросеть получает 10 наиболее близких кейсов, и эта близость определяется так называемым косинусным расстоянием. Это неидеальный
Сейчас нейросеть может их учитывать как часть своего обучения в недрах Google, но никогда не цитирует их. Но вполне можно помимо решений УФАСов добавлять в заключение и ссылки на нужное руководство, когда это уместно.
MVP – вещь неидеальная, мы специально оставили несколько шероховастей в продуктовой части, чтобы отладить процесс изменения и тестирования кода локально на моем компьютере, переноса итоговой версии на Гитхаб
В коде прописан сбор данных обо всех действиях пользователя в боте в связке с этапами работы бэкэнда кода (как нейросеть описала креатив, какие получила кейсы из RAG, какое написала для вас заключение) и вашей обратной связью. Но я пока вообще не вникала, как это устроено, как это будет выглядеть, как лично я буду все это читать,
Контент-план и собственно контент для канала, публикации в разных медиа о проекте, прямые контакты со знакомыми предпринимателями, маркетологами, юристами, соц.сети и так далее. Нужно ли добавлять, что психологически лично для меня это самая сложная часть, я бы лучше круглыми сутками ковырялась в базе решений и писала техзадания по продуктовой части
Есть, конечно и ✨отдаленные планы✨
Например, попытаться преодолеть заявленные ботом ограничения, касающиеся каналов распространения рекламы, путем разработки опросников и усложнения архитектуры обработки запросов.
А еще — освоить python на уровне, позволяющем мне понять собственный код
Размышления о боте приводят и в эмпиреи, где бот разрастается до мультиагентной системы полного цикла для маркетологов, решающей задачи от концепта и изучения запросов клиента до готовой размещенной кампании (соответствующей всем требования законов всех рынков мира, разумеется!).
Но для начала я еще поделаю RAG :)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤2👍1🎉1🤩1
Добрый день, коллеги и друзья! Прошел день с релиза, и я уже вижу очень воодушевляющий отклик и так много поддержки! 😭 Спасибо большое всем, кто тестирует, сообщает о проблемах и впечатлениях, рассказывает о боте ближнему! Подписчикам — десятикратное спасибо!!!
В сегодняшнем посте я хочу рассказать о первых этапах работы над ботом (а завтра – о последних) #ботоводство. Пока рассказ короткий и верхнеуровневый, о каждом этапе (и даже отдельных больших подзадачах) я буду писать отдельно в деталях, а этот и завтрашний пост позже пополнять ссылками.
😀 Концептуальный этап
Сразу был понятен контур Telegram бот + нейросеть + RAG по рекламному законодательству. Но довольно много бурных обсужденийвнутри моей семьи было о том, чем будет наполнен RAG и что считать MVP. Основные отброшенные гипотезы:
⁃ RAG с руководствами ФАС (этими самыми);
⁃ RAG по делам о лекарствах и БАД как сфере, в которой у меня много опыта;
⁃ RAG по какому-то конкретному региону (УФАСу).
Все они были отброшены какнеамбициозные не добавляющие ощутимой ценности к тому, как может проверить креатив любая приличная LLM простецким zero-shot запросом (как в том меме «я подписал договор, меня не посадят?»)
Было решено действовать по принципу go big or go home и сразу делать масштабный RAG с решениями со всех регионов, по всем рынкам и всем статьям ФЗ «О рекламе».
😀 Скрапинг решений из базы данных ФАС (пост раз, пост с советами)
Этот этап частично был параллельным первому (я наскрапила практику по лекарствам и БАДам, увидела, какие это слезы😪 , и отбросила ту гипотезу). Здесь произошел тот самый первый вайб-кодинг с помощью Google AI Studio, знакомство с Терминалом на macOS и JupyterLab (средой разработки). Я попросила нейросеть написать скрипт, который по заданным мной параметрам (нащупанным не с первого раза) соберет нужные txt файлы из базы ФАС.
Удивительные ощущения настоящего колдунства от работы кода, ведь то, что руками делалось бы неделями, свершилось за пару часов: скачано несколько тысяч файлов с определениями/решениями/предписаниями, все собрано в табличку. Ну мэджик!!!
😀 Разметка данных и формирование базы знаний — самый непростой, кропотливый, но интересный процесс (пост раз, пост два)
Этап разметки был честно поделен пополам с AI Studio: очередным скриптом в Студию отправлялись API-запросы с текстами определений и довольно сложным промптом, в котором были поставлены две основные задачи: 1) сортировать кейсы на ценные и неценные для RAG и 2) вытаскивать из текстов разные данные и раскладывать их в табличку. Ключевые данные — тексты и описания оспариваемых креативов, суммаризация сути дела, позиции и аргументов ФАС, а также собственная оценка нейросети по шкале от 1 до 10 того, насколько дело ценное для RAG.
После этого я вычитывала эти саммери, меняла иной раз данную нейросетью оценку, много думала о том, по каким параметрам делать итоговый отбор в RAG, насколько в этом процессе можно положиться на нейросеть без отсмотра кейсов собственными глазами. Во всем процессе работы над ботом этот этап был самым длительным, но и самым увлекательным — такого дикого креатива мало где еще насмотришься. Эта деятельность принесла идею для рубрики, обещающей быть самой яркой в канале: #мудростьФАС, обзор самыхкринжовых смешных и примечательных кейсов (спонсором этой рубрики могла бы быть не к ночи помянутая компания Ёбидоёби).
Всего у меня было 6 заплывов (я их называла для себя батчами): первый в 100, 4 по 200 и последний сразу аж на 1100 для ровного счета. Так из 2 тысяч дел в RAG итоге вошло 730.
В сегодняшнем посте я хочу рассказать о первых этапах работы над ботом (а завтра – о последних) #ботоводство. Пока рассказ короткий и верхнеуровневый, о каждом этапе (и даже отдельных больших подзадачах) я буду писать отдельно в деталях, а этот и завтрашний пост позже пополнять ссылками.
Сразу был понятен контур Telegram бот + нейросеть + RAG по рекламному законодательству. Но довольно много бурных обсуждений
⁃ RAG с руководствами ФАС (этими самыми);
⁃ RAG по делам о лекарствах и БАД как сфере, в которой у меня много опыта;
⁃ RAG по какому-то конкретному региону (УФАСу).
Все они были отброшены как
Было решено действовать по принципу go big or go home и сразу делать масштабный RAG с решениями со всех регионов, по всем рынкам и всем статьям ФЗ «О рекламе».
Этот этап частично был параллельным первому (я наскрапила практику по лекарствам и БАДам, увидела, какие это слезы
Удивительные ощущения настоящего колдунства от работы кода, ведь то, что руками делалось бы неделями, свершилось за пару часов: скачано несколько тысяч файлов с определениями/решениями/предписаниями, все собрано в табличку. Ну мэджик!!!
Этап разметки был честно поделен пополам с AI Studio: очередным скриптом в Студию отправлялись API-запросы с текстами определений и довольно сложным промптом, в котором были поставлены две основные задачи: 1) сортировать кейсы на ценные и неценные для RAG и 2) вытаскивать из текстов разные данные и раскладывать их в табличку. Ключевые данные — тексты и описания оспариваемых креативов, суммаризация сути дела, позиции и аргументов ФАС, а также собственная оценка нейросети по шкале от 1 до 10 того, насколько дело ценное для RAG.
После этого я вычитывала эти саммери, меняла иной раз данную нейросетью оценку, много думала о том, по каким параметрам делать итоговый отбор в RAG, насколько в этом процессе можно положиться на нейросеть без отсмотра кейсов собственными глазами. Во всем процессе работы над ботом этот этап был самым длительным, но и самым увлекательным — такого дикого креатива мало где еще насмотришься. Эта деятельность принесла идею для рубрики, обещающей быть самой яркой в канале: #мудростьФАС, обзор самых
Всего у меня было 6 заплывов (я их называла для себя батчами): первый в 100, 4 по 200 и последний сразу аж на 1100 для ровного счета. Так из 2 тысяч дел в RAG итоге вошло 730.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍2❤1👏1
Это собственно вариант (самый простой) реализации того самого RAG: непосредственный процесс поиска (retrieval) кейсов в базе знаний и обогащения (augmentation) промпта для нейросети.
RAG‑подход использует «эмбеддинги» — числовые отпечатки смысла текста, которые позволяют сравнивать документы по содержанию. Каждое отобранное на предыдущем этапе определение было превращено в такой эмбеддинг с помощью специальной нейросети. Затем мы со Студией сделали код, который вычисляет косинусное расстояние
Сделав корпус эмбеддингов, я на 20 тестовых делах проверяла, как он работает, действительно ли косинусное расстояние помогает определить релевантные дела (спойлер надо?
Подробный пост об этом здесь. #ботоводство
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Делай RAG
Кто видел предыдущий пост — пардон 😊 вот правильный! Со спокойной душой можно теперь написать про последний этап пайплайна — и пока еще не разойтись, есть несколько общих идей и накопленная за прошедшие месяцы рефлексия о том, какие в воронке минусы, и как…
🔥11❤3 1
Делай RAG
Любуюсь 🥰 приближающимся к первому круглому значению числу подписчиков, горячо всех приветствую и продолжаю рассказ #ботоводство. Сегодня об айтишно-продуктовом блоке истории явления бота миру.
😀 Разработка логики бэкэнда бота и работа над промптами
Под бэкэндом я понимаювсё, что в файлe backend_logic.py всё, что может быть легко перенесено в другую продуктовую оболочку, например, на одностраничник. Я не уверена, правильно ли я использую термин бэкэнд, но AI Studio мне не возражала и все понимала, так что считаю, что все ок!
Что делает бэкэнд:
🤩 принимает файлы и тексты, файлы ресайзит;
🤩 отправляет уменьшенные файлы и тексты на предобработку по API в Gemini. Про предобработку буду писать отдельно;
🤩 для полученного результата предобработки создаётся эмбеддинг, вычисляется косинусное сходство между этим эмбеддингом и эмбеддингами из корпуса (корпус эмбеддингов — это результат предыдущего этапа);
🤩 из корпуса выбираются (retrieval) топ-10 дел с наибольшим косинусным сходством, заранее подготовленные описания дел вставляются (augmentation) в промпт на подготовку заключения;
🤩 обогащенный промпт отправляется по API в Gemini, Gemini генерирует заключение;
🤩 скрипт вставляет в заключение ссылку на кейс в базе ФАС и добавляет статичные дисклеймеры моего сочинения (если вы пробовали бот, то видели одинаковый блок в конце каждого заключения).
Бэкэнд не бэкэнд без двух промптов, содержание которых также было предметом долгого обдумывания. И продолжает им быть, ведь неотъемлемый компонент развития проекта — улучшение промпта. Именно для этого я прошу обратную связь, особенно от коллег-юристов, самую драгоценную.
😀 Продуктовая часть — сценарий бота и отладка
Это продумывание того, как бот взаимодействует с пользователем (то есть все кнопочки, окошки, их содержание, последовательность и прочие мелочи функционала), описание этого сценария в техническом задании-промпте, и много-много итераций локального тестирования (то есть сервером выступал мой ноутбук).
Этот этап был вторым самым длительным и богатым на тяжелые вздохи. Про вайб-кодинг здесь многие слышали, а слышали ли вы о😐 (здесь починит, там поломает, без спроса «улучшит», что-то потеряет… ух). В общем, если бы не супруг, который за пару вечеров поправил все косяки, релиз состоялся бы, но, наверное, на недели две позже и без такой радости.
😀 Переезд на сервер и релиз
Когда мы убедились, что все работает хорошо, то я очистила итоговый код от постыдных нейросетевых комментариев, сделала репозиторий на Github (уже две звезды, ура!)) и организовала пространство на render.com. Тоже не с первого раза, а где-то с третьего: одна из нейросетей мне наврала, что для Telegram-бота нужно создавать Web Service, хотя вообще-то нужен Background Worker, а также я была озадачена сокрытием базы знаний и корпуса эмбеддингов в приватном репозитории.
Но все решилось, запустилось, я написала коллегами и в чат ilovedocs и-и-и
———вы находитесь здесь———
Каждый этот этап можно расписать на три поста, что меня поражает, ведь проделанная работа кажется довольно простой, а продукт — крошка-малышка. Ну поражает и поражает, написать все равно очень хочется, поэтому не переключайтесь!😀
Под бэкэндом я понимаю
Что делает бэкэнд:
Бэкэнд не бэкэнд без двух промптов, содержание которых также было предметом долгого обдумывания. И продолжает им быть, ведь неотъемлемый компонент развития проекта — улучшение промпта. Именно для этого я прошу обратную связь, особенно от коллег-юристов, самую драгоценную.
Это продумывание того, как бот взаимодействует с пользователем (то есть все кнопочки, окошки, их содержание, последовательность и прочие мелочи функционала), описание этого сценария в техническом задании-промпте, и много-много итераций локального тестирования (то есть сервером выступал мой ноутбук).
Этот этап был вторым самым длительным и богатым на тяжелые вздохи. Про вайб-кодинг здесь многие слышали, а слышали ли вы о
муж-дебагинге? Если с первым драфтом кода у AI Studio все очень неплохо, то с отладкой Когда мы убедились, что все работает хорошо, то я очистила итоговый код от постыдных нейросетевых комментариев, сделала репозиторий на Github (уже две звезды, ура!)) и организовала пространство на render.com. Тоже не с первого раза, а где-то с третьего: одна из нейросетей мне наврала, что для Telegram-бота нужно создавать Web Service, хотя вообще-то нужен Background Worker, а также я была озадачена сокрытием базы знаний и корпуса эмбеддингов в приватном репозитории.
Но все решилось, запустилось, я написала коллегами и в чат ilovedocs и-и-и
———вы находитесь здесь———
Каждый этот этап можно расписать на три поста, что меня поражает, ведь проделанная работа кажется довольно простой, а продукт — крошка-малышка. Ну поражает и поражает, написать все равно очень хочется, поэтому не переключайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤7⚡2🤩1
Добрый день! ☕️ Как прошел ваш пятничный вечер? Мой был очень эмоциональным, ведь вчера под раскаты грома в темной комнате, освещаемой молниями, я пыталась воссоединиться с базой данных, ведение которой прописано в коде бота.
Код по задумке должен собирать три типа данных:
🤩 log-файлы на каждого пользователя с данными о его активности и security-лог с данными о нарушениях правил безопасности;
🤩 агрегированные данные в базе данных SQLite (файл в формате .db);
🤩 сохранение загруженного пользователем контента (файлы, картинки, тексты).
Бот работает на сервере сервиса render.com и все эти данные должен сохранять в так называемом persistent disk, который создавался вместе с запуском бота на сервере. Этот диск помогает сохранять локальные файлы при перезапуске бота. Сначала я надеялась, что я смогу сделать код, который будет в каком-то постоянном режиме вытягивать данные из этого диска, но это оказалось в принципе невозможно. Потому что render.com вот такой вот супер-секьюрный. Возможным оказалось скачивать файлы на момент Х, и AI Studio подсказала мне очень легкий, простейший способ это сделать…
Легкий способ обернулся примерно часом мытарств с так называемым SSH-ключом🥺 Это такой способ подключать свой компьютер к удаленному серверу через пару ключей — приватный и публичный. Ваш компьютер выдает вам публичный ключ, вы его вносите на сервер, затем через Терминал вы обращаетесь компьютером к серверу, он сверяет публичный и приватный ключи, и вы получаете все, что вам надо с диска.
Я не буду вдаваться в детали, почему все это было долго: основная причина состоит в моей личной малограмотности (я не понимаю как по-нормальному пользоваться Терминалом), а Студия почему-то плохо определяла причины ошибок и давала неправильные советы по определению места нахождения данных на диске. Почему-то Студия игнорировала мои оказавшиеся правильными идеи и до последнего уверяла меня, что я просто неправильно скопировала ключ…🙃
Короче, после успешной стыковки с сервером оказалось, что SQLite база не ведется, а пользовательский контент не сохраняется.
🤪 🤪 🤪 🤪
Грустно? Мне тоже стало очень грустно!☹️ Я стала думать о том, как же хорошо, что не сообщила о боте на очень широкую аудиторию, и почему я не проверила это все до релиза, это же очевидный такой 8 этап!
Но потом мне перестало быть грустно, ведь логи записались нормально!
Сейчас за 5 минут мы с Chat GPT o4-mini-high (я пока обиделась на Студию) сделали скрипт, который собрал мне данные из логов в табличку. Пока такой костыль, базу данных, конечно же, буду чинить после выходных.
И вот первая статистика использования бота:
За почти 4 дня на ~21:00 вечера пятницы😀 😀 уникальных пользователей направили 😀 😀 запросов
😀 пользователя (2 юриста, 1 ИИ-энтузиаст и 1 ответственный гражданин) дали обратную связь в опроснике
😀 пользователя оставили развернутый комментарий.
Назвавшиеся юристами пользователи поставили заключению решительные двойки! Ну и правильно, коллеги, давайте как-то воспитывать этих роботов (правда по логам одной из коллег в качестве заключения указана внутренняя ошибка на стороне Google… такому и правда сложно ставить хорошие оценки).
Оптимизма вечеру добавила мысль, что в самом ближайшем времени нас не ждет ИИ-апокалипсис🚀 , ведь ИИ сам себя довольно плохо дебажит. И данные собирать без супервизии не умеет.
А в мои ближайшие планы добавилась отладка сбора данных и просмотр каких-то базовых 101 уроков по программированию (да хотя бы в Терминале разобраться).
Хороших выходных, коллеги!
#ботоводство
Код по задумке должен собирать три типа данных:
Бот работает на сервере сервиса render.com и все эти данные должен сохранять в так называемом persistent disk, который создавался вместе с запуском бота на сервере. Этот диск помогает сохранять локальные файлы при перезапуске бота. Сначала я надеялась, что я смогу сделать код, который будет в каком-то постоянном режиме вытягивать данные из этого диска, но это оказалось в принципе невозможно. Потому что render.com вот такой вот супер-секьюрный. Возможным оказалось скачивать файлы на момент Х, и AI Studio подсказала мне очень легкий, простейший способ это сделать…
Легкий способ обернулся примерно часом мытарств с так называемым SSH-ключом
Я не буду вдаваться в детали, почему все это было долго: основная причина состоит в моей личной малограмотности (я не понимаю как по-нормальному пользоваться Терминалом), а Студия почему-то плохо определяла причины ошибок и давала неправильные советы по определению места нахождения данных на диске. Почему-то Студия игнорировала мои оказавшиеся правильными идеи и до последнего уверяла меня, что я просто неправильно скопировала ключ…
Короче, после успешной стыковки с сервером оказалось, что SQLite база не ведется, а пользовательский контент не сохраняется.
Грустно? Мне тоже стало очень грустно!
Но потом мне перестало быть грустно, ведь логи записались нормально!
Сейчас за 5 минут мы с Chat GPT o4-mini-high (я пока обиделась на Студию) сделали скрипт, который собрал мне данные из логов в табличку. Пока такой костыль, базу данных, конечно же, буду чинить после выходных.
И вот первая статистика использования бота:
За почти 4 дня на ~21:00 вечера пятницы
Назвавшиеся юристами пользователи поставили заключению решительные двойки! Ну и правильно, коллеги, давайте как-то воспитывать этих роботов (правда по логам одной из коллег в качестве заключения указана внутренняя ошибка на стороне Google… такому и правда сложно ставить хорошие оценки).
Оптимизма вечеру добавила мысль, что в самом ближайшем времени нас не ждет ИИ-апокалипсис
А в мои ближайшие планы добавилась отладка сбора данных и просмотр каких-то базовых 101 уроков по программированию (да хотя бы в Терминале разобраться).
Хороших выходных, коллеги!
#ботоводство
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🤝3🔥2
Это бот в этот непогожий понедельник. Первый раз прилег по необъяснимым причинам — видела по логам сервера, что кто-то пришел попользоваться ботом, но, как и я, на большую часть запросов получал грустное
Но я пытаюсь смотреть на #ботоводство как на уникальную жизненную ситуацию: возможность из каждой новой проблемы получить новое знание. Так, например, я узнала, что Google любезно сообщает об инцидентах здесь, а если никакого глобального инцидента нет, то предлагает посмотреть, что могло пойти не так с конкретно вашим проектом (впрочем, и на моем проекте тоже не было инцидентов).
Задуплилась не только Gemini, но и сам бот, причем и в бэкэндовой части, и в телеграмской. Например, бэкэнд не генерировал ссылки на базу ФАС, а оставлял только caseID (это номера, которые в базе ФАС присвоены страницам отдельных дел), который нейросеть подбирает из аугментированного второго промпта. А в интерфейсе Телеграма бот ругал меня за вводимый между запросами текст, не распознавал его как креатив и выдавал окно, которое должно выдаваться при прохождении опросника. Это все я поправилапростым советским рубильником, перезапустив бота на сервере.
Короче, день проходит с ощущением загадки, которую я не могу разгадать❓ Буду признательна, если у кого-то сегодня найдется минутка потыкать бота, поглядеть, сохраняются ли ошибки 🥱
500 An internal error has occurred. Please retry or report in https://developers.generativeai.google/guide/troubleshooting
Но я пытаюсь смотреть на #ботоводство как на уникальную жизненную ситуацию: возможность из каждой новой проблемы получить новое знание. Так, например, я узнала, что Google любезно сообщает об инцидентах здесь, а если никакого глобального инцидента нет, то предлагает посмотреть, что могло пойти не так с конкретно вашим проектом (впрочем, и на моем проекте тоже не было инцидентов).
Задуплилась не только Gemini, но и сам бот, причем и в бэкэндовой части, и в телеграмской. Например, бэкэнд не генерировал ссылки на базу ФАС, а оставлял только caseID (это номера, которые в базе ФАС присвоены страницам отдельных дел), который нейросеть подбирает из аугментированного второго промпта. А в интерфейсе Телеграма бот ругал меня за вводимый между запросами текст, не распознавал его как креатив и выдавал окно, которое должно выдаваться при прохождении опросника. Это все я поправила
Короче, день проходит с ощущением загадки, которую я не могу разгадать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2 1
Ура, первое обновление! #commits
Ох, и тяжело же оно далось. И планировалось чуть раньше, и обновлялось вообще не то, что было задумано.
Что сделано:
🤩 при ошибке 500, которая появлялась в понедельник, бот теперь будет уведомлять пользователя о том, что есть проблема на стороне Google, и предлагать загрузить креатив попозже или почитать канал;
🤩 администратор бота будет получать сигнал о том, что кто-то из пользователей получил ошибку 500;
🤩 настроено сохранение загруженных картинок после ресайза на диск сервера;
🤩 расширено количество записей, которые вносятся в пользовательский лог:
содержимое пользовательского текстового сообщения;
количество потраченных токенов и метрики API;
полный стек-трейс при возникновении ошибок;
caseID и косинусное расстояние для top-10 релевантных дел, которые идут в Промпт 2 (тот промпт, что запрашивает итоговое заключение);
текст итогового Промпта 2;
путь к сохраненной после ресайза картинке.
А еще починилась неожиданно обнаруженная проблема стирания всех файлов и логов при ручном перезапуске бота, но это отдельная увлекательная история, чтобы рассказать её, мне нужно собраться с духом🙂
Потестите, пожалуйста😊
Ох, и тяжело же оно далось. И планировалось чуть раньше, и обновлялось вообще не то, что было задумано.
Что сделано:
содержимое пользовательского текстового сообщения;
количество потраченных токенов и метрики API;
полный стек-трейс при возникновении ошибок;
caseID и косинусное расстояние для top-10 релевантных дел, которые идут в Промпт 2 (тот промпт, что запрашивает итоговое заключение);
текст итогового Промпта 2;
путь к сохраненной после ресайза картинке.
А еще починилась неожиданно обнаруженная проблема стирания всех файлов и логов при ручном перезапуске бота, но это отдельная увлекательная история, чтобы рассказать её, мне нужно собраться с духом
Потестите, пожалуйста
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👏4❤2
10 дней прошло с релиза бота, а дел по нему уже на полноценный рабочий день – когда рассказывали про вайб-кодинг, об этом умолчали 🥺
Коротко(нет) расскажу о своих ботных приключениях за последнее время. #ботоводство
🤩 Недавно я жаловалась, что логи не пишутся в базу данных, поэтому немало времени ушло на то, чтобы разобраться, как она устроена и что вообще делает.
Ответ убил — в базу данных логи и не должны были записываться☕ Но она очень важна и нужна для учета расходования ежедневного лимита и нарушений правил и блокировок. А я ее чуть было не удалила.
Также было принято решение не выносить содержимое логов в какой-то структурированный вид на сервере, а на данном этапе просто их выгружать и локальным скриптиками собирать в таблицы.
🤩 Из-за понедельничной аварии на боте и его мануальной перезагрузки вскрылся важный фейл — все логи и база данных почему-то удаляются при перезапуске бота, хотя должны писаться на persistent disk.
Долгая диагностика привела к причине, бичующей даже самых сеньористых айтишников: в переменных окружения в адресе диска в самом начале пути к диску //// НЕ СТОЯЛО КОСОЙ ЧЕРТЫ //// Это вам не юриспруденция, здесь все точно. Помянем утраченные логи за три дня😵
🤩 Я вообще много нового узнала про собственный код за эту неделю и осознала, насколько нужно быть аккуратной в формулировках промптов. Не напишешь конкретно, что PDF-файлы тоже нужно ресайзить и сохранять — этого и не будет)) ну, будет, в очереди на апдейт.
🤩 Много эмоций потрачено на отношения с нейросетями.
На время переезжала со всеми делами в chat gpt, сделала все по культуре: проект, актуальные .py-файлы, контекст о продукте и свои ожидания по ответам. Объясняет как устроен код он весьма неплохо, но попросить что-то переписать/дописать и объяснить, где это вставить — это просто провал, причем даже в👑 great for coding
👑 модели o4-mini-high.
Вернулась обратно в AI Studio, взаимодействуем в формате «в новый чат кидаю актуальную редакцию файлов с кодом», и с волшебной формулировкой «напиши минимально необходимые изменения в коде» по изолированным небольшим вопросам он неплохо отрабатывает. Все это было до вчерашнего релиза GPT-5, но почему-то я не преисполнена оптимизма, хотя, конечно, попробую.
🤩 Самое важное — отладка (уже почти наизусть выучила!) пайплайна внесения изменений через Терминал и
Локально у меня существует папка, которая полностью дублирует актуальную версию кода на Github с .sh файлом переменных окружения для локального тестирования. Файлы с кодом я правлю в Jupyter Lab, тестирую на специально созданном тестовом боте. Проверенные изменения командами
🤩 Пока я занималась вчерашними коммитами, резко назрели изменения на сегодняшние.
А именно Gemini решила пожестить и позапрещать невинный контент, а также забанить одну пользовательницу. Механизма разбана у меня не оказалось✌️ (помните про точность формулировок промптов?), его я уже написала. Но нужно еще начать логировать фидбек от API с причинами отказа смотреть контент и поправить UX-часть: изменить подход к блокировкам и сделать более дружелюбные поясняющие окошки для пользователей бота.
🤩 Ну и напоследок — я наскрапила новых кейсов для, собственно, RAGа, но пока руки не доходят ими нормально заняться.
Попутно еще нашла косяки в уже имеющейся базе знаний. Самый яркий — мудрое Ненецое УФАС написало там, где все УФАСы размещают текст решения, фразу
А само решение прицепило .doc-файлом. Исполнительный и инициативный Gemini при разметке сделал из «по тексту решения» целый кейс, где Кагоцел рекламировала счастливая семья, а ФАС признал это гарантией положительного действия. И это сочинение уже выдавалось пользователям в заключение, стыд!
Кто-то помнит пост недельной давности о ближайших планах по развитию бота? Мне теперь немного смешно его вспоминать, по розовым очкам пошла маленькая пока еще трещинка.
Сдамся ли я всем этим багам? Да ни за что! Оставайтесь на связи, мне самой уже интересно, что я буду думать еще через неделю.
Коротко
Ответ убил — в базу данных логи и не должны были записываться
Также было принято решение не выносить содержимое логов в какой-то структурированный вид на сервере, а на данном этапе просто их выгружать и локальным скриптиками собирать в таблицы.
Долгая диагностика привела к причине, бичующей даже самых сеньористых айтишников: в переменных окружения в адресе диска в самом начале пути к диску //// НЕ СТОЯЛО КОСОЙ ЧЕРТЫ //// Это вам не юриспруденция, здесь все точно. Помянем утраченные логи за три дня
На время переезжала со всеми делами в chat gpt, сделала все по культуре: проект, актуальные .py-файлы, контекст о продукте и свои ожидания по ответам. Объясняет как устроен код он весьма неплохо, но попросить что-то переписать/дописать и объяснить, где это вставить — это просто провал, причем даже в
Вернулась обратно в AI Studio, взаимодействуем в формате «в новый чат кидаю актуальную редакцию файлов с кодом», и с волшебной формулировкой «напиши минимально необходимые изменения в коде» по изолированным небольшим вопросам он неплохо отрабатывает. Все это было до вчерашнего релиза GPT-5, но почему-то я не преисполнена оптимизма, хотя, конечно, попробую.
git. Локально у меня существует папка, которая полностью дублирует актуальную версию кода на Github с .sh файлом переменных окружения для локального тестирования. Файлы с кодом я правлю в Jupyter Lab, тестирую на специально созданном тестовом боте. Проверенные изменения командами
git status, git add, git commit и git push быстро и элегантно записываются в репозиторий. Красота!А именно Gemini решила пожестить и позапрещать невинный контент, а также забанить одну пользовательницу. Механизма разбана у меня не оказалось
Попутно еще нашла косяки в уже имеющейся базе знаний. Самый яркий — мудрое Ненецое УФАС написало там, где все УФАСы размещают текст решения, фразу
по тексту решения
А само решение прицепило .doc-файлом. Исполнительный и инициативный Gemini при разметке сделал из «по тексту решения» целый кейс, где Кагоцел рекламировала счастливая семья, а ФАС признал это гарантией положительного действия. И это сочинение уже выдавалось пользователям в заключение, стыд!
Кто-то помнит пост недельной давности о ближайших планах по развитию бота? Мне теперь немного смешно его вспоминать, по розовым очкам пошла маленькая пока еще трещинка.
Сдамся ли я всем этим багам? Да ни за что! Оставайтесь на связи, мне самой уже интересно, что я буду думать еще через неделю.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7😁5👍3
Пока я перенастраиваю в боте систему цензуры и блокировок и готовлю для первичной разметки нейросетью новый кусочек RAGа, хочу рассказать о паре кейсов из практики УФАСов культурной столицы и её области. Оба они поразили меня тем, что в разных местах Интернета можно увидеть профеминистический дискурс, но найти его, копошась в практике ФАС, да еще и в таких формулах я совсем не ожидала. #мудростьФАС
Какие в Петербурге живут разные люди! Одни делают мемы, считая слово «титечная» чистым петербуржством, а другие обращаются в ФАС (из каких именно побуждений, к сожалению, неизвестно) и затевают вот это дело.
Решение довольно коротко и четко повторяет позицию Рекламного совета:
А значит, нарушена ч. 6 ст. 5 Закона о рекламе, повелено проекцию снять. Петербуржцы если среди подписчиков есть, поглядите при случае, светятся ли эти 8 букв все еще на пилястре Невского, 15?
Гораздо более эмоциональная разборка произошла из-за рекламы, изображения которой мне не удалось нагуглить, но описана она следующим образом:
Как мы узнаем далее из решения, девушка багет держала вовсе не для того, чтобы порезать ножом и сделать из него бутерброд.
Мнение петербуржцев о креативе застройщика КВС суммировали так: «…такую рекламу … в таком культурном городе как наш…», «… откровенная пошлость…», «… унижает российских девушек»!!!
Основные тезисы Ленинградского УФАСа по поводу этого остроумнейшего креатива:
🤩 реклама объективизирует и сексуализирует женский образ, что считается неэтичным, поскольку влечет за собой отрицание субъективности женщины [наверное, имелась в виду субъектность. Все равно круто, жду кейсов, где будет еще слово агентность];
🤩 отождествление человека и неодушевленного объекта является унизительным для человека;
🤩 оборот «на всё готовая» в обычном
🤩 рекламодатель в данном случае грубо попирает традиционные ценности российского общества [как вам? Прям топ-10 неожиданных аниме-концовок].
Думаете все? Нет, ведь этот кейс еще примечателен дискуссией о том, что представляют собой традиционные ценности! Застройщик сообщил Рекламному совету:
Своего мнения комиссия по поводу этого убедительного довода не высказала. Праведный путь и социальные задачи у каждого свои, конечно.
Интересно, что запретить эти же самые вещи можно было бы с позиций скорее ханжеских, но УФАСы предпочли какой-то человекоцентричный подход и защиту личного достоинства. И, преисполнившись ощущением righteousnessности, заявляю в конце патетично, что по моим меркам этот путь решает очень даже достойные социальные задачи☕️
Какие в Петербурге живут разные люди! Одни делают мемы, считая слово «титечная» чистым петербуржством, а другие обращаются в ФАС (из каких именно побуждений, к сожалению, неизвестно) и затевают вот это дело.
Решение довольно коротко и четко повторяет позицию Рекламного совета:
… использование просторечия, сведение женщины исключительно к одной части её тела могут рассматриваться как унижение женского достоинства.
А значит, нарушена ч. 6 ст. 5 Закона о рекламе, повелено проекцию снять. Петербуржцы если среди подписчиков есть, поглядите при случае, светятся ли эти 8 букв все еще на пилястре Невского, 15?
Гораздо более эмоциональная разборка произошла из-за рекламы, изображения которой мне не удалось нагуглить, но описана она следующим образом:
На рекламных баннерах было представлено изображение молодой девушки в шортах, которая держит в руках французский багет, и следующим текстом: «НА ВСЁ ГОТОВАЯ квартира с отделкой + мебель в подарок
Как мы узнаем далее из решения, девушка багет держала вовсе не для того, чтобы порезать ножом и сделать из него бутерброд.
Мнение петербуржцев о креативе застройщика КВС суммировали так: «…такую рекламу … в таком культурном городе как наш…», «… откровенная пошлость…», «… унижает российских девушек»!!!
Основные тезисы Ленинградского УФАСа по поводу этого остроумнейшего креатива:
узусе не соотносится с квартирой, но ассоциативно связан с человеческими характеристиками. Подтверждением этого тезиса может служить поисковая выдача Яндекса при запросе данного словосочетания [жду, когда подтверждением тезиса будет считаться ответ нейросетей];Думаете все? Нет, ведь этот кейс еще примечателен дискуссией о том, что представляют собой традиционные ценности! Застройщик сообщил Рекламному совету:
…красивая женщина на кухне - это то, что так хочется мужчине с традиционными ценностями! Поэтому компания делает рекламу с социальным оттенком и призывает девушек ждать мужей на кухне. А мужчина, зная, что его ждет такая женщина дома, никогда не сойдет с праведного пути [забавно, что утром я искала в голове, как по-русски будет слово righteousness]. Такие семьи будут надежны и долговечны и, конечно, все это только увеличит деторождаемость в стране. А значит, наша компания выполняет еще одну важную социальную задачу - увеличение деторождаемости в РФ.
Своего мнения комиссия по поводу этого убедительного довода не высказала. Праведный путь и социальные задачи у каждого свои, конечно.
Интересно, что запретить эти же самые вещи можно было бы с позиций скорее ханжеских, но УФАСы предпочли какой-то человекоцентричный подход и защиту личного достоинства. И, преисполнившись ощущением righteousnessности, заявляю в конце патетично, что по моим меркам этот путь решает очень даже достойные социальные задачи
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤10😁6👍2💯2
Сообщаю информацию о своей хозяйственной деятельности! Приходите послушать 💅 #spectacle
UPD — онлайн тоже вроде как есть https://moscow-legal-hackers.timepad.ru/event/3497617/
UPD — онлайн тоже вроде как есть https://moscow-legal-hackers.timepad.ru/event/3497617/
Please open Telegram to view this post
VIEW IN TELEGRAM
moscow-legal-hackers.timepad.ru
Vibe Coding / События на TimePad.ru
На митапе 28 августа поговорим о феномене vibe coding.
🔥5👏2