24 часа с плагинами ChatGPT4 (ранний выпуск)

ОГЛАВЛЕНИЕ

"Введение"

Среда разработки чата
Анимация математики
Математика как музыка
Музыка визуально
Криптографические операции с данными
Модели машинного обучения
Читали? Рисовать? Играть? мне книгу
Читать на жестовом языке?

"Заключение"

ВВЕДЕНИЕ

Я использую альфа-версию ChatGPT plugins последние 24 часа, и это впечатляет. Эти плагины позволяют расширить возможности ChatGPT, подключаясь к таким приложениям, как Zapier, Expedia, Instacart и другим. Вы можете использовать чат для создания пользовательских функций Zapier, планировать свою следующую поездку и бронировать все через Expedia или даже сделать чат своим личным тренером и диетологом. А затем автоматически планируйте рецепты и заказывайте продукты через Instacart в соответствии с вашими конкретными тренировочными целями.

Несмотря на то, что варианты коммерческого использования еще не выпущены, OpenAI уже выпустила два плагина — веб-браузер и интерпретатор кода, — которые используют возможности GPT-4. Эти плагины предлагают IDE на основе чата, где пользователи могут создавать, отлаживать и запускать код, а также загружать файлы, включая изображения, CSV, PDF, ZIP и другие, непосредственно в интерфейсе чата. Без раннего доступа пользователи упускают весь потенциал GPT-4 в чате.

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

СРЕДА РАЗРАБОТКИ ЧАТА

Моей первоначальной целью было понять возможности и ограничения Chat IDE, включая среду выполнения и доступные пакеты. Я попытался сделать вызов API, но интерпретатор кода не поддерживает подключение к Интернету. Мне быстро сообщили:

Хорошо, отлично, но есть загрузчик файлов, возможно, я смогу обойти это, загрузив исполняемый файл. У меня был доступен файл .tgz x86–64 от ngrok, поэтому я загрузил и попросил чат извлечь и запустить его:

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

Что я сразу понял из списка, так это то, что pip, веб-сокеты и запросы доступны, что означает, что скоро будет разрешена возможность делать HTTP-запросы, создавать серверы/клиенты веб-сокетов и устанавливать пакеты с помощью pip. Я также заметил множество пакетов по математике, науке о данных и машинному обучению. Так вот куда я пошел дальше.

Оживление математики

Красота математики всегда была моим утешением, особенно когда я сталкивался со сложными понятиями, которые математика также приносит. Среди них набор Жюлиа, математический фрактал, демонстрирует красоту благодаря своей сложной структуре, созданной путем повторения квадратичной функции. Определяемые комплексной константой, его точки демонстрируют замысловатые узоры, раскрывающие взаимодействие между конвергенцией и дивергенцией внутри комплексной плоскости.

Я попросил ChatGPT создать мультикадровую анимацию фрактала и сохранить ее в формате gif -

Это было красиво. Но как бы это звучало как музыка? Как бы это звучало с музыкой?

МАТЕМАТИКА КАК МУЗЫКА

Любопытство заставило меня задуматься о том, как сет Джулии будет звучать как музыка. ChatGPT использовал три подхода к этому:

#1]создайте базовую синусоидальную волну и используйте значения интенсивности из набора Julia для изменения частоты волны: (julia_set_music.mp3)



#2] создать несколько синусоидальных волн с частотами, соответствующими музыкальным нотам в мажорной гамме A4, затем объединить эти волны для создания гармонических обертонов, где амплитуда результирующей волны модулируется на основе значений интенсивности из Юля поставила: (j_sin.mp4)



#3]итерации по точкам на комплексной плоскости и вычисление количества итераций, необходимых для каждой точки, чтобы выйти за границу набора, затем использовать время перехода для создания мелодии, время выхода используется для выберите ноты из предопределенной музыкальной гаммы и используйте несколько октав [будьте осторожны, это больно слушать]: (julia_harmonic.mp4)



