iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解如何在ChatGPT内构建一个Python解释器
  • 191
分享到

详解如何在ChatGPT内构建一个Python解释器

ChatGPT构建Python解释器ChatGPT Python解释器ChatGPT Python 2023-02-15 15:02:36 191人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录下面是初始化ChatGPT的命令:总结引用:Art Kulakov 《How to Build a python Interpreter Inside ChatGPT》 这个灵感

引用:Art Kulakov 《How to Build a python Interpreter Inside ChatGPT》

这个灵感来自于一个类似的故事,在ChatGPT里面建立一个虚拟机(Building A Virtual Machine inside ChatGPT)。给我留下了深刻的印象,并决定尝试类似的东西,但这次不是用linux命令行工具,而是让ChatGPT成为我们的Python解释器。

下面是初始化ChatGPT的命令:

我想让你充当Python解释器。我将输入命令,你将用python解释器输出。我希望你只回答终端输出中的一个独特的代码块,而不是其他。不要写解释,只输出python输出的内容。不要输入命令,除非我指示你这样做。当我需要用英语告诉你一些事情的时候,我会通过把文本放在大括号里,就像这样:{示例文本}。我的第一个命令是 a=1。

从上图不能看出效果很好,让我们试试一些简单的算术表达式。

又成功了;如果我们使用一个没有导入的库,会发生什么?

虽然它决定帮我解决一个错误。其实我不希望它这样做,所以我再次要求它不要输出任何东西,除了python代码。

{只打印python输出,不打印任何注释}。

顺便说一下,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的输出结果:

这与真实结果很接近! 如果我们在真正的python中绘制预测图,我们将得到以下图表:

关于这个任务的另一个有意思的点:我又运行了一次同样的命令,当时的输出结果与真实结果完全吻合。因此,我们可以认为ChatGPT通过了这个任务。

好了,现在是时候做一些简单的神经网络的事情了!也许我们可以装一个简单的Keras模型。也许我们可以装一个简单的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没有权限访问这个文件...

好吧,这是正确的输出,而我很害怕。如果我把网络的结构改成一个不正确的结构,会发生什么?让我们改变一下输入的shape。

model.add(Dense(12, input_shape=(6,), activation='relu'))

看来我在失去工作之前还有几年时间;这次ChatGPT没有理解这个技巧,仍然打印了输出。让我们做最后一项任务--在OpenAI里面调用Huggingface怎么样?

正确的输出:

