区块链:7 个步骤入门区块链

2017 年是比特币大爆发的一年。在潜水这么多年之后,比特币的价格一下子从 1000 美元左右飞涨至将近 20000 美元。多少人摇身一变,成了“密码学货币交易专家”。

赶上好时候确实可以狠赚一笔,不过醒醒吧,盛宴已散。

1.png

-2013 年 10 月至 2018 年 10 月的比特币价格走势图(来源:Coinmarketcap.com)-

尽管让人们肾上腺素爆棚的主要还是飞速攀升的市值,但这波热潮最初还是由技术掀起的。区块链技术依然有巨大潜力。现在正是业务开发人员、企业家和个人爱好者怀着一腔热血上车的时候。不过热血翻涌之余,首先还是应该增进一下对区块链技术的了解。

只可惜,目前讲解区块链技术的文章不是涉及太多复杂的技术术语,就是太过肤浅,缺乏深度。这两种类型的文章都不便于读者清楚地理解文章内容。怎么办呢?我建议你不妨就从这篇文章开始。只要 10 分钟,就能了解区块链技术为什么这么具有颠覆性了。花这点时间还是物超所值的。祝阅读愉快。

引言

首先,区块链是一种电子化数据的存储方法。数据是以区块的形式出现的,想象一下有很多存储着数字化数据的区块。这些区块都链接在了一起,为其内部数据赋予了不可变性。当一个数据块被链接到了这条链上,其内部数据就再也无法更改了。一旦某个区块被添加到了链上,里面的数据对任何人都是公开可见的。这项技术具有非凡的革新意义,可以用来记录我们能想到的几乎所有数据(例如,产权、身份、余额、病历等等),同时不存在被篡改记录的风险。假设我买了一套房子,把产权证拍照上传到了区块链上,我就可以证明我在那个时刻享有这套房产的所有权。一旦这个信息上链,就没人能够更改它(好吧,还是有办法更改的,这里有一篇进阶阅读材料,我建议你稍后阅读)。因此,区块链是一种存储数据且保证数据不被篡改的方法。这听上去不错,不过随之而来的问题是: 我们是怎么实现这样的技术的?

(校对注:吹毛求疵来说,这一段表述并非无懈可击,但姑且可以这么先记着。)

第一阶——交易数据

