Блог #Telegram

Мальта, март 2014. Вид со стены Мдины
Весна 2012. Германия — Франция — Италия. Швейцария
Тайланд, Индонезия, Сингапур (зима 2010). В Сингапурском зоопарке. Я и белый тигр :)
Москва-Берлин 2021. Я с Ольчуном в аэропорту на пути в Берлин
Ирландия, март 2015. Протест против взымания платы за воду
Исландия 2023.
Мальта, март 2014. Вид на Мдину
Март 2017. Берлин — Роттердам — Дюссельдорф. Вид на мост Эразма aka Erasmusbrug
Новый год 2008 (Норвегия, Швеция, Дания). Спальный район Осло
Берлин, Люббенау, Потсдам. Май 2018. Клумба-зонт
Перу и Боливия. Зима-весна 2011. Железная дорога
Берлин, Люббенау, Потсдам. Май 2018. Лодка в Люббенау
Зимний Берлин.
Лето 2008 (Куба). И еще раз я возле автописты
Тойфельсберг. %!s(<nil>)
Март 2017. Берлин — Роттердам — Дюссельдорф. Дюссельдорф
Прага, май 2017. Дорога со ступеньками
Новый Год 2009 (Амстердам). Знак
Первый Россиийский семинар по CMS Drupal. Друпликон и моя тень
Лето 2008 (Куба). "Пляж" у отеля
Новый Год 2009 (Амстердам). Амстердам, улица Дамрак, уличный артист
Ещё немного майского Берлина. %!s(<nil>)
Весна 2012. Германия — Франция — Италия. Страсбург. Наше посольство
Хорватия, Млини 2017. Млини, море
Лавандовые поля. %!s(<nil>)
Тенерифе.
Берлин, Люббенау, Потсдам. Май 2018. Ольчик в Потсдаме
Мальта, март 2014. Мдина
Весна 2012. Германия — Франция — Италия. Митинг в Берлине
Весна 2012. Германия — Франция — Италия. Я, Джульетта и мельница
Лавандовые поля. %!s(<nil>)

Недавно я добавил в свой блог romka.eu возможность автоматической трансляции сообщений в мой Телеграм-канал. Делается это полностью автоматически:

  • весь этот блог, это просто иерархия директорий, где каждый пост это одна директория, а текст – файлы index.ru.md и index.en.md в ней. Для удобства, директория управляется системой контроля версий Git, а все исходники отправляются на Github,
  • как только новая запись в блоге прилетает на Гитхаб, запускается мой кастомный воркфлоу send_to_telegram.yml, который находит все изменённые последним коммитом файлы и передаёт их в скрипт post_to_telegram.py
  • post_to_telegram.py берёт на вход локальный путь к блог-посту или галерее и, если в его конфигурации есть настройка telegram: true, то такой пост будет отправлен в канал через API Телеграма,
  • API Телеграма возвращает id сообщения в ответ на отправленное сообщение. Этот айдишник коммитится в файл telegram_mappings.csv.
  • Далее, если в post_to_telegram.py прилетит файл, который уже есть в telegram_mappings.csv, то вместо отправки нового сообщения в Телеграм будет отредактировано существующее.

В принципе, в автоматизации выше нет ничего сверхъестественного. Самое интересное – то, что вообще все перечисленные элементы для автоматизации процесса были полностью сгенерированы для меня ChatGPT.

Надо признаться, что я потратил больше дня на то, чтобы, общаясь с ChatGPT, получить удовлетворительно работающий код, и, скорее всего, у меня примерно столько же времени ушло бы, если бы я писал всё сам (фактически, тут вся работа сводится к отправке простых HTTP-запросов).

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

Фактически, ChatGPT работает как хороший стажёр: выдаёт правдоподобно выглядящий код, который обязательно нужно внимательно поревьюить и в котором почти наверняка есть какие-то требующие исправления косяки.

В своей практике я пробовал использовать несколько других ИИ-инструментов, но пока, к удивлению, ChatGPT остаётся самым адекватным. “К удивлению” – потому что ChatGPT – это модель общего назначения. Я пробовал использовать модельки, специально заточенные под код: ассистент от JetBrains, GitHub Copilot, Claude 3.7 Sonnet. Первые два – невероятно тупые, особенно с учётом того, что они, в отличие от ChatGPT, имеют полный доступ к коду проекта. Последний я не сумел заставить нормально работать: кроме списания денег за каждый запрос к API, он имеет встроенный rate limiter. Любой, даже самый простой запрос, который я ему отправляю, падает с ошибкой превышения лимита. Вероятно, вместе с каждым моим вопросом он пытается отправить в API всю мою кодовую базу. Другого объяснения нарушения лимитов у меня нет.

Вообще, конечно, все эти ИИ-инструменты – это просто фантастика. Лет 10 назад о таком уровне интеллекта ИИ-ассистентов не приходилось даже мечтать. Боюсь представить, во что они эволюционируют за следующие 10 лет.

Досмотрел второй (и последний на данный момент) сезон сериала Severance. Это лучший научно-фантастический сериал, который я когда-либо видел. Лучше даже чем “Чёрное зеркало”. В последнем качество эпизодов очень неравномерное, некоторые совсем слабые, а в “Разделении” ход и плотность событий не теряют своей скорости, а частота высказывания вопроса “да чем же, черт возьми, они там все занимаются?!” растет экспоненциально!

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

Тест автоматической отправки поста из блога romka.eu сразу в Телеграм. Если всё сработает, то это будет первое сообщение в канале.

Этот блог построен с помощью генератора статических сайтов Hugo, а его исходники хостятся на Гитхабе. Github Action отслеживает новые посты, в которых задана опция telegram: true и отправляет их в этот канал, для измененных сообщений он редактирует существующие сообщения в канале.