Эти методы привели к довольно чужеродному звучанию, поэтому вместо этого ChatGPT попробовал следующее:

#4]используйте рекурсивный подход, систему Линденмайера (L-систему), чтобы сгенерировать фракталоподобную мелодию и определить набор правил, определяющих, как мелодия развивается на протяжении итераций — результатом является мелодия вдохновлен фрактальной природой набора Джулии: (julia_set_fractal_melody.mp4)



МУЗЫКА ВИЗУАЛЬНО

Одно из моих самых любимых музыкальных произведений — это менее минуты запись моего друга @MattStawinski, играющего на гитаре, это замечательно. Я попросил ChatGPT взять файл песни и сгенерировать несколько визуальных эффектов.

КРИПТОГРАФИЧЕСКИЕ ОПЕРАЦИИ С ДАННЫМИ

Имея доступ к «pycryptodome», ChatGPT также может выполнять криптографические операции с данными. Я дал ему образец файла .m4a и попросил продемонстрировать симметричное/асимметричное шифрование и дешифрование, хэширование и дайджест сообщений, а также цифровые подписи. Он разбил операцию на 4 части и протестировал ее с загруженными образцами данных.

from Crypto.Cipher import AES, PKCS1_OAEP
from Crypto.PublicKey import RSA
from Crypto.Random import get_random_bytes
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256

# Read the contents of the m4a file
with open('/mnt/data/gen.m4a', 'rb') as file:
    original_data = file.read()

# Part 1: Symmetric Encryption and Decryption
# Generate a random symmetric key and encrypt the data using AES
symmetric_key = get_random_bytes(32)
cipher_aes = AES.new(symmetric_key, AES.MODE_EAX)
nonce = cipher_aes.nonce
ciphertext, tag = cipher_aes.encrypt_and_digest(original_data)

# Decrypt the ciphertext using the same symmetric key
cipher_aes_decrypt = AES.new(symmetric_key, AES.MODE_EAX, nonce=nonce)
decrypted_data = cipher_aes_decrypt.decrypt_and_verify(ciphertext, tag)

# Part 2: Asymmetric Encryption and Decryption
# Generate a RSA public-private key pair
rsa_key = RSA.generate(2048)
private_key = rsa_key.export_key()
public_key = rsa_key.publickey().export_key()

# Encrypt the symmetric key using the RSA public key
rsa_public_key = RSA.import_key(public_key)
cipher_rsa = PKCS1_OAEP.new(rsa_public_key)
enc_symmetric_key = cipher_rsa.encrypt(symmetric_key)

# Decrypt the symmetric key using the RSA private key
rsa_private_key = RSA.import_key(private_key)
cipher_rsa = PKCS1_OAEP.new(rsa_private_key)
dec_symmetric_key = cipher_rsa.decrypt(enc_symmetric_key)

# Part 3: Hashing and Message Digest
# Calculate the SHA-256 hash of the original data
hash_obj = SHA256.new(original_data)
digest = hash_obj.digest()

# Part 4: Digital Signatures
# Sign the message digest using the RSA private key
signature = pkcs1_15.new(rsa_private_key).sign(hash_obj)

# Verify the signature using the RSA public key
try:
    pkcs1_15.new(rsa_public_key).verify(hash_obj, signature)
    signature_status = "Signature is valid."
except (ValueError, TypeError):
    signature_status = "Signature is invalid."

# Check if the original data matches the decrypted data
data_match = "Data matches." if original_data == decrypted_data else "Data does not match."

(data_match, signature_status, len(original_data), len(ciphertext))

МОДЕЛИ МАШИННОГО ОБУЧЕНИЯ

ChatGPT также имеет доступ к OpenCV, который отлично подходит для компьютерного зрения, а также поддерживает выполнение моделей. Я хочу посмотреть, сможет ли чат построить модель для понимания эмоций по изображениям. Я использую набор данных Cohn-Kanade Dataset (CK+), который содержит 920 отдельных выражений лица. Эти изображения все в оттенках серого и 48x48 пикселей каждое.