好吧,我们先拿比特币区块链做个例子。比特币区块链是现存历史最悠久的区块链。在比特币区块链上,每个区块的大小在 1 MB 左右。至截稿日,这条链上已经累积了 52.5 万个区块,链上存储的数据总量约为 52.5 万 MB 。(校对注:其实远远没有 52.5 MB,因为在早期,很多区块都没有打满 1MB。另,截至今日(2019 年 4 月

24 日,已经积累了 57.3 万个区块,总数据量约 250 GB。)

比特币区块链上仅存储 比特币的交易数据 。它就像是一个庞大的交易记录库,可追溯至第一笔比特币交易。在本文中,我们假设有一条存储交易数据的区块链,就像比特币区块链那样。

第二阶——(通过哈希运算)链接区块

想象有三个存储着交易数据的区块(如图一所示)。

2.png

这三个区块内都存有一些交易数据。这没什么特别的。就好比是三个独立的 word 文档,里面描述了交易的内容和余额变化情况。文档 1 会按照时间顺序从第一笔交易开始记录,直到数据量达到 1 MB 为止,之后的交易会记录在文档 2 中,直到数据量达到 1 MB 为止,以此类推。这些文档就是数据块。它们一个接着一个联系(链接)在一起。为此,每个区块会根据其内部数据串生成一个特殊的(数字)签名。如果这个区块中的数据发生任何变动,即使只改变了一个数字,这个区块的签名也会发生改变。这是如何实现的?欲知详情,请阅读步骤三中的 哈希运算 部分。

(校对注:如上文所述,实际情形中的区块并不是个个都接近区块大小的上限,实际数据大小要看把区块打包上链的矿工在区块中记录了多少交易,而他们并不会等到有了 1MB 交易数据才开始动手。实际情形见下文)

假设区块 1 中记录了两笔交易,分别是交易 1 和交易 2 。这两笔交易的总数据量达到了 1 MB (实际上一个区块中包含的交易笔数远不止这点)。根据这个区块内的数据串会生成一个签名。假设这个签名是 “X32” 。如下图所示:

3.png

请记住,即使区块 1 中存储的数据改动了一个数字,也会得到一个完全 不同的签名 !只要将区块 1 的签名添加到区块 2 中,就可以将区块 1 的数据与区块 2 关联起来。区块 1 的签名也包含在区块 2 的数据串内,因此这个签名与区块 2 中的其它数据一样,成了区块 2 签名的数据基础。如下图所示:

4.png

正是这些签名将区块链接在了一起,形成了一条区块链。现在加上区块 3 ,整条链的情况如下图所示:

5.png

现在,假设区块 1 中的数据被 更改 了。比方说 Damian 和 George 之间的交易被更改了。Damian 向 George 发送了 500 个而非 100 个比特币。由于区块 1 中的数据串改变了,其签名也相应改变了。更改过数据之后,区块 1 的签名不再是 “X32” ,而是变成了 “W10” ,如下图所示:

6.png

-请访问 r/BlockchainSchool 查看更多关于区块链的科普知识-

这样一来,区块 1 的新签名 “W10” 跟之前添加进区块 2 数据串的旧签名 “X32” 产生了冲突。区块 1 和区块 2 之间的链接就断了。这条链上的其他用户就会知道区块 1 中的数据被更改了。为了维护区块链的不可变性,其他用户会拒绝同步更改后的交易信息,依旧维持原有的交易记录(即 Damian 向 George 发送 100 BTC )不变,整条链依旧保持完整。这就意味着,要想不露痕迹地篡改交易,必须将区块 2 数据串中区块 1 的旧签名替换成新签名。然而,一旦区块 2 中的数据串发生变化,区块 2 的签名也会随之发生变化。假设区块 2 的签名从 “9BZ” 变成了“PP4” 。那么区块 2 和区块 3 之间的链接就断了!

7.png

区块链上的区块对所有人都是可见的。因此,如果篡改者真想要不露痕迹地篡改交易,就必须保证篡改之后的区块仍然都联系在一起(否则人们就很容易发现哪个区块跟其他区块并不相连,进而判断出该区块已经被改过了)。也就是说,改掉一个区块必须为后续的所有区块计算新的签名。可以认为这几乎是不可能的,但要理解这是为什么,请看下文。

第三阶——生成签名(哈希值)

那么,我们以区块 1 为例再画一个示意图。假设区块 1 只记录一笔交易,即 Thomas 向 David 发送 100 BTC 。需要根据这个数据串生成一个签名。在区块链上,这个签名是通过密码学哈希函数生成的。密码学哈希函数是一个极其复杂的数学公式:将任意数据串作为输入值代入公式,可以得到一个独一无二的 64 位输出值。例如,你可以将 “Jinglebells” 一词代入这个哈希函数(哈希函数的种类有很多,这只是其中一例),得到的输出为:

761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868

只要这个输入中有一个字符发生变化,包括改变大小写或是增加空格和标点,就会得到截然不同的输出。如果你在这个输入后面加上一个句号变成了“Jinglebells.”,得到的输出就变成了:

B9B324E2F987CDE8819C051327966DD4071ED72D998E0019981040958FEC291B

如果我们把句号去掉,还是能得到跟之前一样的输入:

761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868

对于同一个密码学哈希函数来说,相同的输入必定会得到相同的输出,不同的输入必定会得到不同的输出。比特币区块链就是利用哈希函数为区块生成签名的,将区块中的数据作为输入,得到的输出就是区块的签名。我们再来看看只含有一笔交易( Thomas 向 David 发送 100 BTC )的区块 1 示意图。

8.png

假设区块 1 中的 数据串 如下所示:

Block 1 Thomas -100 David +100

将这个数据串输入哈希函数,得到的输出(签名)如下所示:

BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

这个签名会被添加进区块 2 的中。再假设现在 David 向 Jimi 转了 100 BTC ,这笔交易被打包进了区块 2 。那么如下图所示:

9.png

区块 2 的数据串如下所示:

Block 2 David -100 Jimi +100 BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF

将这个数据串输入哈希函数,得到的输出(签名)如下所示:

25D8BE2650D7BC095D3712B14136608E096F060E32CEC7322D22E82EA526A3E5

这就是区块 2 的签名。每一个区块都会通过这个密码学哈希函数生成一个数字签名。哈希函数种类繁多,比特币区块链用的是 SHA-256 哈希算法。

但是,(仅有上述措施显然还不够)如果有人想篡改区块中的数据,TA 可以在篡改之后生成新的签名,塞下一个区块中,然后逐个逐个区块生成新的签名,这些改动后的区块还是形成了一条链,他人就没法分辨出数据已经被更改过了。如何防止这种情形呢?

答案是只有符合特定要求的哈希值(签名)才会被区块链接受。这就是第四阶中介绍的挖矿。

第四阶——什么是合格的签名?由谁来签署区块?

并非所有的签名都符合要求。区块链协议会预先确定一些要求,比如,在比特币区块链上,只有以连续的零开头的数字签名相对应的区块才能上链。例如,只有在数字签名以不少于 连续 10 个零 开头的情况下,对应的区块才能上链。

然而,由第三小节可知,每个数据串对应的哈希值都是 唯一 的。如果一个区块的签名(哈希值)开头少于 10 个零呢?为了获得符合条件的区块签名,需要反复改变输入的数据串,直到能生成以连续 10 个零开头的签名为止。但由于交易数据和元数据(区块编号、时间戳等等)需要保持原样(否则意义就改变了),每个区块里面还另外添加了一段特定长度的、可以改动的数据。想把区块添加到链上时,人们可以不断改变这段数据,直到找到一个合格的签名,然后确定下这段数据的具体值。这段数据就是区块的 nonce 。nonce 不是预先确定的数据,而是应实际需要而找出的一串完全随机的数字(注:图中所示的其他数据可以由任意字符组成,nonce 只能由数字组成)。

综上所述,区块包含:1)交易数据;2)上一个区块的签名;3)nonce 。这种通过反复更改 nonce、对区块数据进行哈希运算、寻找合格签名的过程就叫做 挖矿 ,也就是 矿工 所做的事。矿工投入大量电力,转化成算力,不断代入 nonce 进行哈希运算,直到找到合格的签名(输出)为止。矿工手中掌握的算力越多,哈希运算的速度就越快,抢先找到合格签名的可能性就越高。这是一种 反复试错 的过程,如下图所示:

