Проект: LetTheTinCanDoIt: не нужно больше копипастить файлы в окно GPT  Публичный пост
30 декабря 2024  802
LetTheTinCanDoIt: не нужно больше копипастить файлы в окно GPT
https://github.com/vitperov/LetTheTinCanDoIt/

Краткая предыстория

Моё знакомство с 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 (хотя не знаю надо ли, обычно разработчики в состоянии поставить себе питон + нужные пакеты к нему).

Связанные посты
9 комментариев 👇

Конечно, это уже все очень неплохо реализовано в актуальных редакторах, с интересными фичами типа очень качественного применения диффа, см например https://t.me/saas_founders/73

Вчера, например, я написал браузерную игру с физикой а-ля angry birds, за 6 часов, которая бы без Курсора потребовала пару недель (и никогда не была была реализована, конечно же).
Очень оценил их грамотно работающую систему revert, в vs code co-pilot сделано похуже. Часто коммититься теперь не приходится.

А еще можно прямо в компоузере отправить в ллм картинки с багами - в разработке игры или визуальных интерфейсов без этого никак.

А еще там есть векторный поиск по локальной кодовой базе, например, короче, копировать такое себе довольно утомительно )

  Развернуть 1 комментарий
🕵️ Юзер скрыл свои комментарии от публичного просмотра...
🕵️ Юзер скрыл свои комментарии от публичного просмотра...

Спасибо за пост! А в API нет что-то типа projects как в Claude и ChatGPT новых версиях? Чтобы модель несколько файлов сразу смотрела :)

  Развернуть 1 комментарий

@sinnie, Насколько я знаю, есть 2 подхода. Я в них не углублялся т.к. это не совсем то, что я хотел.

  1. Загружать все файлы на сервер. А в запросе на них как-то ссылаться, и GPT будет их сам брать
  2. Есть есть очень-очень много файлов и они постоянно меняются то индексировать их, и отдавать GPT только индексы (+ я думаю должен быть какой-то механизм запроса части файлов, если GPT посмотрит индексы и решит что именно этот файл ему нужно посмотреть)
  Развернуть 1 комментарий

@sinnie, О! Кстати! Можно кинуть в chatGPT zip архив с файлами!

У меня было приложение для андройда для изучение английских слов, которое я писал лет 8 назад. Поменялись сборочные скрипты, я потратил 2 вечера, но самостоятельно так и не смог разобраться.

А на закинутый архивчик с проектом GPT мне выдал обновлённый архивчик, и после 2х дополнительных запросов оно заработало!!!

  Развернуть 1 комментарий

Это очень круто, скоро попробую и возможно стану постоянным пользователем, надоело туда-сюда копировать код, а копайлот и прочие штуки лень настраивать, + мне кажется модельки openai посмышленнее будут

  Развернуть 1 комментарий

@m-danya, Спасибо за отзыв!
Не знаю, удастся ли сэкономить время на настройку. Как минимум нужно регистрировать аккаунт в OpenAI и получить там ключик. Из коробки оно не работает.

  Развернуть 1 комментарий

@vitperov, апи-ключ у меня есть, поэтому кайф

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб