Привет, друзья! Сегодня я хочу рассказать вам о том, как использовать промты в ChatGPT для создания программного кода на Python. Если вы работаете с Python или интересуетесь программированием, то вы, наверняка, знаете, насколько важно уметь быстро и эффективно создавать код.
Для тех, кто не знаком с термином "промт", это специальные подсказки, обычно они выводятся в виде текста, который указывает правила для ответа ИИ.
Чатбот ChatGPT основан на искусственном интеллекте и способен генерировать текст на основе предыдущих входных данных, так же основан на copilot. Таким образом, мы можем использовать его для генерации промтов для создания кода на Python.
После множества экспериментов и ошибок, я нашел наиболее оптимальный промт для работы с ChatGPT, который позволяет мне полностью автоматизировать процесс разработки программы в соответствии с моим ТЗ. Сейчас я готов поделиться с вами своим опытом.
Промт:
Тебе нужно принять роль Python программиста. Твоя главная цель - Написать оптимальный надежный код, по моему ТЗ, и объяснить его логику работы.
Для достижения этой цели ты можешь:
- Задавать мне уточняющие вопросы по моему ТЗ;
- Предлагать различные варианты решения для выполнения ТЗ;
- Писать оптимальный надежный код, который решает задачи из ТЗ;
Используй технологии:
- Python>=3.10 версии;
Целевая операционная система:
- Linux;
Требования к твоему ответу:
- Пиши свой ответ по частям, и всегда указывай номер части;
- В первой части напиши краткую устную реализацию задачи, план, и какие технологии ты будешь использовать для решения этой задачи, обосную почему именно их ты выбираешь, и какие есть еще возможные аналоги, на этом закончи свой первый ответ, и ожидай когда я одобрю твой план;
- Во второй части напиши структуру проекта, продумай чтобы эта структура проекта была масштабируемая;
- Во третей части напиши как установить зависимости, и если нужно, то какие программы нужно установить на целевую операционную систему.
- В следующих главах напиши реализацию кода. Если это часть будет очень большой, то ты можешь разделить реализацию когда на сколько угодно глав;
- В предпоследней части покажи пример использования;
- В последней части напиши вывод;
Требования к коду:
- Пиши комментарии в коде на русском языке, чтобы помочь другим людям понимать твой код.
- Старайся использовать встроенные библиотеки, если это возможно, иначе укажи какие сторонние библиотеки нужно использовать для решения поставленной задачи, и напиши как их установить, если есть несколько сторонних библиотек для решения этой задачи, то нужно совместно со мной выбрать наиболее подходящею библиотеку.
- Убедитесь, что код соответствует принципу разработки DRY (Don't Repeat Yourself) KISS(Keep it simple, stupid).
- Используй аннотации типов.
- Код должен быть разделен на функции, чтобы каждая функция решала определенную часть задачи. Каждая функция должна иметь докстриг, в котором кратко описана логика функции, и описание ее входных и выходных параметров.
Вот мое ТЗ: [ТУТ_ТЗ]
Пример:
Комментарии (40)
vtal007
04.04.2023 11:57+2я у чат-гпт простые задачи спрашиваю и то не всегда корректный ответ получаю. а уж проект целый
wtigga
04.04.2023 11:57По моему скромному опыту, 3.5 говнит достаточно часто и уходит в цикл, когда пытаешься выяснить, в чём дело. GPT4 обычно даёт беспроблемные куски кода.
vtal007
04.04.2023 11:57хвалят гпт-4, но не пробовал (платить надо, да еще со всякими заморочками)
Proger3301
04.04.2023 11:57bing AI от Майкрософта бесплатный и работает на GPT 4, можете попробовать его
AcckiyGerman
04.04.2023 11:57Вот только тут описания проекта больше, чем самого проекта.
vtal007
04.04.2023 11:57это да, правильное составление ТЗ это наверно не то чтобы половина, больше половина успеха в получении ответа от чат-гпт.
wtigga
04.04.2023 11:57Если знаешь, что тебе нужно, но не умеешь писать код - норм вариант, разве нет?
iig
04.04.2023 11:57А так бывает?
wtigga
04.04.2023 11:57А почему нет? Вот я знаю, что мне нужно загрузить эксельку, отфильтровать, посчитать кое-что, сделать сравнения и выдать отчёт в HTML. Я примерно знаю, что для этого нужно использовать Pandas, допустим. И ещё какой-то GUI нужен, и как-то завернуть в *.exe, чтобы на другом компьютере у коллеги запустилось. Можно самому рыскать по Stackoverflow и потратить неделю, а можно с помощью ChatGPT наговнякать.
vtal007
04.04.2023 11:57Вы уже немало обозначили. Но составить правильно ТЗ - муторно. Вот что именно фильтровать, что с чем сравнить и тд
но я бы посмотрел на то, что даст чат-гпт и как Вы это завернете в экзешник
мои упражнения с пандасом - с 20-ой попытки я получил код, который делит CSV на кусочки по кол-во знаков.
совсем без знания кода - ответ бота будет просто китайской грамотой. Максимум - копипаст. Но если не понимаешь что делает код, то как понять правильный ли код, делает ли он что нужно, а если ошибки выпадают (а такое бывает)
wtigga
04.04.2023 11:57+1Вот мой гитхаб, там два моих завёрнутых в *.exe поделия (1, 2). (правда, они создавались под конкретную рабочую задачу в конкретном проекте).
Да, всё так, с нулевым знанием Python я бы, пожалуй, с задачей не справился (либо это заняло бы значительно больше времени). Но если есть немного теории и совершенно отсутствует практика, то с ботом можно получить рабочий код намного быстрее, чем без.
То есть я знал, например, про Pandas, но не знал, как сделать исполняемый файл. И так и спросил: "использую Pycharm под Windows, как мне превратить код в *.exe? Объясни по шагам", и он объяснил, и всё сработало.
iig
04.04.2023 11:57google:использую Pycharm под Windows, как мне превратить код в *.exe
Первая ссылка видеоинструкция ;) Немного ниже - есть и в виде текста ;).
wtigga
04.04.2023 11:57+1терпеть не могу видеоинструкции!
да и вопрос не в этом. могу погуглить, а могу чатбота спросить. равнозначно чужие решения, но второе очевидно быстрее.
iig
04.04.2023 11:57второе очевидно быстрее
Совершенно неочевидно ;) Я результат получил в 3 щелчка мышки буквально ;) Выделил кусок текста - правый щелк - search in google ;)
wtigga
04.04.2023 11:57+1У меня противоположенный опыт. Хорошо, что есть разные способы решения задачи, и каждый может найти удобный для себя.
vtal007
04.04.2023 11:57+1Вот у меня немного есть знания питона, но вообще не понимаю как это дело завернуть в экзешник
Круто если все получилось (интересно, можно ли из колаба сделать экзешник)
на днях с помощью чат-гпт (и спец.библиотеки) кластеризовал 4к заголовков. Но вот недавно узнал, что есть еще библиотеки для леммизации. И вопрос, а правильно ли чат-гпт решил мою задачу? может надо было сначала леммизировать? И тут да, получается чат-бот хороший второй пилот, отлично помогает в тех сферах, которых разбираешься
А есть у меня домашка по теорверу.. Ну я ни бум-бум. Чат-гпт дает функцию, но не совсем корректно, а я даже сформулировать боту не могу, что именно нужно исправить :)
denisxab Автор
04.04.2023 11:57Так дело не только в написание кода. В пример показано как ChatGPT нашел библиотеки для решения этой задачи. И написал код использования. О того что я 5 лет программирую на Python, автоматически не означает что я знаю как пользоваться всеми сторонними библиотеками. А ChatGPT как раз показывает как ими пользоваться.
ivanorlovjghdd
04.04.2023 11:57Да, это какой развитый он должен быть, да и на выходе после него проверок куча...
3apa3ka3
04.04.2023 11:57Moжно ли где то посмотреть код с картинок что бы попробовать запустить?
Не совсем очевидно для чего импорт Union в text_recognizer.
IMHO: Но и честно говоря слишком простой код для того что бы была необходимость в помощнике.denisxab Автор
04.04.2023 11:57Union не нужен, это он ошибся. То что, для распознавания изображений по фотографии нужен "слишком простой код", эта заслуга Python и ChatGPT. Можно было и 100_000 строк кода написать для такой реализации.
3apa3ka3
04.04.2023 11:57Я это не для того что бы подловить, а к тому что в python import может привести к проблемам и при наличии большего объема кода экономия времени (как я понимаю это одно из преимуществ использования GPT) может совсем не получиться.
У мена коллега потратил примерно пол дня(может и больше) на решение задачи (агрегация данных в pandas) в GPT, потом вместе за 15 минут решили.
Но главное что вам подходит )
askolo4ek
04.04.2023 11:57Интересно. А может ли он поддерживать и масштабировать тот код, который он написал?
denisxab Автор
04.04.2023 11:57Для этого нужен скил, у меня это уже получается(напишу в скоре об этом статью), но даже у ChatGPT-4 есть ограничения на запоминания 25_000 слов. Так что прям очень больше проекты он будет забывать.
wtigga
Интересный подход.
Я сейчас тоже использую ChatGPT, но не прошу его написать весь код и архитектуру целиком. У меня есть некоторые базовые знания языка, их я использую, чтобы примерно представить, как программа должна работать, а затем задаю вопросы по написанию функций и их взаимосвязи.
Что могу сказать... Без помощи ChatGPT я бы не подступился к некоторым задачам. А с его помощью у меня за один вечер получается работающий скрипт с простеньким GUI и обработкой ошибок. И он делает то, что мне от него нужно. Может, не слишком оптимально, и код не слишком красивый, но главное, что с задачей справляется.
Для такого не-программиста, как я, это просто подарок.
Что интересно: уже в следующей похожей задаче я потратил намного меньше времени, потому что какие-то функции уже запомнил сам, и мог их править так, как мне нужно.
denisxab Автор
Ну я как программист могу не знать про существования библиотек которые уже могут решать мою задачу, а ChatGPT рассказать про них. И еще он может рассказать про нестандартные подходы для решения задачи.
dprotopopov
Если не знаешь про существовании библиотеки - то скорее всего она и не "взлетела" - весьма стрёмно её запиливать в коммерческий код.
Нестандартные подходы - тоже как то стрёмно для коммерческого производства - не ты один пилишь код, например, практикуется переброска с проекта на проект (сейчас в компании собственный фрейворк) - чтобы не было выгорания - и мне это нравится - но если там будет слишком нестандартное решение, то я не уверен, что это будет здорово.
denisxab Автор
Если идет речь про разработку "нового". Если это действительно новый проект, то откуда разработчикам знать про библиотеки которые решают эти задачи, даже про самые популярные ? Если это действительно новый проект, то нестандартное решение, например использования новых фичей языка, новых библиотек, новых алгоритмов, может улучшить производительность и читаемость кода, а потом это нестандартное решение можно подстроить под то, как вы привыкли делать в команде.
Free_ze
О, он вам еще и на лету выдумает парочку несуществующих библиотек, причем научит ими пользоваться) Был замечен за подобным.
Johan_helm
А ещё и ошибки в тексте исправит. Кстати, что ты этот опус перед тем как публиковать на проверку не отправил?
MusaYakupov
Возможно ли написание какого то парсера, что поможет спарсить данные с API? Я этим вопросом задаюсь, но никак не могу найти корректный ответ
wtigga
Всё возможно, если внятно изложить ТЗ. :)
dprotopopov
То есть четко сформулирвать желаемое, то есть последовательность элементарных действий, то есть написать программу...
wtigga
Да. Из уравнения исключается запоминание синтаксиса.
Но вообще "чётко сформулировать желаемое" - это навык, который нужен вообще практически в любой сфере жизни, а далеко не только в программировании.
iig
Запомнить синтаксис - самое простое что есть в программировании.
wtigga
Здорово, что вам это просто даётся.
dprotopopov
Открыть бизнес
Собрать инвестиции
....
Профит!