[{'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的输出结果很接近,但是不一致。我猜测是因为Huggingface的api改变了,由于ChatGPT没有在最新的历史数据上进行训练,所以它以旧的格式输出结果。

总结

在过去的几天里,我一直在玩ChatGPT,我被使用这个工具的无限可能性所吸引。虽然它不是一个真正的python解释器,但它在为我编译python代码方面仍然做得很好。我还发现,它能很好地解决Hard难度的 LeetCode 代码问题。

最后再多说一句:ChatGPT,你将如何帮助人类?

如果你还没有尝试过ChatGPT,你一定要试试,因为它就是未来!

以上就是详解如何在ChatGPT内构建一个Python解释器的详细内容,更多关于ChatGPT构建Python解释器的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解如何在ChatGPT内构建一个Python解释器

本文链接: https://www.lsjlt.com/news/196254.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解如何在ChatGPT内构建一个Python解释器
    目录下面是初始化ChatGPT的命令:总结引用:Art Kulakov 《How to Build a Python Interpreter Inside ChatGPT》 这个灵感...
    99+
    2023-02-15
    ChatGPT构建Python解释器 ChatGPT Python解释器 ChatGPT Python
  • 如何利用Python开发一个Python解释器
    本篇文章给大家分享的是有关如何利用Python开发一个Python解释器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言:计算机只能理解机器码。归根结底,编程语言只是一串文字...
    99+
    2023-06-22
  • Golang如何快速构建一个CLI小工具详解
    目录如何Golang快速构建一个CLI小工具先上效果那么如何实现呢?如何Golang快速构建一个CLI小工具 在现实开发的过程中,大家会发现很多开源的框架都会有着自己的一个CLI工具...
    99+
    2024-04-02
  • 利用 Python 开发一个 Python 解释器
    目录1.标记(Token)2.词法分析器(Lexer)3.巴科斯-诺尔范式(Backus-Naur Form,BNF)4.解析器(Parser)前言: 计算机只能理解机器码。归根结底...
    99+
    2024-04-02
  • 如何建立一个超图详解
    1.图和超图 图作为一种数据结构,由节点和边组成,可由下图表示。其中一个边只能链接两个节点。一个图可表示为G=(v,e,w) 其中v表示节点,e表示边,w表示节点的特征。关于图的表示...
    99+
    2024-04-02
  • 如何使用js写一个js解释器
    这篇文章主要介绍了如何使用js写一个js解释器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先来看一下效果一个最简单的解释器上面有提到,js...
    99+
    2024-04-02
  • 详解如何创建一个.NETCore工程
    1、打开VS2019,点击“创建新项目”,选择“ASP.NET Core Web应用”,设置路径和文件名,选择目标框架(.net co...
    99+
    2024-04-02
  • 在VScode里如何添加Python解释器
    这篇“在VScode里如何添加Python解释器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在VScode里如何添加Pyt...
    99+
    2023-07-05
  • 如何在Python中构建一个简单的推荐系统
    如何在Python中构建一个简单的推荐系统推荐系统是为了帮助人们发现和选择他们可能感兴趣的物品而设计的。Python提供了丰富的库和工具,可以帮助我们构建一个简单但有效的推荐系统。本文将介绍如何使用Python构建一个基于用户的协同过滤推荐...
    99+
    2023-10-22
    Python 推荐系统 构建
  • 如何理解Python解释器源码
    这篇文章主要介绍“如何理解Python解释器源码”,在日常操作中,相信很多人在如何理解Python解释器源码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Python解释器源码”的疑惑有所帮助!接下来...
    99+
    2023-06-15
  • 如何使用python解释器
    今天就跟大家聊聊有关如何使用python解释器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、在终端输入python就可以运行Python解释器了。键入Control + D或者输...
    99+
    2023-06-15
  • 如何在python中创建一个ndarray
    这篇文章将为大家详细讲解有关如何在python中创建一个ndarray,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • Flutter学习之创建一个内嵌的navigation详解
    目录简介搭建主Navigator构建子路由总结简介 我们在flutter中可以使用Navigator.push或者Navigator.pushNamed方法来向Navigator中添...
    99+
    2023-03-13
    Flutter创建内嵌navigation Flutter 内嵌navigation Flutter navigation
  • 使用typescript+webpack构建一个js库的示例详解
    目录入口文件tsconfig配置webpack配置文件webpack入口文件配置webpack为typescript和less文件配置各自的loaderwebpack的output配...
    99+
    2024-04-02
  • 一文详解如何创建自己的Python装饰器
    目录1、@staticmethod2、自定义装饰器3、带参数的装饰器python装饰器在平常的python编程中用到的还是很多的,在本篇文章中我们先来介绍一下python中最常使用的...
    99+
    2024-04-02
  • 如何在Java中构建一个JDBC应用程序
    这篇文章给大家介绍如何在Java中构建一个JDBC应用程序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;4. 网页...
    99+
    2023-06-14
  • 如何使用Django构建一个PHP容器?
    Django是一个流行的Python Web框架,它被广泛用于构建高性能、易于维护的Web应用程序。而PHP是一种常见的编程语言,被广泛用于Web开发。在本文中,我们将介绍如何使用Django构建一个PHP容器。 1.准备工作 在开始之前,...
    99+
    2023-08-06
    容器 django 索引
  • 详解如何通过Python制作一个密码生成器
    目录原由编程思路代码效果如下补充原由 定期更换密码是一种非常重要的安全措施,这种做法可以有效地保护你的账户和个人信息不受黑客和网络攻击者的侵害。 密码泄露是一个非常普遍的问题,许多人...
    99+
    2023-05-19
    Python实现密码生成器 Python密码生成器 Python密码
  • 详解如何构建自己的react hooks
    目录1. 常用的一个 hooks1.1 useState: 状态钩子1.2 useEffect: 副作用钩子1.3 useMemo 和 useCallback2. 实现几个自定义的 ...
    99+
    2024-04-02
  • 如何用前端代码在浏览器中构建一个Tableau
    如何用前端代码在浏览器中构建一个Tableau,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在Gartner最新的对商务智能软件的专业分析报告中,Tableau持续领跑。Mic...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作