Привет, друзья! Сегодня я хочу рассказать вам о том, как использовать промты в ChatGPT для создания программного кода на Python. Если вы работаете с Python или интересуетесь программированием, то вы, наверняка, знаете, насколько важно уметь быстро и эффективно создавать код.

Для тех, кто не знаком с термином "промт", это специальные подсказки, обычно они выводятся в виде текста, который указывает правила для ответа ИИ.

Чатбот ChatGPT основан на искусственном интеллекте и способен генерировать текст на основе предыдущих входных данных, так же основан на copilot. Таким образом, мы можем использовать его для генерации промтов для создания кода на Python.

После множества экспериментов и ошибок, я нашел наиболее оптимальный промт для работы с ChatGPT, который позволяет мне полностью автоматизировать процесс разработки программы в соответствии с моим ТЗ. Сейчас я готов поделиться с вами своим опытом.

Промт:

Тебе нужно принять роль Python программиста. Твоя главная цель - Написать оптимальный надежный код, по моему ТЗ, и объяснить его логику работы.

Для достижения этой цели ты можешь:

- Задавать мне уточняющие вопросы по моему ТЗ;
- Предлагать различные варианты решения для выполнения ТЗ; 
- Писать оптимальный надежный код, который решает задачи из ТЗ;

Используй технологии:

- Python>=3.10 версии;

Целевая операционная система:

- Linux;

Требования к твоему ответу:

- Пиши свой ответ по частям, и всегда указывай номер части;
- В первой части напиши краткую устную реализацию задачи, план, и какие технологии ты будешь использовать для решения этой задачи, обосную почему именно их ты выбираешь, и какие есть еще возможные аналоги, на этом закончи свой первый ответ, и ожидай когда я одобрю твой план;
- Во второй части напиши структуру проекта, продумай чтобы эта структура проекта была масштабируемая;
- Во третей части напиши как установить зависимости, и если нужно, то какие программы нужно установить на целевую операционную систему.
- В следующих главах напиши реализацию кода. Если это часть будет очень большой, то ты можешь разделить реализацию когда на сколько угодно глав;
- В предпоследней части покажи пример использования; 
- В последней части напиши вывод;

Требования к коду:  

