在提高AI模型的表现力方面,编写高质量的Prompt是至关重要的。Prompt是指用户提供给AI模型的输入,它直接影响着模型的输出结果。一个好的Prompt可以引导模型产生准确、有逻辑的回答,而一个糟糕的Prompt则可能导致模糊、不连贯甚至错误的结果。因此,编写高质量的Prompt是提高AI模型表现力的关键之一。
如何通过编写高质量Prompt来提高AI模型的表现力随着AI技术的迅速发展, 人工智能模型变得越来越强大,能够协助我们完成各种任务。然而,如何更好地利用AI的能力仍然存在很大的探索空间。
在与 AI进行交互的过程中,我们主要依赖于Prompt,不管是直接与大模型交互,还是基于一些工具开发大模型的应用,都需要涉及到Prompt的编写设计,高质量的Prompt对于充分发挥AI的能力至关重要,因此个人觉得有必要深入学习下这部分的内容,以便挖掘出更多的AI能力。
GPT在处理Prompt时,GPT模型将输入的文本(也就是Prompt)转换为一系列的词向量。然后,模型通过自回归生成过程逐个生成回答中的词汇。在生成每个词时,模型会基于输入的Prompt以及前面生成的所有词来进行预测。这个过程不断重复,直到模型生成完整的回答或达到设定的最大长度。
通过这种方式,GPT模型可以根据输入的Prompt来生成回答。这也是为什么一个好的Prompt可以帮助模型更好地理解你的需求,从而提供更有用的回答。
一个有效的Prompt可以:
-
提升 AI模型给出的答案的质量
-
缩短与AI模型的交互时间,提高效率
-
减少误解,提高沟通的顺畅度
撰写高质量Prompt
我们已经认识到了Prompt的重要性,那么如何编写高质量的Prompt呢?
首先,一个高质量的Prompt应当清晰明了,避免歧义和模棱两可的表述。要尽量避免使用模糊的词语和表达方式,而是要尽可能具体和明确地描述用户期望得到的回答。
其次,在编写Prompt时应当考虑到用户的意图和背景知识。要站在用户的角度思考,尽量理解用户提问的动机和背景,从而能够更好地引导AI模型产生相关、有用的回答。
此外,Prompt还应当遵循逻辑和语法规则。良好的语言表达能力不仅能够帮助AI模型更好地理解用户的意图,还能够提升回答的连贯性和可读性。因此,在编写Prompt时,要注意语法结构和逻辑关系,尽量避免使用含糊不清或者矛盾的表述方式。
在搜集了一些资料并进行了分析研究之后,我发现以下主要就是几个关键要素:
-
明确目标:清晰定义任务,以便模型理解。
-
具体指导:给予模型明确的指导和约束。
-
简洁明了:使用简练、清晰的语言表达Prompt。
-
适当引导:通过示例或问题边界引导模型。
-
迭代优化:根据输出结果,持续调整和优化Prompt。
还有学习提问技巧,例如Socratic questioning(苏格拉底式提问),有助于引导模型更深入地探讨问题,提供更全面的回答。所有得Prompt框架基本上都是这几个部分,不过有些框架更方便记忆,方便我们想起来使用罢了。
任务类提示词框架
我们希望Prompt帮我们做什么事情,框架为提示创建过程提供了结构和清晰度,可以让我们更容易的检查提示词的问题。
ICIO框架
-
Instruction(指令): 即您希望 AI执行的具体任务。
-
Context(背景信息): 给AI提供更多的背景信息,以引导模型生成更符合需求的回复。
-
Input Data(输入数据): 告知模型需要处理的数据。
-
Output Indicator(输出引导): 告知模型所需输出的类型或风格。
看一个具体的例子,以便更好地理解ICIO框架如何应用于实际场景。
步骤 | 描述 |
指令 – Instruction | 你是一位Java开发专家,请帮助我对以下Java代码进行重构。 |
背景信息 – Context | 我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。 |
输入数据 – Input | 提供需要重构的Java代码片段。 |
输出引导 – Output | 重构后的代码应遵循最佳实践,同时需要满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。重构后代码的输出应包括相应的解释,以便让同事和老板在代码审核过程中理解所做的更改。 |
最终提示词:
你是一位Java开发专家,请帮助我对以下Java代码进行重构。我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足团队的代码审核要求和高质量的代码标准。请遵循最佳实践,满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。在输出重构后的代码时,请解释所做更改的原因和好处,以便让同事和老板在代码审核过程中理解这些更改。
ICIO相关的一些参考列表:
指令参考-Instruction
讲故事 | 要求使用讲故事或叙事技巧 | 请用一个人物的故事来展示运动如何改变了他们的生活。 |
优缺点 | 要求 AI评估主题的优缺点 | 分析使用电子书和纸质书的优缺点。 |
最佳实践 | 要求AI提供关于某主题的最佳实践或指南 | 请提供一份关于如何高效学习的最佳实践指南。 |
时间线 | 要求AI提供事件或发展的时间线 | 请为互联网的发展提供一个简要的时间线。 |
分步指南 | 要求提供过程的分步指南或说明 | 提供一个关于如何制作自制面包的分步指南。 |
历史背景 | 要求考虑历史背景或背景 | 在写关于量子计算的文章时,谈论量子计算的历史发展。 |
对比 | 要求AI比较和对照不同的观点或概念 | 请比较太阳能和风能作为可再生能源的优缺点。 |
教训 | 要求讨论从特定情况中得到的教训 | 分享一个关于企业失败的案例,并从中提炼出的教训。 |
观点 | 要求AI考虑多种观点或意见 | 分析支持和反对核能发展的观点。 |
常见问题解答 | 要求AI生成常见问题解答(FAQs)列表 | 请提供一份关于瑜伽初学者的常见问题解答列表。 |
背景参考-Context
指令类型 | 描述 | 示例 |
背景 | 提供背景信息、数据或上下文以便生成准确内容 | 请结合当前全球碳排放数据谈论气候变化的影响。 |
目标 | 说明回应的目标或目的(如通知、说服、娱乐) | 编写一篇旨在说服读者加入环保运动的文章。 |
受众 | 指定定制内容的目标受众 | 请为初中生编写一篇关于节水的文章。 |
范围 | 界定主题的范围或范围 | 请仅关注瑜伽在减压方面的好处。 |
扮演角色 | 表明要采用的角色或观点(如专家、评论家、爱好者) | 从一个科学家的角度阐述太阳能的优点。 |
输入参考-Input
指令类型 | 描述 | 示例 |
示例 | 提供所需风格、结构或内容的示例 | 请参考《纽约时报》的文章风格撰写一篇关于自然保护的报道。 |
案例研究 | 要求参考相关案例研究或现实世界示例 | 在关于可持续发展的文章中,介绍一些成功的企业案例。 |
假设情景 | 鼓励探讨假设性场景 | 假设全球变暖持续恶化,我们需要采取哪些措施应对? |
数据 | 鼓励使用统计数据或数据支持主张 | 在关于电动汽车的文章中提供销售数据和环境影响数据。 |
个性化 | 根据用户偏好或特点要求个性化 | 请根据用户对喜剧电影的喜好推荐几部好看的电影。 |
输出参考-Output
指令类型 | 描述 | 示例 |
语气 | 指定所需语气(如正式、随意、信息性、说服性) | 请用正式语气编写一篇关于气候变化的文章。 |
引用 | 要求包含引用或来源以支持信息 | 请在关于全球变暖的文章中引用权威研究。 |
术语 | 指定要使用或避免的行业特定或技术术语 | 请用通俗易懂的语言解释区块链技术。 |
类比 | 要求 AI用类比或示例阐明概念 | 请用一个类比解释黑洞的概念。 |
引述 | 要求包含专家的相关引言或陈述 | 在关于疫苗安全的文章中引用著名免疫学家的观点。 |
幽默 | 表明是否应融入幽默 | 在一篇关于减压方法的文章中加入一些幽默元素。 |
隐喻 | 鼓励使用隐喻使复杂观点更具亲和力 | 在讨论 人工智能的复杂性时,用“AI像洋葱一样有很多层次”这样的隐喻。 |
关键词 | 列出需要包含的重要关键词或短语 | 请在回答中包含“可再生能源”和“碳足迹”。 |
小贴士 | 鼓励AI分享与主题相关的小窍门和技巧 | 分享几个关于照顾室内植物的小贴士。 |
保密性 | 说明保密要求或限制 | 在回答关于保险方案的问题时,不要泄露客户的个人信息。 |
格式化 | 指定所需的格式元素(如标题、副标题、列表) | 在写关于节能设备的文章时,使用列表来呈现节能设备的种类。 |
BROKE框架
BROKE: 背景、角色、目标、关键结果。用这种方式有点像给 AI设置OKR。让OKR完成你的目标…
关键词 | 描述 | 案例 |
Background(背景) | 为 ChatGPT提供充足的背景信息,帮助模型更好地理解任务。 | 我是一位Java开发人员,需要对一段Java代码进行重构,以提高代码质量和可维护性。代码需要满足团队的代码审核要求和高质量的代码标准。 |
Role(角色) | 明确您希望ChatGPT扮演的角色,例如:教师、顾问、编辑等。 | 你是一位Java开发专家,您将提供重构建议和解释。 |
Objectives(目标) | 描述您希望通过ChatGPT实现的目标,如:解决问题、提供建议等。 | 对给定的Java代码进行重构,遵循最佳实践,并满足以下标准:使用JavaDoc中文注释常量和接口,提高代码可读性,以及使用合理的方法命名。 |
Key Result(关键结果) | 阐述您所期望的具体效果,以便对模型的输出进行试验和调整。 | 提供完整的重构后代码,同时解释所做更改的原因和好处,以便让同事和老板在代码审核过程中理解这些更改。 |
Evolve(试验并改进) | 利用以下三种自由组合的改进方法来优化 ChatGPT的回答:a. 改进输入;b. 改进答案;c. 重新生成。 | a. 根据答案的不足之处,改进背景(B),目标(O)与关键结果(R)。b. 在后续对话中指出ChatGPT答案的缺点,引导模型给出更好的回答。c. 在Prompt保持不变的情况下,多次生成结果并从中挑选最佳答案。 |
CRISPE 提示词框架
关键词 | 描述 | 案例 |
能力与角色(Capacity and Role) | ChatGPT应该扮演什么角色(或多个角色)?例如:教师、编辑、顾问等。 | 你是Java领域的软件开发专家。 |
洞察(Insight) | 向您的请求提供幕后洞察力、背景信息和上下文。有助于模型更好地理解任务。 | 代码需要尽可能地清晰和简洁,以满足团队的代码审核要求和高质量的代码标准。 |
陈述(Statement) | 您希望ChatGPT执行的任务。简洁明了地说明您希望 ChatGPT完成的任务,例如:回答问题、撰写文章等。 | 您需要帮我对以下Java代码进行重构,并给出完整的重构后代码,以满足代码审核要求并提高代码质量。同时,请解释您所做的更改的原因和好处。 |
个性(Personality) | 您希望ChatGPT以何种风格、个性或方式回应。如:正式、幽默、友好等。 | 在回应时,使用专业且易于理解的语言。 |
实验(Experiment) | 要求ChatGPT为您提供多个示例。尝试邀请ChatGPT提供多个回答示例,从而找到最佳解决方案。 | 给我多个不同的重构建议和解释。 |
Trace 提示词框架
缩写 | 全称 | 描述 | 案例 |
Task | 任务 | 明确需要完成的具体任务 | 设计一个网站的用户界面 |
Request | 请求 | 明确地陈述你需要的帮助或资源以完成任务 | 请提供有关用户界面设计的最佳实践和资源 |
Action | 行动 | 描述了为了完成任务,你需要执行的具体步骤 | 1. 研究用户需求<br>2. 创建原型<br>3. 获取反馈并迭代设计 |
Context | 上下文 | 解释任务的重要性和其在更大环境中的角色 | 设计一个易于使用且符合公司品牌的用户界面,有助于提高用户满意度和留存率 |
Example | 示例 | 为了进一步阐明上述所有步骤,提供一个或多个相关的具体示例 | 示例1:研究竞品用户界面以获取灵感<br>示例2:使用Figma创建原型模型 |
TRACE模型提供了一种清晰、有结构的方式来解释如何执行一个任务或解决一个问题,使得其他人可以更好地理解和执行。
模型回答的常见问题与解决方法
问题 | 问题描述 | 解决方案 |
答非所问 | 有时GPT在回答问题时,可能会提供与问题无关的答案。 | 重新审查并重新构造Prompt,确保问题表述清晰、明确且易于理解。 提供更多的背景信息,以帮助模型更好地理解问题的含义。 限制回答范围,明确您希望得到的答案类型。 |
回答不准确 | GPT可能会提供不准确或错误的答案。 | 对问题进行更详细的描述,以便模型更好地理解您的需求。 如果可能,提供一些正确答案的示例,使模型了解预期的答案格式。 增加问题的难度,促使模型更加深入地考虑问题。 |
回答不完整或过于简单 | GPT可能会提供不完整或过于简单的答案,无法满足您的需求。 | 要求模型提供更详细的答案或解释。 明确指定需要回答的问题数量或关键点。 尝试提问的其他方式,以获得更全面的回答。 |
重复或过于啰嗦 | GPT生成的回答可能会重复或过于啰嗦。 | 要求模型提供简洁且不重复的答案。 设置字数限制,以减少回答的冗余程度。 提供更具体的问题,以便模型集中回答关键部分。 |
模型提供了多个答案 | 有时GPT可能会为一个问题提供多个答案,这可能使您感到困惑。 | 请求模型根据特定标准对答案进行排序或优先级排序。 询问模型,哪个答案更适用于您的场景,并要求提供理由。 根据您的需求,要求模型提供单一答案。 |
模型回答过于保守 | GPT可能会提供过于保守或宽泛的答案,不能满足您的需求。 | 要求模型提供具体的例子、数据或论据来支持答案。 明确提问,以便模型能够更有针对性地回答。 要求模型提供创新或独特的答案。 |
想要真正掌握Prompt的艺术,关键还在于实践和积累。不断尝试各种Prompt,并将其中优秀的例子记录下来和分享。希望能对大家有所帮助。欢迎一起交流和学习。