Краткая предыстория
Моё знакомство с ChatGPT началось ещё во времена модели GPT3.5. Она хорошо писала скетчи, и хорошо решала проблему чистого листа. Но когда ты хотел от неё чего-то определённого, и именно так как ты хочешь, то на это уходило столько времени, что проще и быстрее было это сделать самому.
Потом вышла GPT4, и она уже реально начала экономить моё время.
Я начал пихать в неё код целыми файлами, а её вывод копировать, заменять документ в редакторе, и уже в гите смотреть изменения. И это оказалось настолько удобно!
Но дальше мне понадобилось пихать в неё несколько файлов. Это было либо протаскивание новой переменной через несколько методов. Либо просто удобно в GPT пихнуть определение класса из другого файла, чтобы он не пытался фантазировать, а использовал те методы, что там есть.
Результат мне нравился, время экономилось, но копипаст нескольких файлов туда-сюда - как-то не технологично.
Что делает LetTheTinCanDoIt?
И решил я написать маленькое графическое приложение на питоне, в котором можно открывать папку с проектом, отмечать слева галочками те файлы, которые нужно приложить. А приложение само их приложит к моему запросу. А если в ответе найдёт какие-то файлы, то проапдейтит их на диске.
Писал под свои конкретные задачи, допиливал запросы, добавлял нужные функции.
И получилось очень прикольная вещь, которая мне экономит просто кучу времени!
Да, очень примечательно то, что для написания этого приложения я использовал его же! Пожалуй там 90% кода - авторство GPT.
Очередной велосипед?
Возможно. Я как-то давно пробовал CoPilot и мне он не понравился. Да, он знает весь твой проект, а не только 3 файла которые ты ему передал. Но с LetTheTinCanDoIt у тебя больше контроля над результатом (мне так кажется).
Если кто активно юзает CoPilot, напишите пожалуйста в комментах насколько это сопоставимые решения.
Если кто-то знает что-то похожее, но лучше - тоже обязательно напишите!
Нужен ключик от OpenAI
Приложение использует платный API от OpenAI. Нужно там зарегистрироваться как разработчику, положить на счёт какую-то денюжку, сгенерировать новый ключик, и прописать его в приложение.
Сколько это стоит
До того как я начал эксперементировать с дорогим o1, у меня за 3 месяцу уходило около 6 евро (2 евро в месяц).
Советы по использованию
Не буду рассуждать на тему что правильно писать в запросах. Но о некоторых технических моментах всё же стоит упомянуть.
Большие задачи нужно разбивать на подзадачи. Чем мельче задача, тем больше вероятность получить готовый рабочий код без необходимости откатывать изменения или что-то поправлять. В итоге это экономит время по сравнению с несколькими попытками написать хороший запрос который делает сразу много.
С опытом как-то начинает приходить понимание возможностей модели - что можно затолкать одним запросом, а что нужно делать по-частям.
Очень удобно пользоваться, храня исходники в GIT. Перед каждым запросом я коммичу текущие изменения, после запроса глазами смотрю код, и если это полная фигня (а такое бывает часто, и не только по вине GPT), то просто откатываю их и пишу новый запрос.
Делая какой-то большой логический кусок кода, но разбивая это на запросы, удобно коммитить с --amend
: получил изменения, посмотрел, перепроверил - git commit -a --amend
, и дальше пишешь новый запрос.
Поддержки истории не будет
Во-первых, это нужно делать.
Во-вторых, передавать всю предыдущую историю переписки - это лишние платные токены.
А в-третьих - это не нужно! Когда ты кидаешь модели полное содержимое файла и пишешь чёткий запрос - что с этим содержимым сделать, то этого вполне достаточно. В моём понимании наличие истории может внести только дополнительную путаницу, когда GPT будет брать изменения не из последнего приложенного файла, а из какой-то предыдущей версии.
Замена ли это программисту?
Я C++ senior и мне оно экономит очень много времени. Очень часто GPT выдаёт полную фигню, но я в состоянии это заметить и подправить результат, либо всё откатить и подправить запрос.
Какие-то знания всё-таки нужны т.к по умолчанию GPT, напишет говнокод в одном единственном файле, не сильно парясь о хорошей архитектуре. Нужно сознательно его тыкать носом и просить вынести код в отдельные метод либо в отдельный класс, либо применить какой-то определённый паттерн проектирования - тогда результат получается вполне неплохой.
А по запросу "напиши мне программу, которая делает то-то" - ничего не выйдет, нужно самому представлять что ты хочешь и давать GPT конкретные маленькие задачки.
Предполагаю что для человека совсем незнакомого с программированием этот инструмент будет почти бесполезен - он получит говнокод, похожий на на рабочий, но не будет знать как заставить его работать. Да, можно бесконечно скармливать GPT ошибки при запуске кода. И возможно в конце концов он как-то заработает... но какое-то это странное занятие...
Интересно было бы посмотреть насколько LetTheTinCanDoIt будет полезен джуниору...
Batch (отложенные задания)
Batch - запрос, который будет выполняться до 24 часов и стоить на 50% дешевле.
Изначально OpenAI предполагали, что туда будут сваливаться какие-то ресурсоёмкие задачи, которые делаются тысячами, и срочный результат не нужен. Задачи будут выполняться когда нет пиковых нагрузок на модель.
Но по факту, batch-задания выполняются чуть ли не за 1-2 минуты (когда в Европе день, в США все спят). В вечерние часы, когда у них пиковая нагрузка - чуть дольше - около 4-8 минут. Да, в редких случаях может быть и пару часов.
В общем суть в том, что batch-задания достаточно быстрые. И можно сэкономить чуть-чуть денег.
Сразу оговорюсь, что для новых моделей O1 и O1-mini batch-таски не работают!
Новый batch-workflow
Но фишка не только в экономии! У меня на этом родился прямо целый workflow! Я напрягаю мозг, стараясь написать хороший запрос... отправляю его. И иду наливаю себе чай пока он выполняется. К моему возвращению результат обычно готов, и я попивая чаёк смотрю diff и вникаю что же там написал мой железный друг.
Как же меня достали эти тупые комменты в коде
Я сделал отдельную опцию - не писать комменты к коду.
Но вообще я смирился.
Если это инди-проект, то там важно потратить меньше усилий. Поэтому я оставляю эти комменты как есть и даже не пытаюсь тратить время на их удаление. Зачем?
Если это рабочий коммерческий код, то всё-равно куча времени уходит на его причёсывание, и тут уже не так важно были там комменты или нет.
Модели от OpenAI
(Возможно вы лучше меня в этом разбираетесь, но я всё же решил кратко изложить свой опыт)
4o-mini - я использую только для тестов. Для программирования это совсем бесполезная вещь.
4o - основная рабочая лошадка!
o1-mini - позиционируется как продвинутая модель для программирования. Но в моём опыте не сильно лучше o1: часто выдаёт ляпы, и при этом ещё пытается умничать и выдавать более продвинутый код когда её об этом не просят. Офигенно делает рефакторинг (с ляпами в виде удаления кусков нужного рабочего кода), ну... скажем так... она выдаёт мгновенно то, над чем senior сидел бы пару часов делая step-by-step) и иногда подмечает то, на что человек бы не обратил внимания.
o1 - Флагманская модель OpenAI заточенная на научные задачи. Ничего не могу сказать. Потыкался пару раз, и результат меня не впечатлил. Я хочу попробовать сделать сравнение, как одну и ту же сложную задачу решают разные модели и сколько запросов для этого нужно. А ещё интересно её сравнить с реальным фрилансером (так, чтобы он не знал что его сравнивают с GPT). Возможно в o1 можно будет написать сразу большую задачу, не пытаясь разбивать её на мелкие подзадачи. Но такой обзор пока только в планах.
Монетизация
Я делал для себя. Монетизации никакой не планировал.
Можно попробовать продавать ключики от OpenAI-API, либо делать платные подписки как это сделано в StudGPT ... но я этим заниматься не хочу (по крайней мере сейчас).
Доработки
Мне очень нравится приложение в таком виде как оно есть сейчас. Ничего масштабного я делать пока не планирую.
Но я готов потратить какое-то время и допилить LetTheTinCanDoIt чтобы он был удобен и для других. В частности я думаю сделать возможность настраивать дополнительные галочки, добавляемые к запросу.
Ещё планирую сделать AppImage для линукса и бинарник для Windows (хотя не знаю надо ли, обычно разработчики в состоянии поставить себе питон + нужные пакеты к нему).
Конечно, это уже все очень неплохо реализовано в актуальных редакторах, с интересными фичами типа очень качественного применения диффа, см например https://t.me/saas_founders/73
Вчера, например, я написал браузерную игру с физикой а-ля angry birds, за 6 часов, которая бы без Курсора потребовала пару недель (и никогда не была была реализована, конечно же).
Очень оценил их грамотно работающую систему revert, в vs code co-pilot сделано похуже. Часто коммититься теперь не приходится.
А еще можно прямо в компоузере отправить в ллм картинки с багами - в разработке игры или визуальных интерфейсов без этого никак.
А еще там есть векторный поиск по локальной кодовой базе, например, короче, копировать такое себе довольно утомительно )
Спасибо за пост! А в API нет что-то типа projects как в Claude и ChatGPT новых версиях? Чтобы модель несколько файлов сразу смотрела :)
Это очень круто, скоро попробую и возможно стану постоянным пользователем, надоело туда-сюда копировать код, а копайлот и прочие штуки лень настраивать, + мне кажется модельки openai посмышленнее будут