Чешская Швейцария и немного Дрездена. Паутина
Перу и Боливия. Зима-весна 2011. Дорога смерти, обрыв
Перу и Боливия. Зима-весна 2011. Солончак Уюни
Март 2017. Берлин — Роттердам — Дюссельдорф. Яблоко-глобус на стене дома в Берлине
Осень. %!s(<nil>)
Весна 2012. Германия — Франция — Италия. На побережье
Киев, лето 2009. Тут мы жили
Лавандовые поля. %!s(<nil>)
Исландия 2023. Водопад Сельфосс
Мальта, март 2014. Рыжий хозяин Мдины
Байкал, остров Ольхон, Хужир. Март 2018. Лёд
Новый год 2008 (Норвегия, Швеция, Дания). Норвегия, Нордсетер
Перу и Боливия. Зима-весна 2011. Куско, рынок
Корфу 2023.
Байкал, остров Ольхон, Хужир. Март 2018. Ольхон
Весна 2012. Германия — Франция — Италия. Город Эрки
Тайланд, Индонезия, Сингапур (зима 2010). В Сингапурском зоопарке. Попугай
Стамбул 2024. %!s(<nil>)
Мальта, март 2014. Я
Перу и Боливия. Зима-весна 2011. Дорога смерти, у пропасти
Март 2017. Берлин — Роттердам — Дюссельдорф. Дюссельдорф
Чешская Швейцария и немного Дрездена. Корни
Осень. %!s(<nil>)
Март 2017. Берлин — Роттердам — Дюссельдорф. Саморез
Тайланд, Индонезия, Сингапур (зима 2010). Собака
Тайланд, Индонезия, Сингапур (зима 2010). Боробудур
Берлин, Люббенау, Потсдам. Май 2018. Бюст в Потсдаме
Весна 2012. Германия — Франция — Италия. Джек Воробей
Байкал, остров Ольхон, Хужир. Март 2018. Восход на мысе Бурхан (ir)
Весна 2012. Германия — Франция — Италия. Лувр
Лето 2008 (Куба). Саньтяго де Куба

Недавно я добавил в свой блог 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 лет.