Настройка интерпретатора Python внутри CHATGPT. Ai Пишет код на Python за вас.
Вам больше не нужен интерпритатор.
Этот рассказ вдохновлён другой историей, “Настройка Виртуальной Машины внутри ChatGPT”. Я был впечатлен и решил попробовать нечто подобное – в этот раз вместо командной строки Linux давайте попросим ChatPGT стать нашим интерпретатором Python.Можно воспринимать эту статью как инструкцию по работе с CHATGpt.
Вот исходная команда для инициализации ChatPGT:
Я хочу, чтобы ты выступил в роли интерпретатора Python. Я буду вводить команды, а ты будешь отвечать, что должен показать вывод Python. Я хочу, чтобы ты отвечал только с выводом на терминал внутри одного уникального блока кода, и ничего больше. Не пиши объяснений, выводи только то, что выводит Python. Не вводи команды пока я не дам соответствующих инструкций. Когда мне нужно сказать тебе что-то по-английски, я буду делать это, помещая текст внутри фигурных скобок, как это сделано здесь: {пример текста}. Моя первая команда – a=1.
Похоже что отлично работает; попробуем простые арифметические выражения.
Снова сработало. Посмотрим что будет если мы используем не импортированную библиотеку.
Ну, он решил помочь мне исправить ошибку. На самом деле я не хочу чтобы он так делал, так что я попрошу его не выводить ничего кроме кода Python.
@bigdatai – огромное количество бесплатных датасеов и инструментов машинного обучения.
{Печатай только вывод Python, не печатай никаких комментариев}
К сведению – ChatGPT иногда может использовать библиотеки, которые не были импортированы. Но в этот раз мне повезло, и он вывел сообщение об ошибке.
Хорошо. Я уверен, что ChatGPT способен решать простые задачи – давайте попробуем что-то более сложное. Пусть он выведет результат алгоритма двоичного поиска.
# Алгоритм двоичного поиска
def binarySearch(array, x, low, high):
# Повторять пока указатели не совпадут
while low <= high:
mid = low + (high - low)//2
if array[mid] == x:
return mid
elif array[mid] < x:
low = mid + 1
else:
high = mid - 1
return -1
array = [3, 4, 5, 6, 7, 8, 9]
x = 4
result = binarySearch(array, x, 0, len(array)-1)
if result != -1:
print("Element is present at index " + str(result))
else:
print("Not found")
Похоже, что он не хочет выполнять мой запрос выводить только Python – но выводит он всё равно правильно, впечатляет!
Давайте попробуем ввести несуществующее число, скажем:
x = 4.5
Ну, с этим мы, похоже, справились.
Перейдём к более комплексным вещам. Давайте начнем с простых алгоритмов машинного обучения, таких как линейная регрессия. Интересно, способен ли ChatGPT решить простую задачу оптимизации…
import numpy as np
import matplotlib.pyplot as plt
def estimate_coef(x, y):
#количество наблюдений/точек
n = np.size(x)
# среднее значение векторов x, y
m_x = np.mean(x)
m_y = np.mean(y)
# вычисление поперечного отклонения и отклонения относительно x
SS_xy = np.sum(y*x) - n*m_y*m_x
SS_xx = np.sum(x*x) - n*m_x*m_x
# вычисление коэффициента регрессии
b_1 = SS_xy / SS_xx
b_0 = m_y - b_1*m_x
return (b_0, b_1)
def plot_regression_line(x, y, b):
# построение фактических точек в виде диаграммы рассеяния
plt.scatter(x, y, color = "m",
marker = "o", s = 30)
# вектор прогнозируемого отклика
y_pred = b[0] + b[1]*x
# построение регрессионной линии
plt.plot(x, y_pred, color = "g")
# назначение ярлыков
plt.xlabel('x')
plt.ylabel('y')
# функция отображения графика
plt.show()
def main():
# наблюдения / данные
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([1, 3, 2, 5, 7, 8, 8, 9, 10, 12])
# расчет коэффициентов
b = estimate_coef(x, y)
print("Estimated coefficients:\nb_0 = {} \
\nb_1 = {}".format(b[0], b[1]))
# построение линии регрессии
# plot_regression_line(x, y, b)
if __name__ == "__main__":
main()
Правильные ответы в этой задаче:
Расчетные коэффициенты:
b_0 = 1.2363636363636363
b_1 = 1.1696969696969697
Довольно близко к действительности! Если мы построим прогноз в реальном Python, то получим следующий график:
Ещё один интересный факт об этой задаче: после того как я запустил ещё раз ту же самую команду вывод полностью соответствовал действительности. Таким образом, мы можем считать это задание выполненным.
Итак, пришло время для простых нейронных сетей! Может быть, мы можем использовать простую модель Keras?
# первая нейронная сеть с keras делает прогнозы
from numpy import loadtxt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# загрузка набора данных
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',')
# разделить на переменные ввода (X) и вывода (y)\
X = dataset[:,0:8]
y = dataset[:,8]
# определяем модеаль keras
model = Sequential()
model.add(Dense(12, input_shape=(8,), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# компилируем модель keras
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# подгонка модели keras к набору данных
model.fit(X, y, epochs=150, batch_size=10, verbose=0)
# делаю прогнозы классов с помощью модели
predictions = (model.predict(X) > 0.5).astype(int)
# суммируем итоге первых 5 случаев
for i in range(5):
print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i])
Причём набор данных на самом деле файл CSV, у ChatGPT нет доступа к этому файлу…
Ладно, это верный вывод и мне страшно. А что случиться если изменю архитектуру сети на неверную?
Давайте изменим форму ввода:
model.add(Dense(12, input_shape=(6,), activation='relu'))
Ха! Похоже у меня ещё есть несколько лет до того как я потеряю работу; в этот раз ChatGPT не понял уловки и всё равно напечатал вывод.
Ладно, давайте выполним последнее задание. Как насчёт Hugginface внутри OpenAI?
Правильный вывод:
[{'entity_group': 'ORG',
'score': 0.9472818374633789,
'word': 'Apple',
'start': 0,
'end': 5},
{'entity_group': 'PER',
'score': 0.9838564991950989,
'word': 'Steve Jobs',
'start': 74,
'end': 85},
{'entity_group': 'LOC',
'score': 0.9831605950991312,
'word': 'Los Altos',
'start': 87,
'end': 97},
{'entity_group': 'LOC',
'score': 0.9834540486335754,
'word': 'Californie',
'start': 100,
'end': 111},
{'entity_group': 'PER',
'score': 0.9841555754343668,
'word': 'Steve Jobs',
'start': 115,
'end': 126},
{'entity_group': 'PER',
'score': 0.9843501806259155,
'word': 'Steve Wozniak',
'start': 127,
'end': 141},
{'entity_group': 'PER',
'score': 0.9841533899307251,
'word': 'Ronald Wayne',
'start': 144,
'end': 157},
{'entity_group': 'ORG',
'score': 0.9468960364659628,
'word': 'Apple Computer',
'start': 243,
'end': 257}]
Вывод ChatGPT:
[{'word': 'Apple', 'score': 0.9993804788589478, 'entity': 'I-ORG'}, {'word': 'Steve', 'score': 0.999255347251892, 'entity': 'I-PER'}, {'word': 'Jobs', 'score': 0.9993916153907776, 'entity': 'I-PER'}, {'word': 'Steve', 'score': 0.9993726613044739, 'entity': 'I-PER'}, {'word': 'Wozniak', 'score': 0.999698519744873, 'entity': 'I-PER'}, {'word': 'Ronald', 'score': 0.9995181679725647, 'entity': 'I-PER'}, {'word': 'Wayne14', 'score': 0.9874711670837402, 'entity': 'I-PER'}, {'word': 'Apple', 'score': 0.9974127411842163, 'entity': 'I-ORG'}, {'word': 'Computer', 'score': 0.968027651309967, 'entity': 'I-ORG'}, {'word': 'Apple', 'score': 0.8259692192077637, 'entity': 'I-ORG'}]
Результаты близки к результатам вывода huggingface. Я предполагаю, что API Huggingface изменился, и поскольку ChatGPT не был обучен на последних исторических данных, он выводит результат в старом формате.
В заключение
Я играл с ChatGPT последние пару дней, и я очарован бесконечными возможностями использования этого инструмента. Хотя это не настоящий интерпретатор Python, он все же отлично справляется с компиляцией кода Python для меня.
И в заключение:
chat gpt как ты поможешь человечеству?
Являясь большой языковой моделью, обученной OpenAI, я призван помогать пользователям генерировать человекоподобный текст на основе предоставленных мне данных. Я не являюсь физическим существом и не имею возможности напрямую помогать человечеству так же, как это может делать живой человек. Однако, помогая пользователям генерировать текст, я могу помочь в общении и обмене информацией, что косвенно может принести пользу человечеству. Например, я могу помочь пользователям писать эссе, статьи или документы, которые могут обучать и информировать других, или я могу помочь пользователям вести более эффективные и продуктивные беседы. В конечном счете, от отдельных людей и общества в целом зависит, как мои способности могут быть использованы для помощи человечеству.