- Пиши комментарии в коде на русском языке, чтобы помочь другим людям понимать твой код. 
- Старайся использовать встроенные библиотеки, если это возможно, иначе укажи какие сторонние библиотеки нужно использовать для решения поставленной задачи, и напиши как их установить, если есть несколько сторонних библиотек для решения этой задачи, то нужно совместно со мной выбрать наиболее подходящею библиотеку. 
- Убедитесь, что код соответствует принципу разработки DRY (Don't Repeat Yourself) KISS(Keep it simple, stupid).
- Используй аннотации типов.
- Код должен быть разделен на функции, чтобы каждая функция решала определенную часть задачи. Каждая функция должна иметь докстриг, в котором кратко описана логика функции, и описание ее входных и выходных параметров.

Вот мое ТЗ: [ТУТ_ТЗ]

Пример:

Комментарии (40)


  1. wtigga
    04.04.2023 11:57
    +1

    Интересный подход.

    Я сейчас тоже использую ChatGPT, но не прошу его написать весь код и архитектуру целиком. У меня есть некоторые базовые знания языка, их я использую, чтобы примерно представить, как программа должна работать, а затем задаю вопросы по написанию функций и их взаимосвязи.

    Что могу сказать... Без помощи ChatGPT я бы не подступился к некоторым задачам. А с его помощью у меня за один вечер получается работающий скрипт с простеньким GUI и обработкой ошибок. И он делает то, что мне от него нужно. Может, не слишком оптимально, и код не слишком красивый, но главное, что с задачей справляется.

    Для такого не-программиста, как я, это просто подарок.

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


    1. denisxab Автор
      04.04.2023 11:57
      +3

      Ну я как программист могу не знать про существования библиотек которые уже могут решать мою задачу, а ChatGPT рассказать про них. И еще он может рассказать про нестандартные подходы для решения задачи.


      1. dprotopopov
        04.04.2023 11:57
        +1

        Если не знаешь про существовании библиотеки - то скорее всего она и не "взлетела" - весьма стрёмно её запиливать в коммерческий код.

        Нестандартные подходы - тоже как то стрёмно для коммерческого производства - не ты один пилишь код, например, практикуется переброска с проекта на проект (сейчас в компании собственный фрейворк) - чтобы не было выгорания - и мне это нравится - но если там будет слишком нестандартное решение, то я не уверен, что это будет здорово.


        1. denisxab Автор
          04.04.2023 11:57
          +2

          Если идет речь про разработку "нового". Если это действительно новый проект, то откуда разработчикам знать про библиотеки которые решают эти задачи, даже про самые популярные ? Если это действительно новый проект, то нестандартное решение, например использования новых фичей языка, новых библиотек, новых алгоритмов, может улучшить производительность и читаемость кода, а потом это нестандартное решение можно подстроить под то, как вы привыкли делать в команде.


      1. Free_ze
        04.04.2023 11:57
        +4

        О, он вам еще и на лету выдумает парочку несуществующих библиотек, причем научит ими пользоваться) Был замечен за подобным.


      1. Johan_helm
        04.04.2023 11:57

        А ещё и ошибки в тексте исправит. Кстати, что ты этот опус перед тем как публиковать на проверку не отправил?


    1. MusaYakupov
      04.04.2023 11:57

      Возможно ли написание какого то парсера, что поможет спарсить данные с API? Я этим вопросом задаюсь, но никак не могу найти корректный ответ


      1. wtigga
        04.04.2023 11:57

        Всё возможно, если внятно изложить ТЗ. :)


        1. dprotopopov
          04.04.2023 11:57

          То есть четко сформулирвать желаемое, то есть последовательность элементарных действий, то есть написать программу...


          1. wtigga
            04.04.2023 11:57

            Да. Из уравнения исключается запоминание синтаксиса.

            Но вообще "чётко сформулировать желаемое" - это навык, который нужен вообще практически в любой сфере жизни, а далеко не только в программировании.


            1. iig
              04.04.2023 11:57

              Из уравнения исключается запоминание синтаксиса.

              Запомнить синтаксис - самое простое что есть в программировании.


              1. wtigga
                04.04.2023 11:57

                Здорово, что вам это просто даётся.


            1. dprotopopov
              04.04.2023 11:57

              1. Открыть бизнес

              2. Собрать инвестиции

              3. ....

              4. Профит!


  1. vtal007
    04.04.2023 11:57
    +2

    я у чат-гпт простые задачи спрашиваю и то не всегда корректный ответ получаю. а уж проект целый


    1. wtigga
      04.04.2023 11:57

      По моему скромному опыту, 3.5 говнит достаточно часто и уходит в цикл, когда пытаешься выяснить, в чём дело. GPT4 обычно даёт беспроблемные куски кода.


      1. vtal007
        04.04.2023 11:57

        хвалят гпт-4, но не пробовал (платить надо, да еще со всякими заморочками)


        1. Proger3301
          04.04.2023 11:57

          bing AI от Майкрософта бесплатный и работает на GPT 4, можете попробовать его


          1. vtal007
            04.04.2023 11:57

            так он вроде тоже в России не работает

            я пробовал через ВПН заходить, тоже не нашел нужной галки. Может искал плохо


            1. Azya
              04.04.2023 11:57

              Попробуйте мобильный Bing


    1. AcckiyGerman
      04.04.2023 11:57

      Вот только тут описания проекта больше, чем самого проекта.


      1. vtal007
        04.04.2023 11:57

        это да, правильное составление ТЗ это наверно не то чтобы половина, больше половина успеха в получении ответа от чат-гпт.


      1. denisxab Автор
        04.04.2023 11:57

        Тут описание проекта в 3 строчки. Все остальное промт.


      1. wtigga
        04.04.2023 11:57

        Если знаешь, что тебе нужно, но не умеешь писать код - норм вариант, разве нет?


        1. iig
          04.04.2023 11:57

          А так бывает?


          1. wtigga
            04.04.2023 11:57

            А почему нет? Вот я знаю, что мне нужно загрузить эксельку, отфильтровать, посчитать кое-что, сделать сравнения и выдать отчёт в HTML. Я примерно знаю, что для этого нужно использовать Pandas, допустим. И ещё какой-то GUI нужен, и как-то завернуть в *.exe, чтобы на другом компьютере у коллеги запустилось. Можно самому рыскать по Stackoverflow и потратить неделю, а можно с помощью ChatGPT наговнякать.


            1. vtal007
              04.04.2023 11:57

              Вы уже немало обозначили. Но составить правильно ТЗ - муторно. Вот что именно фильтровать, что с чем сравнить и тд

              но я бы посмотрел на то, что даст чат-гпт и как Вы это завернете в экзешник

              мои упражнения с пандасом - с 20-ой попытки я получил код, который делит CSV на кусочки по кол-во знаков.

              совсем без знания кода - ответ бота будет просто китайской грамотой. Максимум - копипаст. Но если не понимаешь что делает код, то как понять правильный ли код, делает ли он что нужно, а если ошибки выпадают (а такое бывает)


              1. wtigga
                04.04.2023 11:57
                +1

                Вот мой гитхаб, там два моих завёрнутых в *.exe поделия (1, 2). (правда, они создавались под конкретную рабочую задачу в конкретном проекте).

                Да, всё так, с нулевым знанием Python я бы, пожалуй, с задачей не справился (либо это заняло бы значительно больше времени). Но если есть немного теории и совершенно отсутствует практика, то с ботом можно получить рабочий код намного быстрее, чем без.

                То есть я знал, например, про Pandas, но не знал, как сделать исполняемый файл. И так и спросил: "использую Pycharm под Windows, как мне превратить код в *.exe? Объясни по шагам", и он объяснил, и всё сработало.


                1. iig
                  04.04.2023 11:57

                  google:использую Pycharm под Windows, как мне превратить код в *.exe

                  Первая ссылка видеоинструкция ;) Немного ниже - есть и в виде текста ;).


                  1. wtigga
                    04.04.2023 11:57
                    +1

                    терпеть не могу видеоинструкции!

                    да и вопрос не в этом. могу погуглить, а могу чатбота спросить. равнозначно чужие решения, но второе очевидно быстрее.


                    1. iig
                      04.04.2023 11:57

                      второе очевидно быстрее

                      Совершенно неочевидно ;) Я результат получил в 3 щелчка мышки буквально ;) Выделил кусок текста - правый щелк - search in google ;)


                      1. wtigga
                        04.04.2023 11:57
                        +1

                        У меня противоположенный опыт. Хорошо, что есть разные способы решения задачи, и каждый может найти удобный для себя.


                1. vtal007
                  04.04.2023 11:57
                  +1

                  Вот у меня немного есть знания питона, но вообще не понимаю как это дело завернуть в экзешник

                  Круто если все получилось (интересно, можно ли из колаба сделать экзешник)

                  на днях с помощью чат-гпт (и спец.библиотеки) кластеризовал 4к заголовков. Но вот недавно узнал, что есть еще библиотеки для леммизации. И вопрос, а правильно ли чат-гпт решил мою задачу? может надо было сначала леммизировать? И тут да, получается чат-бот хороший второй пилот, отлично помогает в тех сферах, которых разбираешься

                  А есть у меня домашка по теорверу.. Ну я ни бум-бум. Чат-гпт дает функцию, но не совсем корректно, а я даже сформулировать боту не могу, что именно нужно исправить :)


        1. denisxab Автор
          04.04.2023 11:57

          Так дело не только в написание кода. В пример показано как ChatGPT нашел библиотеки для решения этой задачи. И написал код использования. О того что я 5 лет программирую на Python, автоматически не означает что я знаю как пользоваться всеми сторонними библиотеками. А ChatGPT как раз показывает как ими пользоваться.


    1. ivanorlovjghdd
      04.04.2023 11:57

      Да, это какой развитый он должен быть, да и на выходе после него проверок куча...


    1. shasoftX
      04.04.2023 11:57
      +3

      Тут "проект" - это фактически одна функция нормального проекта.


  1. 3apa3ka3
    04.04.2023 11:57

    Moжно ли где то посмотреть код с картинок что бы попробовать запустить?
    Не совсем очевидно для чего импорт Union в text_recognizer.
    IMHO: Но и честно говоря слишком простой код для того что бы была необходимость в помощнике.


    1. denisxab Автор
      04.04.2023 11:57

      Union не нужен, это он ошибся. То что, для распознавания изображений по фотографии нужен "слишком простой код", эта заслуга Python и ChatGPT. Можно было и 100_000 строк кода написать для такой реализации.


      1. 3apa3ka3
        04.04.2023 11:57

        Я это не для того что бы подловить, а к тому что в python import может привести к проблемам и при наличии большего объема кода экономия времени (как я понимаю это одно из преимуществ использования GPT) может совсем не получиться.
        У мена коллега потратил примерно пол дня(может и больше) на решение задачи (агрегация данных в pandas) в GPT, потом вместе за 15 минут решили.
        Но главное что вам подходит )


  1. askolo4ek
    04.04.2023 11:57

    Интересно. А может ли он поддерживать и масштабировать тот код, который он написал?


    1. denisxab Автор
      04.04.2023 11:57

      Для этого нужен скил, у меня это уже получается(напишу в скоре об этом статью), но даже у ChatGPT-4 есть ограничения на запоминания 25_000 слов. Так что прям очень больше проекты он будет забывать.