Как создать интерпретатор Python внутри ChatGPT

Как создать интерпретатор Python внутри ChatGPT

24 декабря 2022 г.

Эта история основана на похожей истории Создание виртуальной машины внутри ChatGPT. Я был впечатлен и решил попробовать что-то подобное, но на этот раз вместо инструмента командной строки Linux давайте попросим ChatGPT быть нашим интерпретатором Python.

Вот начальная команда для инициализации ChatGPT:

I want you to act as a Python interpreter. I will type commands and you will reply with what the
python output should show. I want you to only reply with the terminal output inside one unique
code block, and nothing else. Do no write explanations, output only what python outputs. Do not type commands unless I
instruct you to do so. When I need to tell you something in English I will do so by putting
text inside curly brackets like this: {example text}. My first command is a=1.

Кажется, работает отлично; давайте попробуем некоторые простые арифметические выражения.

Снова заработало; что произойдет, если мы используем библиотеку, которая не была импортирована?

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

{Print only python output, do not print any comments}

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

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

# Binary Search in python


def binarySearch(array, x, low, high):

    # Repeat until the pointers low and high meet each other
    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):
    # number of observations/points
    n = np.size(x)

    # mean of x and y vector
    m_x = np.mean(x)
    m_y = np.mean(y)

    # calculating cross-deviation and deviation about x
    SS_xy = np.sum(y*x) - n*m_y*m_x
    SS_xx = np.sum(x*x) - n*m_x*m_x

    # calculating regression coefficients
    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):
    # plotting the actual points as scatter plot
    plt.scatter(x, y, color = "m",
               marker = "o", s = 30)

    # predicted response vector
    y_pred = b[0] + b[1]*x

    # plotting the regression line
    plt.plot(x, y_pred, color = "g")

    # putting labels
    plt.xlabel('x')
    plt.ylabel('y')

    # function to show plot
    plt.show()

def main():
    # observations / data
    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])

    # estimating coefficients
    b = estimate_coef(x, y)
    print("Estimated coefficients:nb_0 = {}  
          nb_1 = {}".format(b[0], b[1]))

    # plotting regression line
    # plot_regression_line(x, y, b)

if __name__ == "__main__":
    main()

Правильный ответ для этого задания:

Estimated coefficients:
b_0 = 1.2363636363636363        
b_1 = 1.1696969696969697

Вот вывод ChatGPT:

Это близко к реальности! Если мы построим прогноз на реальном питоне, то получим следующий график:

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

Хорошо, пришло время для некоторых простых вещей нейронной сети! Может быть, мы сможем подогнать простую модель Keras?

# first neural network with keras make predictions
from numpy import loadtxt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# load the dataset
dataset = loadtxt('pima-indians-diabetes.csv', delimiter=',')
# split into input (X) and output (y) variables
X = dataset[:,0:8]
y = dataset[:,8]
# define the keras model
model = Sequential()
model.add(Dense(12, input_shape=(8,), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10, verbose=0)
# make class predictions with the model
predictions = (model.predict(X) > 0.5).astype(int)
# summarize the first 5 cases
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 не понял трюка и все равно напечатал вывод.

Хорошо, давайте выполним последнее задание; как насчет вызова Huggingface внутри 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 для меня. Я также обнаружил, что он share&utm_medium=member_desktop">хорошо решает СЛОЖНЫЕ вопросы по коду; проверьте это!

И в заключение:

chat gpt how will you help the humanity?

Если вы еще не пробовали ChatGPT, вам обязательно стоит это сделать. это будущее!

:::информация Также опубликовано здесь.

:::


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE