第三章:提示词工程需要迭代
我会直接粘贴,因此我的提示是帮助营销团队创建基于技术信息表的零售网站或产品描述,编写产品描述等。 对吗?所以,这是我第一次尝试向大语言模型解释任务。 所以让我按shift enter,这需要几秒钟才能运行,然后我们得到这个结果。 看起来它已经很好地写了一个描述,介绍了一个惊人的中世纪风格的办公椅,完美的版本等等,但当我看到这个时,我说,天哪,这太长了。 它完全做到了我要求它做的事情,即从技术信息表开始编写产品描述。 但当我看这个时,我说,这有点长。 也许我们想让它短一点。 所以我有了一个想法。 我写了一个提示,得到了结果。
我对它不是很满意,因为它太长了,所以我会澄清我的提示,并说最多使用50个单词来更好地指导所需长度,然后我们再运行一遍。 好的,这实际上看起来像是产品的更好的简短描述,介绍了一款中世纪风格的办公椅,等等,既时尚又实用。 还不错。 让我再确认一下长度。 我会按空格拆分回应,然后打印出长度。 所以它是52个单词。 实际上还不错。 大型语言模型可以,但不太擅长遵循非常精确的单词计数说明,但这实际上还不错。 有时它会打印出60或65个单词之类的东西,但它还算合理。 让我再运行一遍。 但这些是告诉大型语言模型你需要的输出长度的不同方法。 所以这是一、二、三。
我数了这些句子。 看起来我做得相当不错。 有时我还见过人们做一些事情,比如使用至多 280 个字符。 大型语言模型由于它们解释文本的方式不同,使用一种称为分词器的东西,我不会谈论。 但是它们倾向于在计算字符数时一般般。 但是让我们看看,281 个字符。 实际上相当接近。 通常大型语言模型不能这么准确。 但这些是他们可以尝试控制输出长度的不同方法。 但是将其切换回最多使用50个单词。 这就是我们刚才得到的结果。 随着我们不断完善网页文本,我们可能会决定,哎呀,这个网站不是直接销售给消费者的,它实际上旨在向家具零售商销售家具,他们更关心椅子的技术细节和材料。
在这种情况下,你可以采取这个提示并说,我想修改这个提示,使其更精确地描述技术细节。 所以让我继续修改这个提示。 我会说,这个描述是为家具零售商打造的,所以应该是技术性的,并侧重于材料、产品和结构。 好的,让我们来运行一下。 让我们看看。 还不错。 它说,涂层铝制底座和气动椅。 高品质材料。 因此,通过改变提示,您可以使其更加关注您想要的特定特征。 当我看到这个时,我可能会决定,在描述的结尾,我也想包含产品ID。 因此,我可以进一步改进这个提示。 为了让它给我产品ID,我可以在描述末尾添加这个指令,在技术规格中包括每个7个字符的产品ID。 让我们来运行它,看看会发生什么。
所以,它说,让我介绍一下我们的中世纪风格办公椅,外壳颜色,讲述塑料涂层铝基底,实用,还有一些选项,讲述了两个产品ID。 所以这看起来相当不错。 而你刚刚看到的是许多开发人员进行的迭代提示开发的简短示例。 我认为一个指导方针是,在上一个视频中,你看到Yisa分享了许多最佳实践。 所以我通常会记住这样的最佳实践,要清晰明确,必要时可以给模型一些时间来思考。 在有这些想法的情况下,通常值得尝试首次编写提示,看看会发生什么,然后从那里开始迭代地完善提示,以逐渐接近你需要的结果。 因此,许多成功的提示可能会在像这样的迭代过程中得出。
只是为了好玩,让我向您展示一个更复杂的提示示例,以便您了解 ChatGPT 能做什么。 我刚刚添加了一些额外的说明。 在描述之后,加入一个给出产品尺寸的表格,然后将所有内容格式化为 HTML。 所以我们来运行一下吧。 实际上,在多次迭代之后,您才会得到这样的提示。 我认为,第一次尝试让系统处理一个事实表格时,没有人会编写这个确切的提示。 因此,这实际上输出了一堆 HTML。 让我们显示 HTML 看看这是否是有效的 HTML,并查看它是否正常工作。 我不确定它是否会正常工作,让我们来看看。 哦,太酷了。 好的。 看起来像是一个漂亮的椅子。 建筑、材料、产品尺寸。
哦,看起來我忘了加上最多使用50個單詞的指示,所以這有點長,但如果你想這樣做,你甚至可以隨時暫停視頻,讓它變得更簡潔,然後重新生成看看得到什麼結果。 所以我希望你能從這個視頻中明白,提示開發是一個迭代的過程。 試試某些東西,看看它是否達到你想要的效果,然後考慮如何澄清你的指示,或者在某些情況下,考慮如何給它更多的思考空間,以使它更接近你想要的結果。 我認為成為一個有效的提示工程師,不是太著重於知道完美的提示,而是擁有一個良好的流程開發提示,以適應你的應用。 在這個視頻中,我舉了一個例子來說明如何開發提示。
对于更复杂的应用程序,有时您会有多个例子,比如10个甚至50个或100个事实表的列表,并迭代地开发提示并根据大量用例进行评估。 但对于大多数应用程序的早期开发,我看到许多人只是开发一个示例的方式,但是对于更成熟的应用程序,有时对不同提示在多个事实表上进行评估会很有用,例如测试不同提示在数十个事实表上的平均或最差情况表现如何。 但通常仅在应用程序更加成熟且您必须拥有那些指标来推动提示改进的最后几步时才会这样做。 因此,请使用Jupyter代码笔记本示例进行试验,尝试不同的变化,并查看您获得的结果。
当你完成了,让我们继续下一个视频,我们将讨论软件应用程序中使用大型语言模型的一个非常普遍的用途,即概括文本。