910.png

-注:nonce 必须是数字(详情请阅读 r/BlockchainSchool 上的讲解)-

区块链网络上的任何用户都可以通过下载并启动 挖矿软件 来参与挖矿,实际上,这就是用他们的硬件计算能力来计算区块的 nonce 。以比特币区块链上的 Block #521,477 为例:

911.png

-源自区块链浏览器 blockchain.com -

可以看出,这个区块的哈希值(签名)和上一个区块的哈希值都是以相同数量的零开头的。找到这样一个哈希值并非易事,需要付出大量算力和时间,或者 运气爆棚 。没错,有时候运气爆棚的矿工在几分钟之内就能算出合格的签名,花的算力也很少。Block #523034 就是一个极其罕见的例子。一个算力很少的小矿工很快就找到了合格的签名,而其他矿工的算力加起来是他的 7 万亿倍。相比之下,赢得 Powerball 彩票头奖的概率是 2.92 亿分之一,而这位幸运儿挖到矿的概率是中头奖的 1/24000 。

不要小看这些零。这一小节的重点是,找到一个合格的签名很 

第五阶——区块链的不可变性是如何是实现的?

正如第三阶中所述,更改某个区块会导致它的签名改变,与后续区块记录的对不上,从而与后面的区块断开链接。要想让网络中的其他参与者接受这个被更改过的区块,就要把它跟后面的区块重新链接起来。也就是说,一个区块的签名变了,跟在它后面的所有区块的签名都要改变,才能让别人觉得这是一条前后一致的链。

你想起什么事没有?

如第四节所述,签名必须符合要求!虽然更改所有区块的签名看似可行,但是要花费很多成本和时间,因此被认为是不可能的,原因如下:

