让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析
Posted 大风无痕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析相关的知识,希望对你有一定的参考价值。
让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析
标签:new bing、GPT-4
文章目录
- 让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析
前言
前天 Open AI 的 GPT-4上线了,所能达到的高度惊爆人的眼球。上线当天,我就把应用 GPT-4 的新版微软搜索引擎 bing 使用环境配置好了。今天试着用这个 bing 的聊天功能,一步步与 bing 沟通,真还让 bing 替我编写了一个令我满意的 Python 程序。而这个画阿基米德螺旋线的 Python 程序,我在几年前自己 Coding 竟然花了半个月,才达到满意的结果。新科技带来的变化,令人眼花缭乱、一时难以判断走向,是不是很惊恐?
下面就在这里展现、赏析这个聊天过程吧。
1 让 bing 编写一个画螺旋线的程序
1.1 我的要求(1)
1.2 bing 的回答全文(1)
由于 bing Chat 还不支持完整截图,去网页打开吧。点击此处或者复制链接后在 new bing 中打开(需要在 new bing 中登录后才能打开,下同)。
1.3 bing 编写的程序
为了美观,略有改动(step *= 0.99
改为step *= 0.999
),下同。
# 导入turtle模块,用于绘图
import turtle
# 导入math模块,用于计算
import math
# 创建一个turtle对象,命名为t
t = turtle.Turtle()
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 5 # 螺旋线的起始半径
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度
step = 5 # 螺旋线的步长
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.999
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
1.4 程序运行的结果
2 让 bing 去掉多余的第一笔
看上去从原点到螺旋线的起点的那条很短的直线即第一笔不是螺旋线的一部分,是多余的。
2.1 我的要求(2)
2.2 bing 的回答全文(2)
2.3 我的要求(3)
2.4 bing 的回答全文(3)
2.5 我的要求(4)
2.6 bing 的回答全文(4)
2.7 我的要求(5)
2.8 bing 的回答全文(5)
2.9 bing 编写的程序
# 导入turtle模块,用于绘图
import turtle
# 导入math模块,用于计算
import math
# 创建一个turtle对象,命名为t
t = turtle.Turtle()
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 5 # 螺旋线的起始半径
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度
step = 5 # 螺旋线的步长
# 抬起画笔,不留痕迹(新增代码)
t.penup()
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.999
# 放下画笔,开始绘制(新增代码)
t.pendown()
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
2.10 程序运行的结果
3 改正第二笔起笔没有放下的错误
从运行结果看,第一笔前把笔抬起后,没有及时放下,导致后边的笔画全部没有画,需要改正。
3.1 我的要求(6)
3.2 bing 的回答全文(6)
3.3 我的要求(7)
3.4 bing 的回答全文(7)
3.5 bing 编写的程序
# 导入turtle模块,用于绘图
import turtle
# 导入math模块,用于计算
import math
# 创建一个turtle对象,命名为t
t = turtle.Turtle()
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 5 # 螺旋线的起始半径
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度
step = 5 # 螺旋线的步长
# 抬起画笔,不留痕迹(新增代码)
t.penup()
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.999
# 放下画笔,开始绘制(新增代码)
t.pendown()
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
3.6 程序运行的结果
3.7 我的要求(8)
3.8 bing 的回答全文(8)
3.9 bing 编写的程序
# 导入turtle模块,用于绘图
import turtle
# 导入math模块,用于计算
import math
# 创建一个turtle对象,命名为t
t = turtle.Turtle()
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 5 # 螺旋线的起始半径
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度
step = 5 # 螺旋线的步长
# 抬起画笔,不留痕迹(新增代码)
t.penup()
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
# 放下画笔,开始绘制(新增代码)
t.pendown()
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.999
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
3.10 程序运行的结果
3.11 我的要求(9)
3.12 bing 的回答全文(9)
3.13 bing 编写的程序
# 导入turtle模块,用于绘图
import turtle
# 导入math模块,用于计算
import math
# 创建一个turtle对象,命名为t
t = turtle.Turtle()
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 5 # 螺旋线的起始半径
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度
step = 5 # 螺旋线的步长
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
if angle > 0: # 如果角度大于0,说明不是第一笔(新增代码)
t.pendown() # 放下画笔,开始绘制(新增代码)
else: # 否则,说明是第一笔(新增代码)
t.penup() # 抬起画笔,不留痕迹(新增代码)
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.999
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
3.14 程序运行的结果
至此,必应终于把多余的第一笔去掉了。表扬一下。
3.15 我的要求(10)
3.16 bing 的回答全文(10)
为了 new bing 以后能正确画出,特意总结了一下,令人发笑的是 new bing 还找了理由推脱。
3.17 我的要求(11)
3.18 bing 的回答全文(11)
(略)
3.19 我的要求(12)
3.20 bing 的回答全文(12)
4 让画笔箭头方向跟螺旋线方向一致
画笔箭头方向始终朝着右面,感觉怪怪的,让 bing 改一下。
4.1 我的要求(13)
4.2 bing 的回答全文(13)
4.3 bing 编写的程序
# 导入turtle模块,用于绘图
import turtle
# 导入math模块,用于计算
import math
# 创建一个turtle对象,命名为t
t = turtle.Turtle()
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 10 # 螺旋线的起始半径(修改代码)
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度(修改代码)
step = 5 # 螺旋线的步长
# 移动画笔到原点(0, 0)(新增代码)
t.goto(0, 0)
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
if angle > 0: # 如果角度大于0,说明不是第一笔(新增代码)
t.pendown() # 放下画笔,开始绘制(新增代码)
else: # 否则,说明是第一笔(新增代码)
t.penup() # 抬起画笔,不留痕迹(新增代码)
# 设置画笔朝向与螺旋线方向一致(新增代码)
t.setheading(angle)
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.99
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
4.4 程序运行的结果
还是不正确,画笔箭头方向与螺旋线垂直了。
4.5 我的要求(14)
4.6 bing 的回答全文(14)
(略)
4.7 bing 编写的程序
# 设置画笔的颜色和速度
t.color("blue")
t.speed(0)
# 设置阿基米德螺旋线的参数
a = 10 # 螺旋线的起始半径(修改代码)
b = 0.1 # 螺旋线的增长系数
angle = 0 # 螺旋线的起始角度(修改代码)
step = 5 # 螺旋线的步长
# 移动画笔到原点(0, 0)(新增代码)
t.goto(0, 0)
# 循环绘制阿基米德螺旋线,直到半径超过200像素或角度超过1080度
while a < 200 and angle < 1080:
# 计算阿基米德螺旋线上当前点的极坐标(r, theta)
r = a + b * angle # 半径等于起始半径加上增长系数乘以角度
theta = math.radians(angle) # 角度转换为弧度制
# 计算阿基米德螺旋线上当前点的直角坐标(x, y)
x = r * math.cos(theta) # x坐标等于半径乘以余弦值
y = r * math.sin(theta) # y坐标等于半径乘以正弦值
if angle > 0: # 如果角度大于0,说明不是第一笔(新增代码)
t.pendown() # 放下画笔,开始绘制(新增代码)
else: # 否则,说明是第一笔(新增代码)
t.penup() # 抬起画笔,不留痕迹(新增代码)
# 设置画笔朝向与螺旋线方向一致(新增代码)
t.setheading(angle + 90)
# 移动画笔到当前点,并画出一小段曲线
t.goto(x, y)
# 更新角度和步长,使得曲线更平滑
angle += step
step *= 0.999
# 结束绘图,并保持窗口显示直到用户关闭
turtle.done()
4.8 程序运行的结果
结语
通过与 new bing 沟通,让 bing 为我编写了一个令人满意的程序。从中可以得出以下启发:
- 1、我们需要 new bing 做的事情可以逐步描述,并不需要一次描述清楚;
- 2、new bing 还会犯糊涂,需要不断指正。
试用微软的 New Bing
ChatGPT 现在大家都已经非常熟悉了了,走到哪都能听到讨论的声音,是基于 GPT3.5 的一个语言模型。二微软在 2 月推出的新必应(New Bing)是一个基于 GPT4(猜测)模型的搜索和聊天工具,它可以提供更准确和实时的搜索结果,并且集成了 Edge 浏览器的数据资源。
最近申请了 New Bing 简单试用 ,觉得还挺不错的。
申请
可以按照下面的步骤来进行新必应(New Bing)的申请:
1、先下载并安装 Edge 浏览器 dev 版本,在 这个地址进行下载安装:https://www.microsoftedgeinsider.com/zh-cn/download/dev
2、打开浏览器的设置->关于,可以进行 New Bing 使用的申请:
3、登录后加入候补名单:
4、然后就是等待,很幸运,一天的时间就通过了申请,使用界面如下:
基础使用
New Bing 的主题功能分为聊天、撰写和见解。
聊天
和 ChatGPT 类似,使用问答的形式进行交互,除了基础的输入框进行提问外,还能设置响应的语气。
撰写
将文字的创作单独剥离出来,提供更多的配置选项,更方便使用:
特点
实时性
在聊天功能中,虽然和 ChatGPT 一样都是问答的模式,但它可以实时访问网络数据,找到 ChatGPT 没见过的数据,更加实时。
例如:我们分别让 New Bing 和 ChatGPT 评价下春节档的电影《满江红》就能看出区别了。
ChatGPT 并不知道春节上映的电影《满江红》,因为它的语言模型是 2021 年训练的,但可怕的是 ChatGPT 并不知道自己不知道,仍然会胡说八道一通。
而在 New Bing 中,能够搜索到最新的信息,还能给出出处链接:
互动性
在问答的过程中 ,New Bing 会给出一些推荐的关键词来和我们进行互动,我们可以通过给出的关键词进一步和 New Bing 进行互动,也可以自己输入新的问题。
准确性
New Bing 会根据你提的问题结合搜搜引擎和基础语言模型,最终组成答案进行输出,而且在答案中会给出来源出处,点击链接可以进入到原始网页进行查看。
文章总结
在网页中打开一篇文章,可以让 New Bing 来协助我们进行阅读,总结文章的内容。
遗憾
1、2 月 18 日,微软通过官方博客宣布,基于 AI 的新版必应对话功能将加入问答限额,每天最多回答 50 次问题,每次连续对话最多回答 5 个问题。微软称,根据统计,绝大多数用户都能在 5 轮问答内找到满意答案,只有大约 1% 的对话产生超过 50 条消息;定期清除对话记录有助于避免模型产生混淆。
2、回答的效果上好像也做了些调整,变得相对严肃,记得刚出来时,看了 B 站一个视频,它的风格是这样的:
3、账号容易被封,就在我写这篇文章的时候,我的账号已经是不能使用了,一些网友给出的最有效的解决方式就是申请一个新的账号。
最后
ChatGPT、New Bing、国内的 MOSS、Google 的 Bard ,Notion 也推出了 AI ,相信很快,更多的、更易用的各种应用都会来到我们身边,真的感觉 AI 新纪元要来临了。
相关阅读:
ChatGPT 之后,再玩玩 Stable-Diffusion
以上是关于让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析的主要内容,如果未能解决你的问题,请参考以下文章
微软计划在未来几周内使用更快版本的 ChatGPT 更新 Bing