吴恩达 x OpenAI的Prompt笔记(一)

310 阅读5分钟

课程介绍

使用ChatGPT时候,你可以将它看作向另一个人发出指令,一个聪明但不知道业务细节的人。当ChatGPT返回的不是你想要的结果的时候,可能是因为你的指令不够清晰。例如,如果您说“请为我写一些关于阿兰·图灵的东西”,通过指令告诉ChatGPT您希望文本专注于他的科学工作、个人生活、历史角色或其他方面。更多的,您还可以指定文本采取像专业记者写作的语调,或者更像是您向朋友写的随笔。

2、  提示原则 Guidelines

通过掌握编写 Prompt 的原则与一些相关的策略,来编写有效的 Prompt,从而便捷而有效地使用 LLM。

第一条原则,写出清晰而具体的指示

第二条原则,给模型思考的时间

原则一:编写清晰、具体的指令

你应该通过提供尽可能清晰和具体的指令来表达您希望模型执行的操作。这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。

策略一:使用分隔符清晰地表示输入的不同部分

使用任何明显的标点符号("""、'''、<>,等)将特定的文本部分与提示的其余部分分开。使用分隔符是一种可以避免提示注入的有用技术。提示注入是指如果用户将某些输入添加到提示中,则可能会向模型提供与您想要执行的操作相冲突的指令,从而使其遵循冲突的指令而不是执行您想要的操作。即,输入里面可能包含其他指令,会覆盖掉你的指令。对此,使用分隔符是一个不错的策略。

image.png

策略二:要求一个结构化输出

可以是 Json、HTML 等格式

image.png

image.png

image.png

策略三:要求模型检查是否满足条件

如果任务做出的假设不一定满足,我们可以告诉模型先检查这些假设,如果不满足,指示并停止执行。你还可以考虑潜在的情况以及模型应该如何处理它们,以避免意外的错误或结果。

image.png

image.png

策略四:提供少量示例

即在要求模型执行实际任务之前,提供给它少量成功执行任务的示例。

例如,在以下的示例中,我们告诉模型其任务是以一致的风格回答问题,并先给它一个孩子和一个祖父之间的对话的例子。孩子说,“教我耐心”,祖父用这些隐喻回答。因此,由于我们已经告诉模型要以一致的语气回答,现在我们说“教我韧性”,由于模型已经有了这个少样本示例,它将以类似的语气回答下一个任务。

image.png

原则二:给模型思考的时间

策略一:指定完成任务所需的步骤

将一个复杂任务,拆分为完成该任务的一系列步骤。

策略二:指导模型在下结论之前找出一个自己的解法

有时候,在明确指导模型在做决策之前要思考解决方案时,我们会得到更好的结果。

这个有点绕,再看

局限性

虚假知识:模型偶尔会生成一些看似真实实则编造的知识。

如果模型在训练过程中接触了大量的知识,它并没有完全记住所见的信息,因此它并不很清楚自己知识的边界。这意味着它可能会尝试回答有关晦涩主题的问题,并编造听起来合理但实际上并不正确的答案。我们称这些编造的想法为幻觉。

模型会输出看上去非常真实的编造知识,这有时会很危险。因此,请确保使用我们在本节中介绍的一些技巧,以尝试在构建自己的应用程序时避免这种情况。这是模型已知的一个弱点,也是我们正在积极努力解决的问题。在你希望模型根据文本生成答案的情况下,另一种减少幻觉的策略是先要求模型找到文本中的任何相关引用,然后要求它使用这些引用来回答问题,这种追溯源文档的方法通常对减少幻觉非常有帮助。

image.png

牛皮弃面馆是昆山真实存在的一家牛肉面店。

3、  迭代优化 Iterative

当使用 LLM 构建应用程序时,我从来没有在第一次尝试中就成功使用最终应用程序中所需的 Prompt。但这并不重要,只要您有一个好的迭代过程来不断改进您的 Prompt,那么你就能够得到一个适合任务的 Prompt。我认为在提示方面,第一次成功的几率可能会高一些,但正如上所说,第一个提示是否有效并不重要。最重要的是为您的应用程序找到有效提示的过程。

image.png

image.png

image.png

image.png

为了实现以上功能,不停的尝试

到最后还是没有实现换行