{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

Продвинутые техники написания промта ChatGPT для разработчиков

В этой статье я поделюсь своим личным опытом использования искусственного интеллекта в повседневной жизни. Я расскажу, как он мне помогает и почему я считаю его чрезвычайно полезным. Кроме того, эта статья была написана после беседы с моим другом, который также является разработчиком. Он посчитал ИИ бесполезным, и я объясню, почему он не смог извлечь из него пользу, а я смог.

Еще больше полезностей про нейросети - в моем хобби-блоге про нейросети в Телеграм.

Искусственный интеллект - это не человек!

Пожалуйста, помните об этом! Даже если ChatGPT иногда кажется человеком, который вас понимает, это не так! ИИ не может думать, он не может осознавать контекст, который, по сути, понимает человек. Ответы ИИ - это результат обработки данных с помощью математической формулы, и не более того.

Еще раз:

ИИ - это не человек, он не может думать, у него нет разума, он не разговаривает с вами, и он выдает предсказуемый математический результат данных!

Чем раньше вы это поймете, тем лучше для вас. Тем больше для вас будут значить все эти учебники по промт инжинирингу. Относитесь к нему как к инструменту, и он станет мощным в ваших руках!

Модели данных и промт инжиниринг

Теперь, имея в виду эту главную мысль, мы можем продолжить.
ИИ генерирует ответы на основе математических формул или, если говорить более точно, сложных алгоритмов и обширных массивов данных. Эти ответы отличаются от мыслительных процессов человека. Чем больше ясности с заданными переменными вы внесете в эти алгоритмы, тем более определенные результаты вы получите. Вот так просто.

Теперь все эти курсы промтов стали более понятными, не так ли? Всю эту информацию вы можете найти на сайте OpenAI в разделе лучших практик ChatGPT. Но я кратко изложу ее здесь.

Пишите четкие инструкции!

Если вы спросите своего коллегу по проекту: "Как мне использовать цикл for?". Вы, скорее всего, получите более или менее адекватный ответ. Ваш коллега работает в той же среде и, вероятно, понимает, что вы спрашиваете о Java и даже о конкретной задаче, о которой вы спрашиваете.

Но если вы зададите тот же вопрос случайному разработчику в Интернете, он будет в замешательстве. Они не знают, о каком языке вы спрашиваете, каков конкретный случай, нужно ли модифицировать данные и т.д.

То же самое относится и к искусственному интеллекту. Если вы не укажете все переменные формулы, то получите непредсказуемый ответ.

Первое сообщение - это системное сообщение, позволяющее настроить ИИ на то, как вы хотите, чтобы он с вами взаимодействовал.

Назначение личности:

Выступай в роли профессионального Kotlin-разработчика с опытом работы более 10 лет. Ты - мастер чистого, сопровождаемого, читаемого, масштабируемого кода.

Этот промт мне очень помогает! Он значительно улучшает ответы, которые я получаю о коде. Используйте его, и вы увидите разницу.

Укажите все требования:

Тебе дается JSON-файл, каждая строка которого состоит из:

- Имя параметра в кавычках

- Знак двоеточия

- Значение параметра в кавычках, на английском языке

Верни мне этот JSON, в котором значения переведены на испанский язык. Не переводи имена параметров. Твой ответ должен содержать только переведенный JSON.

При таком промте ChatGPT возвращает вам JSON, в котором переведены только значения.

Проверь этот код на соответствие принципам SOLID, чистого кода, сопровождаемости, масштабируемости и читаемости

В ответ на этот промт ChatGPT структурирует свой ответ по каждому принципу и дает свои рекомендации по улучшению кода для каждого из них.

Здесь я покажу пример. Это кусок исходного кода.

public class User { private String name; private int age; private boolean connected = false; public User(String name, int age) { this.name = name; this.age = age; } public void connectToDatabase() { // Establish a connection this.connected = true; } public void saveUserToDatabase() { if (this.connected) { System.out.println("Saving " + this.name + " to database..."); } else { System.out.println("Not connected to a database."); } } }

Вот результат, когда я просто попросил ChatGPT "Проверь этот код":

public class User { private String name; private int age; private boolean connected = false; public User(String name, int age) { this.name = name; this.age = age; } public void connect() { this.connected = true; } public void save() { if (this.connected) { System.out.println("Saving " + this.name + "..."); } else { System.out.println("Please connect first."); } } }

Данный рефакторинг производится с промтом "Проверь этот код на соответствие принципам SOLID, чистого кода, сопровождаемости, масштабируемости и читаемости" и некоторыми пояснениями из ChatGPT ниже.

public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } // Getter for name public String getName() { return this.name; } } class Database { private boolean connected = false; public void connect() { this.connected = true; } public void saveUser(User user) { if (this.connected) { System.out.println("Saving " + user.getName() + " to database..."); } else { System.out.println("Not connected to a database. Please connect first."); } } }
  1. Принцип ответственности (Sngle Responsibility Principle, SRP) решается путем разделения классов User и Database.
  2. Принцип открытости/закрытости соблюдается лучше, поскольку теперь новые функциональные возможности могут быть добавлены в любой из классов без изменения существующего кода.
  3. Принцип замещения Лискова, принцип разделения интерфейсов и принцип инверсии зависимостей могут быть реализованы в более крупных и сложных примерах или с использованием интерфейсов, подклассов и т.д.
  4. За счет разделения задач и упрощения методов код становится более чистым, удобным для сопровождения, масштабируемым и читаемым.

Осознание контекста

Chat GPT имеет фиксированную длину контекста, диалог между пользователем и ассистентом, в котором вся беседа включена в контекстное окно, не может продолжаться бесконечно.

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

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

Что означает в цифрах? Контекстное окно ChatGPT-4 имеет объем 8192 токена, а ChatGPT-3.5 - 4096 токенов. Грубо говоря, это соответствует 3000 слов для GPT-3.5 и примерно 5000-6000 слов для GPT-4.

Дайте ChatGPT время на "подумать"

Предположим, вы вставляете код и спрашиваете ChatGPT, корректен он или нет. Скорее всего, вы получите ответ: "Да, он корректен", хотя он может иметь некоторые недостатки.

Лучше всего ChatGPT работает, когда вы просите его показать, как он сделал вывод. Попросите "Объясни мне, почему", "Прокомментируй каждую строку кода и то, что она делает". При таком подходе вы получите более содержательные результаты.

Протестируйте свои промты

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

Если код ChatGPT выдает результат, не соответствующий тестам, просто покажите ему еще раз его код, тестовый пример, ожидаемый результат и результат, который выдает его код, и попросите исправить ошибку.

ChatGPT не может заменить вас как разработчика, но он может очень сильно помочь вам! Всегда тестируйте то, что он производит, создавайте точные промты, чтобы сделать код более надежным и чистым, и наслаждайтесь повышением производительности!

Заключение

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

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

Еще больше полезностей про нейросети - в моем хобби-блоге про нейросети в Телеграм.

Перевод. Оригинал на английском - здесь.

0
2 комментария
Не фотограф

Кодить не умею никогда не кодил, но для своих задач он мне создал программку. Думаю бедующем у каждого будет возможность написать свою прошивку для своего чайника =)

Ответить
Развернуть ветку
Neuromarket (Алексей)
Автор

Да, небольшие программки можно и без программиста написать.

Ответить
Развернуть ветку
-1 комментариев
Раскрывать всегда