假设有一个矿工 恶意 篡改了某个区块内的交易,然后根据哈希运算为这个区块连同跟在它后面的所有区块生成了新的签名,以此让网络中的其他参与者都接受被篡改过的交易。问题在于,网络中的其他矿工也在原来的链上不断为新的区块计算签名。随着新的区块不断上链,作恶的矿工也要重新计算这些区块的签名。他必须保证所有区块都链接在一起,包括不断被添加到链上的新区块。除非这个矿工拥有的算力超过全网其他人的总算力,否则他永远赶超不了其他矿工。

(校对注:这一段的实际意思是,只要矿工都在自己看到的最长区块链上挖矿,所有算力就会随时间自然汇聚到一条主链上,而攻击者只有制造出一条比当前主链更长的链,才能成功改变大家共同认可的交易记录。这种始终以最长链为主链(有效链)的原则,就是所谓的 “最长链规则”,是 Nakamoto Concensus(中本聪共识机制)的一部分。另,并不是所有区块链都采用了中本聪共识。)

912.png

如今有数百万用户在比特币区块链上挖矿,由此可以推定某个恶意参与者或实体的算力是不可能超过全网剩余算力的。这就意味着网络中的其他参与者不可能接受任何对区块链的修改,从而实现了区块链的不可变性。一旦数据被添加到区块链上,就无法再修改了。

只有一种例外,就是恶意参与者的算力真的超过全网其他人的算力总和。从理论上来说,这种情况下是有可能篡改区块链的(即改变大家共同认可的历史记录)。这就叫做 51% 攻击(我写了另一篇文章来解释这种情形),过去也有很多区块链遭受过这种攻击。

(校对注:目前为止,遭受过 51% 攻击的著名区块链有 bitGold、Verge、Ethereum Classic。)

实际上,对比特币区块链发动 51% 攻击所能获得的收益远抵不上高昂的攻击成本。要想获得足够多的算力,除了要负担硬件、冷却设备和存储空间方面的成本,还要承担被千夫所指的风险,更重要的是,会对被攻击区块链的生态系统造成极大的损害,攻击所得的收益也会大幅贬值。51% 攻击实际上就是以一己之力对抗区块链上的其他用户。这也就是为何参与挖矿的用户人数越多,整条链的安全性就越高。

恭喜你已经又进了一阶!现在,你应该已经理解(大型)区块链被认为具有不可更改性的原因了吧。不过现在又出现一个很重要的问题:如何防止矿工将伪造的交易数据添加到区块链上?从技术上来说是做不到的。关于区块链交易的详细解释可参见这篇文章。

(校对注:只有私钥掌控者才能花费相应地址中的资金,而矿工并不知道你的私钥,他人只能通过你公开的公钥来验证某笔交易是不是你发起的。所以伪造交易并不可行)

第六阶——如何治理区块链?由谁决定规则?

……区块链协议自动以最长链上的交易记录为准,将这条链视为代表绝大多数参与者的链。打造最长链需要消耗全网绝大部分算力。被篡改过的区块就与最长链断开了链接,因此会被全网绝大多数节点自动拒绝。

在比特币区块链上, 所有交易历史和钱包余额都是公开可见的(blockchain.info)。任何人都可以查看任一钱包的余额情况,或是始自(2009 年 1 月 3 日的)第一笔交易的所有交易记录。虽然任何人都能查看钱包余额,但是这些钱包的所有者大多都是不为人知的。例如,一个钱包里存有 6.9 万个比特币,至本文截稿之时价值约 5 亿美元。这个钱包在 2015 年 4 月使用过一次,之后就再也没有过交易。

(校对注:这一部分其实并没有回答 “由谁决定规则” 的问题,只大概说明了 “根据现有规则,这种技术是可以实现的”。公链治理是一个复杂的问题,也超出了这篇文章需要说明的范围了。)

第七阶——这些对密码学货币有何意义?

密码学货币从本质上来说都是比特币的变体。绝大多数加密货币都是按照自己的区块链协议搭建的,遵循不同于比特币的规则。比特币应当被归类为一种货币,也就是说它明确具备货币功能。门罗币也是一种具有相同功能的加密货币,不过它的区块链协议还增加了一些规则来增强隐私性(提高交易溯源的难度)。

