Разработка на уровне навыков

Этот же пост в социальных сетях

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

Сказано – сделано. Вместе с Codex’ом спроектировал, как существующие файлы вида <YYYY>/<MM>/[slug].md сконвертировать в директории вида <YYYY>/<MM>/[slug], в которых будут храниться shared.yaml, ru.md и en.md. Написал с помощью Codex’а небольшой скрипт по переименованию файлов и директорий. Запустил – сработало. Добавил в код блога переключатель, префикс для определения языка и т.п.

Осталось дело за малым – перевести сами посты. Поскольку постов у меня уже накопилось около трёх сотен, я понял, что мне лень будет каждый раз при переводе поста указывать, что переводить слово в слово не надо, тон надо сохранить профессиональный, общие метаданные надо вынести в shared.yaml и т.д. и т.п. Решил я для этого создать проектный навык. Дал задание Codex’у – он этот навык очень хорошо сгенерировал и сохранил. Теперь перевести пост очень просто – вызываешь навык и передаешь этому навыку slug поста. Почти как вызвать функцию.

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

Поручил Codex’у создать такой навык: сначала выбирает самый старый непереведённый пост, а потом к нему применяет навык перевода поста (см. первое фото). Получается, что у меня один навык вызывает другой навык – полная аналогия с тем, как одна функция в программе вызывает другую.

Дальше оказалось, что ретроспективный перевод постов – процедура длительная, поскольку перевод одного поста занимает около 4 минут, а также съедает около 10% пятичасового лимита токенов. То есть я за 5 часов могу перевести только 10 постов. Выходящие сейчас посты, в основном, ссылаются на недавно вышедшие посты, а до них очередь перевода дойдёт не скоро.

Поэтому пришлось написать ещё один навык, который рекурсивно обходит дерево ссылок из одних постов в другие и выстраивает их в цепочку. Например, данный пост у меня ссылается на пост «Что у блога под капотом?», и это породило цепочку из 50-ти непереведённых постов, для которых английскую версию необходимо создать в первую очередь (см. второе фото). Все эти посты я за несколько вечеров неспеша перевёл. Так что теперь ничто не мешает мне перевести и сам этот пост на английский язык (см. третье фото).

Раньше мы писали программы на уровне функций и процедур, а теперь программируем ИИ-агентов на уровне навыков. Интересно, что же будет дальше?

  • Создание навыка по поиску самого старого непереведённого поста и переводу этого поста с использованием уже существующего навыка
  • Результат работы навыка по построению цепочки постов для перевода
  • Перевод текущего поста на английский язык