介绍更好的提示信息就能获得更好的回答!
提示这个概念并不新鲜。这种提供提示的想法贯穿了许多领域:艺术(激发作家的创作灵感或即兴创作);科学(启动实验);刑事调查(提供或追踪最初的线索);计算机编程(在特定背景下迈出第一步)。所有这些都是旨在引发相应反应的提示请求的。
与大型语言模型(LLM)互动也没有什么特别的地方。你需要设计出最好的提示来得到最好的回复。为了让LLM产生期望的回复,出现了一门新学科:提示工程——即“将文本结构化,让生成式AI模型能够理解和解释的过程。”[1]
在这篇文章中,我们探讨了什么是提示设计,构成最佳提示设计的技巧有哪些,什么样的提示能够引导大型语言模型生成期望的回答;相反,什么样的提示会阻止大型语言模型生成期望的回答。
什么是Prompt工程呢?它是指什么?提示工程并不严格属于工程学科或精确科学,而是由数学和科学基础支撑的领域;它是一种通过一系列规则来创造精确、简洁且富有创意的文字,以指导大规模语言模型完成任务的实践。另一种说法是,“提示工程是与生成式大规模语言模型进行交流的艺术。” [2]
为了用精确且任务特定的指令与LLM进行沟通,Bsharat等人[3]提出了一套全面的原则性指令和指南,用于提升LLM提示的质量。研究表明,由于LLM在理解自然语言和执行如回答问题、数学推理、代码生成、翻译和任务总结等各类任务时展现出卓越的能力,采用原则性的方法来整理不同的提示类型和技巧,极大地提升了生成响应的质量。
下面举一个简单的例子,展示了在应用这个简洁明了的原则前后提示的对比。这种差异显示出响应既清晰又简单,以及期望的响应接收者。
如图1所示,左边是一个普通的提示,右边是一个更具体且精确的提示。
正如上面的例子所示,你的提示越简洁明了,大语言模型就越能准确理解任务内容,从而给出更好的回答。
让我们来看看一些原则、技巧以及能提供更好理解如何完成任务的提示类型,这些提示类型可以在各种自然语言处理领域中提供更好的洞察。
提示原则和指导Bsharat et.al 列出了 26 个有序的提示原则条目,这些原则可以进一步分为五个类别,如图 2 所示的:
- 提示结构和清晰度: 考虑到目标受众。
- 具体性和信息量: 实施以几个示例提示为基础的提示。
- 用户互动和参与: 允许模型通过询问具体的细节和需求来获取足够信息,从而提供所需的回复。
- 内容和语言风格: 指定回复的语气和风格。
- 复杂任务和编码提示: 将复杂任务分解为一系列更简单的步骤来提供提示。
图2.:提示原则类别
同样,埃尔维斯·萨拉维亚的prompt工程指南 中提到,提示可以包含许多元素:
说明:描述你希望模型完成的具体任务
上下文:更多的信息或背景资料,用来指导模型的响应
输入或问题:表示给模型的回答
输出格式和类型:例如 JSON 格式,或者多少行、多少段落。提示与角色相关联,角色告诉 LLM 它应该与谁交互及如何交互。例如,一个 系统 提示会让 LLM 假装成助手或老师的角色。
用户在提示中提供上述任何元素,以便LLM能据此回应。Saravia,就像Bsharat等的研究一样,表示提示工程是一种精准沟通的艺术。也就是说,为了得到最好的答复,你的提示需要被设计得准确、简洁、具体。越简洁明了,回应就会越好。
此外,OpenAI关于提示工程的指南也提供了类似的权威指导,包含类似的要点和可演示的例子:
- 写明指示
- 提供参考材料
- 把复杂的任务分解成更简单的步骤
- 给模型一些时间来思考
最后,Sahoo、Singh 和 Saha 等人 [5] 系统地总结了提示工程技术,并对提示技术的演变进行了概述,从零样本提示到最新的进展。他们将其分为不同的类别,如图所示。
图3. 提示工程分类学
CO-STAR 提示框架但CO-STAR提示框架[6]走得更远一些。它将所有之前提到的指南和原则简化并提炼成一种实用的方法。
在她赢得新加坡GPT-4提示工程竞赛的博客中,《如何赢得新加坡GPT-4提示工程竞赛》(https://towardsdatascience.com/how-i-won-singapores-gpt-4-prompt-engineering-competition-34c195a93d41)中,Sheila Teo 提供了一个实用策略和一些宝贵的见解,介绍了如何通过CO-STAR框架从大型语言模型中获得最佳效果。
简而言之,蔡女士将Bsharat et.al(见图2)的观点以及其他提到的原则提炼并简化为六个简洁明了的术语,即为CO-STAR,见图4。
C: 提供任务的相关背景和信息
定义你想要LLM完成的任务: 定义你希望LLM执行的任务
S: 风格 指定您想要LLM采用的写作风格
提示: 调整回应的态度和语气
A:观众明确回应给谁
R: 回答: 提供回答的格式和风格。
图4:CO-STAR的简洁明了的五个提示原则
这里是一个简单的CO-STAR示例,出现在演示笔记本中。
图4(a): 带有CO-STAR(一种框架)的示例提示
使用这个CO-STAR的提示,我们得到了我们大型语言模型的简洁回答。
图4(b): 带有CO-STAR框架的一个示例响应
可以在这两个Colab笔记中看到大量例子。
除了CO-STAR以外,还出现了其他专门针对ChatGPT的框架,但构建有效提示的核心要素仍然相同:清晰性、具体性、上下文、目标、任务、操作等。[7]
提示类型和任务到目前为止,我们已经从各种来源了解了最佳实践、指导原则和技巧,以如何编写简洁的提示来与大型语言模型(LLM)交互,从而生成所需且准确的回复。提示与任务类型挂钩,这意味着你想让LLM完成的任务类型对应于某种提示及其构建方式。
一般来说,萨拉维亚[8]分析了各种任务相关的提示,并就如何编写有效的提示以完成这些任务通常包括提供了建议。
- 文本摘要
- 零样本学习和少量样本学习
- 信息提取
- 问答系统
- 文本和图像分类
- 对话
- 推理分析
- 代码生成器
为了简洁,我将不赘述解释。但是,请通过下面的Colab笔记本中的示例来探索不同类型的提示,以了解如何构思有效提示并获得准确响应。
图5. 示例笔记本,展示了与任务相关的提示类型。(示例笔记本位于此处)。
注意:所有笔记本示例均已在OpenAI APIs上使用GPT-4-turbo、Llama 2系列模型和Mixtral系列进行了测试,Code Llama 70B则在Anyscale Endpoints上运行。要运行这些示例,您需要在OpenAI和Anyscale Endpoints上拥有账户。这些示例取自GenAI Cookbook GitHub Repository中的部分内容。
总结在这篇文章中,我们介绍了什么是提示工程,包括一系列权威的指导原则和实用技巧,用于策划和制作出有效的提示,以从大型语言模型(LLM)中获得最佳回复为目的。同时,OpenAI指南还列出了不应使用的提示类型。
在遵循上述原则的基础上,我们讨论了CO-STAR提示模板,并给出了一些使用该模板的具体实例。
最终,我们将提示类型与大型语言模型(LLM)的常见任务联系起来,并提供了一系列说明性的笔记本示例。
上述所有内容都是你踏上为LLM制作有效提示并获得最佳回应的过程的一个有用起点。
接下来会怎样?阅读“GenAI Cookbook”系列关于LLM的下一组博客文章:
- 超越核心能力的LLM:作为AI助手或代理的更多可能更多内容请访问链接
- 打造智能用户体验:深入探索OpenAI助手API更多内容请访问链接
[1] https://en.wikipedia.org/wiki/Prompt_engineering(关于Prompt工程的维基百科页面)
[2] [ChatGPT, 2023](链接: https://chat.openai.com/)
[3] 参考文献:https://arxiv.org/pdf/2312.16171.pdf
[4] 可以在这里查看: https://arxiv.org/pdf/2312.16171.pdf
[5] 详见 https://arxiv.org/pdf/2402.07927.pdf
[6] 如何赢得新加坡的GPT-4提示工程比赛 - https://towardsdatascience.com/how-i-won-singapores-gpt-4-prompt-engineering-competition-34c195a93d41
【7】掌握ChatGPT提示工程的9个框架:https://www.linkedin.com/pulse/9-frameworks-master-chatgpt-prompt-engineering-edi-hezri-hairi/
[8] 参考链接:https://www.promptingguide.ai/introduction/examples
[9] https://platform.openai.com/docs/guides/prompt-engineering
[10] https://platform.openai.com/examples
[11] 如下链接:https://github.com/dmatrix/genai-cookbook/blob/main/README.md
共同学习,写下你的评论
评论加载中...
作者其他优质文章