不过,用区块链发行的资产可以被赋予很多种不同的用途,这点由发行方决定,如此发行的资产一般被称为“代币”。这些代币可以赋予其所有人某种权利,例如博彩执照、社交媒体渠道、 水电等等。所有这些资产交易都记录在不同的区块链上,并且可以通过币安之类的交易所进行线上交易。

代币其实是一种新型互联网货币,可能会影响到一部分行业,其中一个典型的例子就是股票市场。在未来,公司股份之类的产权很有可能会以代币的形式存储到区块链上。区块链不仅限于以代币的形式代表实物价值,也可以安全地记录病历、身份、历史记录、纳税记录等数据。这就是区块链技术的伟大之处,还不提区块链的另一个重要特性:去中心化。


原文链接: https://blog.goodaudience.com/blockchain-for-beginners-what-is-blockchain-519db8c6677a
作者: Jimi S.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44528.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用 Java 实现简单的区块链

点击上方蓝色“程序猿DD”,选择“设为星标” 回复“资源”获取独家整理的学习资料! 来源 | 公众号「锅外的大佬」 1. 概述 本文中,我们将学习区块链技术的基本概念。也将根据概念使用 Java 来实现一个基本的应用程序。 进一步,我…

国字号遥感算法大赛!涵盖主流视觉任务,头奖10万人民币!

点击我爱计算机视觉标星,更快获取CVML新技术 大赛背景 本届遥感图像稀疏表征与智能分析竞赛由国家自然科学基金委信息科学部、“空间信息网络基础理论与关键技术”重大研究计划指导专家组主办,旨在推动“空间信息网络基础理论与关键技术”重大研究计划科…

js 模拟超级大LE透中头奖 统计中头奖需要购买的彩票次数以及购买总金额

<!DOCTYPE html> <html> <head><title>超级大LE透模拟</title> </head><div id"container">超级大LE透<br>规则&#xff1a;超级大LE透基本投注是指从前区号码中任选5个号码&#xff0c;并从后区号码中任选2个号码的…

挖挖双色球——数据挖掘技术 分享

最近双色球比较热闹&#xff0c;因为河南1彩民独中双色球3.6亿巨奖&#xff01; 《媒体报道&#xff1a;2009年10月8日&#xff0c;国庆长假结束前的最后一天&#xff0c;在这个注定要被写进中国彩票史的日子&#xff0c;河南省安阳市成为了全国瞩目的焦点。当期中国福利彩票“…

成都程序员双色球中2682万!号码是电脑算出来的?

你人生中最狂野的梦想是什么&#xff1f; 如果是播妞来回答的话&#xff0c;播妞做梦都想中一次彩票头奖&#xff0c;彻底解放自己被贫穷限制的想象力&#xff0c;来一次不一样的人生&#xff01; 播妞是没有这么幸运了&#xff0c;不过&#xff0c;近日&#xff0c;四川成都的…

Python网络爬虫和信息提取:(动态网站)双色球数据爬取及写入数据库Sqlite、json和Excel表

我想着拿什么练习下网络爬虫信息提取时&#xff0c;就想到了双色球&#xff0c;心想把往期数据提取出来也是个不错的主意&#xff0c;把数据保存下来以后做数据分析&#xff0c;根据分析结果去买双色球岂不是美哉&#xff1f;&#xff01;哈哈哈。。 当然这里仅是爬取和保存&am…

双色球

最近身边很多人玩双色球。。我也买了几期。 下面是双色球模拟程序&#xff0c;代码如下&#xff1a; package Test;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList;…

双色球的概率

为什么80%的码农都做不了架构师&#xff1f;>>> 双色球所有的组合数&#xff1a;33x32x31x30x29x28/6/5/4/3/2/1x1617721088。因此随机买一注的话&#xff0c;中头奖的概率约为“一千七百七十二万分之一”。最近一期双色球为15028期&#xff0c;销售额为318 360 50…

java 随机生成双色球

1.描述 输入注数&#xff0c;Java随机生成双色球 2.代码 import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Scanner;public class Two_color_ball {// 随机生成双色球 前区 01-33 取6个数 后区…

诗歌与词曲收藏