Файл CSV для набора данных содержит данные изображения, представленные в виде строк, где каждая строка имеет два столбца: «эмоции» и «пиксели». Столбец «эмоции» содержит метки, представляющие различные эмоции, а столбец «пиксели» содержит значения пикселей изображений. Значения пикселей представлены в виде строки целых чисел, разделенных пробелами. Эти значения пикселей могут быть преобразованы в двумерный массив для получения исходного изображения.

Сначала я попросил ChatGPT улучшить качество изображения. Это тестовое изображение №1:

Полученные гистограммы интенсивности пикселей сравнивают оригинал с выровненным:

ChatGPT не мог использовать CNN (сверточные нейронные сети), поэтому вместо этого я использовал классификатор k-ближайших соседей (KNN), который был реализован с помощью scikit-learn. После того, как чат с предварительной обработкой изображений успешно обучен, классификатор KNN оценил его на наборе данных. Точность модели в тестовом наборе вернула примерно65,76%.

С помощью модели были протестированы следующие случайные изображения, которые вернули предположение об эмоциях:

ЧИТАТЬ? РИСОВАТЬ? ИГРАТЬ? МНЕ КНИГА

Моя вторая любимая книга — «Над пропастью во ржи» Дж. Д. Сэлинджера. Итак, я скачал текстовую версию книги и загрузил ее в ChatGPT. Моя любимая книга всех времен, «100 лет одиночества» Маркеса, была настолько прекрасна и эпична, что я не могу испортить ее машиной.

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

Затем я попросил его создать визуальное изображение, используя текст ключевого события в книге. ChatGPT выбрал сцену, в которой Холден разговаривает со своим братом Д.Б. вне своего Ягуара. Вот что получилось:

Затем я загрузил несколько изображений из быстрого поиска в Google для Холдена, изображение Дж. Д. Сэлинджера для использования в качестве Д. Б. и изображение ягуара 1960-х годов. Я надеюсь, что наличие этих изображений облегчит ChatGPT их создание. Вот что я получил:

Однако он смог очень эффективно создать штриховую графику изображений:

Он не так хорошо работал с задачами, основанными на изображениях, которые я ему давал. По крайней мере, это было не то, чего я ожидал. Как человек, я хотел реального изображения, как если бы человек сфотографировал событие. Но для чат-бота с искусственным интеллектом это не так уж плохо. Это натолкнуло меня на еще одну идею: могу ли я создать игру, используя текст из книги в качестве сценария? Создание игры в рамках ограничений ChatGPT привело меня к текстовой игре. Вот как он начал создавать игру и дорабатывать ее:

Вот некоторые из «геймплея»:

ЧИТАТЬ НА ЯЗЫКЕ ЖЕСТОВ?

Здорово, что ChatGPT может за секунды прочитать целую книгу на английском языке. Но! Может ли он читать ASL (американский язык жестов)? Ответ - нет. По крайней мере, в моем случае. Это новая версия фразы «работает на моей машине»? — «Это сработало с подсказкой, которую я набрал».

Я дал чату изображения букв на языке ASL и спросил, какая буква была показана. Он быстро правильно понял букву «А», но затем продолжал бороться и угадывать остальные. Чтобы защитить целостность информации, каждый файл, кроме первых 4 букв, был назван с использованием случайного буквенно-цифрового числа. Кроме того, буквы ASL «J» и «Z» не включены, поскольку для их изображения требуется движение.

И это вывод, который он дал для распознанных букв:

ЗАКЛЮЧЕНИЕ

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

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

Я оставлю вас переваривать это. Ты знаешь, где меня найти!

С уважением,
Шуб 🍻🍻

🐦 Twitter (@shubcodes) 🐦
💼LinkedIn (linkedin.com/in/sargha) 💼
🐙 GitHub (github.com/shubcodes) 🐙
📝 Блог ( https://shub.codes) 📝
🧑‍💻 Переполнение стека🧑‍💻