Сегодня я пишу о ChatGPT и о том, как он может помочь вам в программировании. Я использовал этот инструмент искусственного интеллекта, чтобы написать простое приложение Flask на Python за считанные минуты. В то же время я хочу показать, как его можно использовать для развлечения и помощи в работе над творческим процессом. Если вас интересуют такие типы сообщений, недавно я также рассмотрел Stable Diffusion, модель скрытой диффузии, которая может генерировать изображения из подсказки.
Что такое ChatGPT?
Если вы в последнее время читаете новости, вы, вероятно, когда-то слышали о ChatGPT. ChatGPT — это новейшая модель для большого языка от OpenAI. Их предыдущей языковой моделью была GPT-3. Хотя ChatGPT — модель меньшего размера, чем GPT-3 (20 миллиардов параметров против 175 миллиардов), похоже, она была настроена и обучена для разговорных приложений.
Вы можете найти примеры веселых ответов, когда попросите его проявить творческий подход. В то же время меня иногда раздражают моральные суждения и предупреждения в каждом ответе. Его также научили отказываться отвечать на определенные проблемные подсказки. Есть способы творчески обойти эти ограничения, например, этот пример Reddit или этот.
ChatGPT для кодирования
Я хочу использовать этот раздел, чтобы показать один пример того, как использовать ChatGPT для кодирования. Идея состоит в том, что, возможно, это поможет сократить время, необходимое для шаблонного кода. Я не использовал инструмент Co-Pilot GitHub, но думаю, что он работает аналогичным образом, и оба используют технологию OpenAI. Если вы хотите попробовать сами, вот демонстрационная страница. Вам нужно будет создать учетную запись в OpenAI, но это быстрый процесс.
Я покажу один пример того, что может сделать ChatGPT, когда его попросят написать код. Вы также можете посмотреть это короткое видео, которое я сделал об этом:
Пример: напишите простое веб-приложение Flask для расчета ИМТ пользователя
Я попросил ChatGPT написать скрипт Python с использованием Flask, где пользователи вводят свой рост и вес, а приложение возвращает их ИМТ.
Моя первоначальная подсказка была:
напишите на python приложение flask, которое вычисляет ИМТ пользователя. Он должен принимать два входа: рост и вес. Также должна быть кнопка для переключения между метрической системой и имперскими единицами. Программа должна отображать рассчитанный ИМТ с точностью до двух знаков после запятой.
Вот небольшой фрагмент ответа ChatGPT на мой запрос:
Меня впечатляет то, что он может создавать все файлы, необходимые для запуска этого приложения, согласованным образом. Во-первых, он правильно написал сторону Python и даже включил опцию формы для типа единицы измерения. Затем ChatGPT написал HTML-код, необходимый для отображения приложения. Удивительно, но все имена переменных совпадают с именами, которые Flask отправляет со стороны Python.
Веб-приложение выглядит так:
Он использует простой HTML, который выглядит очень просто. Однако ChatGPT смог включить кнопку для переключения между имперской и метрической системами. Если вы посмотрите на код Flask, вы увидите, что внутри он также использует разные вычисления для обоих. К сожалению, он не добавил метки для единиц измерения: кг и г для метрических единиц, футы и дюймы для имперских и т. д.
Сначала ChatGPT отображал результаты на другой странице, поэтому я попросил изменить bmi_calculator.html, чтобы вывод отображался на той же странице.
Я продолжил разговор с дополнительными подсказками, попросив ChatGPT сделать HTML лучше и добавить метки для единиц для каждого ввода. Новый код включает в себя некоторые элементы CSS в файле HTML.
Здесь вы можете увидеть окончательную версию:
Код
Вы можете просмотреть всю беседу, используя ссылку выше, но я также включаю окончательный код, который я использовал для скриншотов выше.
- app.py
from flask import Flask, request, render_template app = Flask(__name__) @app.route('/') def bmi_calculator(): return render_template('bmi_calculator.html') @app.route('/calculate', methods=['POST']) def calculate(): height = float(request.form['height']) weight = float(request.form['weight']) units = request.form['units'] if units == 'metric': bmi = weight / (height ** 2) else: bmi = 703 * (weight / (height ** 2)) return render_template('bmi_calculator.html', bmi=bmi, units=units) if __name__ == '__main__': app.run()
- bmi_calculator.html
<html> <head> <style> body { display: flex; justify-content: center; align-items: center; height: 100vh; } form { display: flex; flex-direction: column; align-items: center; } label { margin-top: 10px; } input[type="text"] { width: 50%; height: 30px; font-size: 16px; border: 1px solid #ccc; border-radius: 4px; padding: 10px; } input[type="submit"] { width: 50%; height: 40px; font-size: 18px; border: none; border-radius: 4px; background-color: #4CAF50; color: white; cursor: pointer; } input[type="submit"]:hover { background-color: #45a049; } p { font-size: 18px; margin-top: 20px; } </style> </head> <body> <form action="/calculate" method="post"> <label for="height">Height:</label> {% if units == 'metric' %} <label style="margin-left: 10px;">in meters</label><br> {% else %} <label style="margin-left: 10px;">in inches</label><br> {% endif %} <input type="text" id="height" name="height"><br> <label for="weight">Weight:</label> {% if units == 'metric' %} <label style="margin-left: 10px;">in kg</label><br> {% else %} <label style="margin-left: 10px;">in pounds</label><br> {% endif %} <input type="text" id="weight" name="weight"><br> <input type="radio" id="metric" name="units" value="metric" checked> <label for="metric">Metric</label><br> <input type="radio" id="imperial" name="units" value="imperial"> <label for="imperial">Imperial</label><br> <input type="submit" value="Calculate"> {% if bmi %} <p>Your BMI is {{ bmi | round(2) }}</p> {% endif %} </form> </body> </html>
У меня возникла проблема с обновлением меток единиц измерения при выборе другого параметра переключателя. На самом деле я не очень хорошо разбираюсь в HTML, но я думаю, что это не должно быть слишком сложно сделать.
Если вам интересно, весь разговор с ChatGPT для создания этого кода находится здесь, благодаря расширению Chrome с открытым исходным кодом ShareGPT, которое позволяет вам легко делиться разговорами ChatGPT с помощью одной ссылки. Вы можете проверить репозиторий расширений здесь.
Другие варианты использования ChatGPT
На мой взгляд, ChatGPT может предоставить вам шаблон/начальный код, который сэкономит много времени на разработку. Я видел видео, в котором разработчик игр использует его для написания различных сценариев C# для Unity. Это по-прежнему требует наблюдения, и вам нужно будет исправить некоторые ошибки.
Еще одним возможным вариантом использования ChatGPT может быть помощь в разработке UI/UX для приложения.
Лично я заинтересован в разработке игр, поэтому, возможно, я смогу использовать ChatGPT для реализации идей по созданию мира и дизайну персонажей. Это использование поможет со стороны программирования, хотя и косвенно.
Заключение
Я просто хотел поделиться примером того, как вы можете использовать ChatGPT, чтобы помочь вам в ваших проектах кодирования. Примечательно, что ChatGPT смог написать полнофункциональное веб-приложение Python с помощью Flask всего за несколько минут. Мне пришлось направить его к тому, что я хотел, но окончательный результат сделал свое дело. Честно говоря, я нахожу этот подвиг впечатляющим.
Если у вас есть другие варианты использования, дайте мне знать в комментариях. Кроме того, вы можете делиться ссылками на интересные разговоры с ИИ.
Вы также можете подписаться на мой канал YouTube для видео о проектах Python, автоматизации и криптографии:
Наконец, если вы хотите оставаться на связи и быть в курсе того, что я публикую, вы можете подписаться на мою новостную рассылку здесь. Я хочу, чтобы этот информационный бюллетень был полезным источником советов и приемов, которые я узнаю, а также местом для обсуждения новых проектов, над которыми я мог бы работать.
Первоначально опубликовано на https://andresberejnoi.com 8 января 2023 г.