《和子由渑池怀旧》-&#xff08;宋&#xff09;苏轼 人生到处知何似&#xff0c;应似飞鸿踏雪泥。 泥上偶然留指爪&#xff0c;鸿飞那复计东西。 老僧已死成新塔&#xff0c;坏壁无由见旧题。 往日崎岖还记否&#xff0c;路长人困蹇驴嘶。 《年轻的心》-席慕容 不再回头的 …

【情人节表白神器:送她一个HTML动态表白网站 带源码】

ChatGPT 介绍 ChatGPT 是由 OpenAI 开发的高级语言模型。它是一种基于变换器的神经网络&#xff0c;已经在互联网上的大量文本数据上进行了训练。这使得 ChatGPT 具有很强的语言理解能力&#xff0c;能够生成人类般的文本内容&#xff0c;如回答问题、生成摘要、翻译等。 近期…

基础知识6

知乎上的面试题&#xff1a;https://zhuanlan.zhihu.com/p/546032003 一、Topk问题以及变种&#xff0c;各种解法 微博的热门排行就属于 TopK 问题 TopK 一般是要求在 N 个数的集合中找到最小或者最大的 K 个值&#xff0c;通常 N 都非常得大。 算法的优点是不用在内存中读入全…

美云智数孔凡实:工业软件“突围战”——强化核心技术+渠道共赢生态丨数据猿专访...

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 “仿真和数字孪生是企业数字化发展中的刚需的&#xff0c;不论是什么制造业&#xff0c;都会有产品&#xff0c;有产品就会有制造的仿真。”——美云智数渠道产品BU总经理 孔凡实 随着元宇宙概念的火热&#xff0c;数字孪生…

日语毕业论文日文参考文献怎么找?

要说什么东西能够让一位当代大学生茶饭不思、日渐消瘦&#xff0c;那么论文一定能够排得上号。近些年&#xff0c;学术不端的行为在学术界受到越来越多的关注&#xff0c;对于学位论文的要求也越来越高。大家都知道&#xff0c;写出一篇学位论文很难。写出一篇日语毕业论文更是…

GPT 吞噬一切!我们还需要编程语言吗?

作者 | GPT-4 责编 | 唐门教主 出品 | 《智能之境》&#xff0c;一个由 AIGC 创作的栏目 编者按 「智能之境」专栏更新&#xff1a;AGI 的未来&#xff0c;究竟属于 Rust 还是 Mojo&#xff1f;或者我们还需要编程语言吗&#xff1f; LLVM 之父、苹果的编程语言 Swift 之父、新…

ChatGPT 技术首发上车,集度汽车官宣将融合文心一言;谷歌自研数据中心芯片取得新进展;Firefox 110 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

第三课总结吴恩达 ChatGPT Prompt 免费视频

前两课在这里&#xff1a; 总结吴恩达 ChatGPT Prompt 免费课程 第二弹进阶吴恩达 ChatGPT Prompt 技巧 今天第三课&#xff0c;两个技巧 第一个&#xff0c;Prompt 迭代开发 熟悉我号《有关SQL》的朋友都知道&#xff0c;SQL 调优有经典的三板斧&#xff0c;最激动人心的是第三…

吴恩达 Chatgpt prompt 工程--5.Transforming

探索如何将大型语言模型用于文本转换任务&#xff0c;如语言翻译、拼写和语法检查、音调调整和格式转换。 Setup import openai import osfrom dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) # read local .env fileopenai.api_key os.getenv(OPE…

吴恩达 Chatgpt prompt 工程--2.Iterative-prompt

迭代分析和完善prompts&#xff0c;以从产品概况表中生成营销副本。 Setup import openai import osfrom dotenv import load_dotenv, find_dotenv _ load_dotenv(find_dotenv()) # read local .env fileopenai.api_key os.getenv(OPENAI_API_KEY)def get_completion(prom…

吴恩达 ChatGPT Prompt Engineering for Developers 系列课程笔记--07 Expanding

07 Expanding 本节示例如何用ChatGPT生成一封电子邮件的回复。 1) 定制化情绪 给定客户评论&#xff0c;我们根据评论内容和情绪产生定制的回复。下面是给定情感&#xff08;positive/negative&#xff09;&#xff0c;让ChatGPT产生相应回复的prompt。 """…