Chat GPT в помощь программисту
Хороший инструмент, хотя, конечно, есть и недостатки...
С них и начну:
- Количество символов сообщения ограничено 1000 или около того: большой код Chat GPT не сможет написать.
- Продолжение иногда корректно срабатывает: может начать писать код заново или выделить только одну функцию из кода...
- Если задача поставлена нечётко, скорее всего напишет неправильно...
- Вероятно, есть и другие минусы, о которых забыл...
Но всё перевешивает плюс: порой помогает значительно экономить время (зависит от сложности).
Для чего эта статья?
Вы наверное подумали, что я совсем отдалился от читателей, раз пишу о своём - программистском. Но нет:
Фишка в том, что вам ИИ (не считаю Chat GPT искусственным интеллектом - грамотно сделанная нейронная сеть с машинным обучением, но для сокращения будем обозначать так) тоже может помочь...
Правила работы с Chat GPT
- Небольшие задачи
- Пишем 1, 2, 3 при пояснении.
- Указываем, что Chat GPT - профессиональный программист {язык программирования}.
- Если пишет ерунду, делим задачу на ещё более мелкие.
Практическая задача
Я уже писал про макросы в ноябре прошлого года https://t.me/blind_dev/915" target="_blank">https://t.me/blind_dev/915
Но тогда не было Chat GPT... Давайте создадим аналогичный документ сейчас с его помощью.
1. Создаём промпт
Промп = запрос.
- В начале пишем, что ИИ профессионал:
"Ты - профессионал в программировании макросов Libreoffice calc на VBA". - Пишем вводные:
"Есть calc документ: строка a: Название, доход, расход, остаток.
Строка 2: a2: "Результат", B2-D2 - формула суммы значений в соответствующих столбцах.
С третьей строки и далее идут уже разные доходы и расходы". - Ставим задачу:
"Создай макрос, который:
1. Вставит в столбец D в строках, где есть заполнение B или C формулу Bn - Cn (где n - строка).
2. В строке 2 добавит формулы сумм значений. Например, у B2 это будет сумма от B3 до B19, если числа есть с 3 по 19 строку.
У C2 будет формула от C3 до C17, если есть значения в этих строках.
В D - сумма остатков с D3 по D19". - Добавляем важное, чтоб гарантировать чёткость исполнения:
"Важно:
Цикл вставок должен опираться на данные в документе, а не на мной указанные числа".
Отправил запрос, и получил ответ:
![](https://i.imgur.com/crRtHzh.png)
Код:
![](https://i.imgur.com/KmVthFX.png)
Вставляем в Libreoffice calc или ваш редактор. Для этого в моём случае иду в Сервис, Макрос, редакировать макросы, выбираю текущий документ, и перехожу в редактор для Standart:
![](https://i.imgur.com/TWQ49Rx.png)
f5:
![](https://i.imgur.com/gcerP2u.png)
Ошибка. Смотрим её, строку:
lastRowB = Range("B" & Rows.Count).End(xlUp).Row
И пишем chat gpt, что он допустил ошибку. У вас может быть иная, т. к. используете другой редактор...
![](https://i.imgur.com/m9ioYT5.png)
Chat GPT исправил код, но все равно неправильно:
![](https://i.imgur.com/65QcDhT.png)
Кстати, вникать в код нет необходимости: достаточно нажимать "Copy code" и вставлять в редактор макросов...
Продолжаю переписку:
![](https://i.imgur.com/VfBdQfD.png)
![](https://i.imgur.com/qZTFc7H.png)
Учёл, что я использую Libreoffice calc, но все равно ошибся:
![](https://i.imgur.com/xuARM0V.png)
Короче, копируем ошибки и вставляем.. до тех пор, пока не получим рабочий код:
![](https://i.imgur.com/uLNzEGT.png)
Запускаем, и видим немного неточный результат:
![](https://i.imgur.com/hH7LxSx.png)
Пишем уточнения:
"Код работает, но почему-то формула для вычитания B3-C3 оказалась в D4, B4-C4 в D5 и так далее.
Кроме того, вставлены формулы в строках с 7 по 20, хотя в них нет вовсе данных...
Исправь ошибку, и отправь код. Благодарю."
![](https://i.imgur.com/hyACXst.png)
И опять прислал Chat GPT код с ошибкой...
В общем, вставляю ошибки и получаю ответы:
![](https://i.imgur.com/xFnHc7a.png)
В итоге надоело, написал:
"Сделай реализацию через условие, проверяющее значение ячейки. если оно пустое, цикл прерывается."
![](https://i.imgur.com/C4sapJN.png)
Наверное, весь код (не знаю, влез или нет на скриншот):
![](https://i.imgur.com/tdSxRhI.png)
"Программа Libreoffice calc после запуска подвисает, будто цикл выполняется без перерыва. При этом, ячейки не заполнены.
Через минуты две появилась ошибка:
"Ошибка времени выполнения Basic.
Свойство или метод не найдены: setCellType."
Строка:
sheet.getCellByPosition(1, 1).setCellType(com.sun.star.table.CellContentType.VALUE)"
![](https://i.imgur.com/WelQUu4.png)
В общем, тупит...
Возможно, что codex работает лучше - не пробовал...
Иногда ИИ выводит конкретную строку - тогда надо нажать в редакторе макросов ctrl+f, вставить строку старую, нажать "Enter", и заменить на новую.
В итоге я остановился на этом коде, т. к. он хотя бы работает...:
![](https://i.imgur.com/tXuYiyr.png)
Единственное, попросил исправить ошибку с перемещением формулы ниже нужного...
Для этого написал:
"Ты ранее писал код:
... тут код
Но в столбце D почему-то вычитания вставляются на следующей строке... Допустим, в D4 B3-C3, В D5 B4-C4 и так далее...
Исправь это."
Ответ:
![](https://i.imgur.com/DEIJrc3.png)
Заметьте: нет форматированного кода. В этом случае его придётся скопировать вручную.
Далее попросил:
"Можно ли вместо фиксированного числа 19 запрашивать его у пользователя при запуске макроса? Если да, измени код соответствующим образом."
Он ответил, но вернул ошибку. Указал на это:
"Отлично. И исправь ещё раз ошибку с переносом формулы на следующую строку (В d3 должно быть значение для B3-C3, и т. д.)"
Почему-то на это был дан ответ со старым кодом, в котором ошибка...
После вставки нужного с просьбой исправить, он отдал код без исправления.
Лишь когда указал конкретную ошибку вставки формулы в следующие строки, чем нужно, получилось...
Итоговый код:
![](https://i.imgur.com/N9Bb2g9.png)
![](https://i.imgur.com/3ieuCyr.png)
Вставил в редактор макросов, и нажал F5:
![](https://i.imgur.com/EJL9yJ9.png)
Запрошен номер строки. Ввожу.
Иду в документ, и вижу введённые формулы:
![](https://i.imgur.com/Vqn0uMo.png)
Допустим, добавили новые данные. Захожу в "Сервис" -> "Макросы" -> "Выполнить макрос":
![](https://i.imgur.com/n7RJw0u.png)
Нахожу свой:
![](https://i.imgur.com/DhOBRiy.png)
Ввожу номер строки:
![](https://i.imgur.com/opobpj0.png)
И получаю обновлённые данные:
![](https://i.imgur.com/1MyB6VW.png)
Итог по задаче
Возможно не программисту будет сложновато, но всегда можно писать уточнения, а если не получится все равно, выбрать то, что работает...
Напоминаю кстати, что в варианте из видео в моём канале я создавал макрос с простой вставкой результата (без формулы), а также делал 2 макроса для указания профита или убытка...
Что ещё делал с Chat GPT
- Вчера было уже поздно: мне было лень делать вручную, поэтому попросил Chat GPT сделать express api скрипт на основе своего другого:
![](https://i.imgur.com/kRHXSIK.png)
Полученный ответ:
![](https://i.imgur.com/rI6bPfW.png)
На удивление, получилось с первого раза.
Далее пытался добиться создания авто документации от ИИ, но не получилось... Показывать уже не стану...
2. А здесь попросил сделать мне модальное окно на основе страницы в dpos.space:
![](https://i.imgur.com/7cTRPyJ.png)
Недостаток в том, что если потом добавляешь задачи, он может выдавать не совсем, что нужно.
В примере этого чата я столкнулся с тем, что Chat GPT отправил мне шаблон кода без указанного добавления...
Поэтому если и делать запрос, то со всеми данными... Другое дело, что кол-ва символов вряд ли хватит...
Вот продолжение:
![](https://i.imgur.com/emgMkAa.png)
И код бесполезный:
![](https://i.imgur.com/YdvMsCk.png)
Дальше уже показывать не буду...
3. Можно спросить у Chat GPT, знает ли он о каком-то проекте / репозитории:
![](https://i.imgur.com/8m5CAvX.png)
Далее отправил свой код с комментариями знающих людей о том, что не доделал:
![](https://i.imgur.com/vPbRRtk.png)
И ИИ исправил:
![](https://i.imgur.com/jk1IC14.png)
Важно, что если вы спросите на постороннюю тему, а затем вернётесь к теме кода, вам будет дан ненужный ответ, причём ещё и на другом языке программирования...:
![](https://i.imgur.com/cKfta2p.png)
Лишь после отправки полученного кода с просьбой доработать, получил корректный ответ:
![](https://i.imgur.com/UapPrW0.png)
Упрощаем задачи
Если поставить Chat GPT большую задачу, типа
"Создай html страницу.
Используй библиотеки minter-js-sdk и bip39-address-key2value.js (файл index.bundle.js).
Документация:
[Здесь код из Github]
..."
И т.д. Моя цель не ввести весь запрос, который большой, а сказать, что такое не сработает... Вспомните про то, что ИИ не может отправить больше 1000 символов.
Поэтому поступим иначе: запросим по частям...
"Ты отличный html и Javascript программист.
Создай html страницу с подключением minter-js-sdk и index.bundle.js.
Создай в секции head функции кодирования и декодирования согласно этой документации:
[здесь дока из Github]
В случае декодирования возвращается text."
![](https://i.imgur.com/I2m9VNC.png)
И получаем неправильный код...
Попросил создать эти функции:
И получил верный код:
![](https://i.imgur.com/ordkLa6.png)
Далее пишу:
"Добавь к существующему коду страницы функцию получения url.
В зависимости от него выводится тот или иной контент.
В body <div id="body"></div>
url могут иметь формат #dao/create, #dao/view/address
И пр.
Структура задаётся в переменной route.":
![](https://i.imgur.com/IfDnwCC.png)
Указал, чтоб сделал объект без switch:
"Сделай объект роута вместо switch.
Пример:
let route = {
dao: {
create: <h1>Create dao</h1>
,
view: {
"$address": <h1>View DAO by {address}</h1>
}
}
}
Где address - произвольные данные, названные переменной address.":
![](https://i.imgur.com/fNcvk4L.png)
Как видите, уже весь не влез. Поэтому лучше запрашивать каждый функционал отдельно (без всего кода страницы), и уже самому подставлять в код...
![](https://i.imgur.com/XBuAj8r.png)
Выше показал, что начинает не с того, с чего закончил...
Да ещё и разделил участки кода:
![](https://i.imgur.com/yiYoFhM.png)
"Напиши только функцию обработки url и роута.":
![](https://i.imgur.com/GcRK2c9.png)
Как-то так...
Всё
Показал вроде бы все возможности Chat GPT.
Использовать ли его в качестве помощника разработчику, решать вам. Я решил, что буду ставить небольшие задачи...
Например, вместо "Добавь к коду страницы ..." указать "Напиши функцию". А уже потом вставлять...
С вами был незрячий программист. Подписывайтесь на https://t.me/blind_dev," target="_blank">https://t.me/blind_dev, чтоб получать новые обзоры и новости по моим разработкам.
Comments