在上一节中探讨了提示词和提示词工程的基本概念,以及它们在大模型中的应用。现在进一步深入理解如何利用提示词工程控制大型语言模型返回用户想要的结果,确保大模型按照用户的意图行事。
说明
本节会推荐几个有关提示词工程的原则,并且会给出一些提示词案例,由于篇幅的关系,书中不呈现大模型回应的内容,读者如果有兴趣,就可以通过一些大模型对话平台,如ChatGPT、ChatGLM、文心一言、通义千问等进行测试。
既然提示词工程如此重要,用户应该如何遵循提示词工程所提供的原则写好提示词呢?有很多书籍资料都会介绍这部分内容,总结出很多有价值的经验,这里列出几条比较实用、在直播课上反响较好的原则推荐给读者。
在向大模型请求信息或帮助时,如果用户提供了详细的信息,则大模型可以更准确地理解用户需求,从而给出更具体、更有针对性的建议或解决方案。详细的信息可以减少误解,节省双方的时间,并提高沟通的效率。
假设我想通过大模型来学习Python语言的开发。
【错误请求】
这个请求过于泛泛,没有提供足够的信息来制订一个与“你”相关的学习计划,导致得到一个过于通用或者不适合用户个人需求的计划。
【正确请求】
从上面的例子可以发现,在查询中包含细节可以带来以下好处。
● 个性化: 提供详细信息可以帮助创建一个符合个人特定需求、目标和限制的计划。
● 效率: 详细的信息可以减少来回确认的次数,节省时间,使信息提供者能够更快地提供帮助。
● 准确性: 细节确保了请求的准确性,从而得到更精确的回应和更高的满意度。
● 目标导向: 明确的目标和期望可以帮助指导整个学习和计划的过程,确保每一步都朝着最终的目标迈进。
那么如何让用户的提问包含更多的细节,是否有好的方法推荐呢?实际上,这个问题针对不同的领域有不同的答案,作为通用问题,这里推荐使用SMART原则。这也是笔者在直播课上给同学们介绍最多的方式。
SMART原则是一种设定目标的方法论,它代表具体(Specific)、可衡量(Measurable)、可实现(Achievable)、相关性(Relevant)和时限性(Time-bound)。将SMART原则应用于提示词工程。可以帮助用户构建更加有效和高效的查询。以下介绍如何整合SMART原则来写出更好的提示词。
● 具体: 提示词应该明确且具体,避免模糊和泛泛而谈。确保请求的信息是明确的,这样接收者就能理解你的具体需求。在学习Python的例子中,就告诉了大模型需要学习计划、学习级别、测试、学习目的等信息。
● 可衡量: 提示词应该包含可以衡量的标准或指标。这样可以跟踪进度和评估结果。例如,不要简单地问“如何学习Python技能”,而应该问“我计划30天完成Python的学习。”“我想通过完成10个实战项目来提高我的Python技能。”
● 可实现: 提示词应该基于现实和可达到的目标,确保请求的内容在实际环境中是可行的。例如,设定一个合理的时间框架,分阶段来学习新技能,就好像例子中分初级、中级、高级和专家四个阶段完成Python的学习,而不是期望一夜之间成为专家。
● 相关性: 提示词应该与你的长期目标和背景相关,确保请求的信息与当前的情况和未来的目标相匹配。例如,学习Python的目的就是从事大模型的开发,在提问时应该明确诉求,大模型在帮助生成计划时会“以终为始”设计更多与大模型应用相关的课程。
● 时限性(Time-bound): 提示词应该包含明确的时间限制或截止日期。这有助于创建紧迫感并促使行动。例如,我希望在接下来的30天内,通过一个结构化的学习计划,从Python的初级水平提升到能够从事大型模型开发的高级水平。
与包含细节相同,设定角色也是提示词工程的重要原则。它可以帮助大模型更好地理解用户的背景、需求和期望。通过设定具体的角色,用户可以获得更加专业的回复。
【错误请求】
这个提示词没有提供关于提问者背景的信息,大模型会给出一个通用性回答,让人感觉都是正确的废话。
【正确请求】
这个提示词设定了一个具体的角色(经验丰富的作家),并指出了具体的需求(在小说写作中创造角色)。这样的提示词更有可能得到针对小说写作角色创造的深入和有用的建议。
从上面的例子可以看出,在提示词中设定角色有以下好处。
● 个性化: 帮助大模型根据特定背景和需求提供个性化的建议。
● 相关性: 确保得到的建议与用户的请求相关,从而更有实用价值。
● 深入性: 鼓励用户深入探讨感兴趣的主题,提供更深入的见解和技巧。
对于优秀的提示词来说,设定角色是远远不够的。在描述具体任务时,用户需要清晰地指定完成任务所需的步骤,从而为大模型提供清晰的指导,确保提供的信息是全面和有序的。
【错误请求】
【正确请求】
这个提示词明确指定了完成任务所需的三个主要步骤,使回答者能够提供一个更加全面和有序的指导。
正确请求的提示词中指定了完成任务所需的步骤的作用。
● 全面性: 指定步骤可以确保获得完成任务所需的所有相关信息,而不会遗漏重要的细节。
● 有序性: 指定步骤可以按照逻辑顺序学习或执行任务,这有助于提高效率和减少混淆。
● 明确性: 明确的步骤指示可以让信息提供者了解用户的具体需求,从而提供更加精确和有用的信息。
通过在提示词中指定完成任务所需的步骤,用户可以提高沟通的清晰度,确保获得全面、有序且相关的信息或指导。
下面将提供示例、分割内容、限定长度这三个原则放在一起介绍,在提示词中提供示例、分割内容和限定长度是为了提供更具体的信息和上下文,这有助于信息提供者更好地理解用户的要求,并按照设定的参数提供回答。
【错误请求】
这个提示词没有提供示例,也没有限定长度,可能会导致回答不符合用户期望或长度要求。
【正确请求】
正确提示词提供了一个具体的示例,指明“[]”分割给出的示例,并限定了长度(不超过20字)。这样的提示词更有可能得到符合期望风格的回答。
● 提供示例: 可以帮助大模型了解期望答案的风格和质量。示例作为一个参考点,指导大模型如何构造回应。
● 分割内容: 指明回答的各个部分或要素,以上例子中将一首诗句通过“[]”符号进行分割,让大模型清楚需要模仿的对象是谁,避免众多文本混杂造成理解上的歧义。
● 限定长度: 帮助大模型了解答案的详细程度或简洁性。在限定文本输出长度的场景特别有用,如标题、诗句、口号等。
通过在提示词中提供示例、分割内容和限定长度,用户可以提高沟通的精确度,确保获得符合期望和要求的回答。
实际上,提示词工程的原则远不止上面这些,在OpenAI的官网上就推荐了不少,上面是以笔者个人的教学经验总结的几条好用且容易记忆的几个。下面将通过几个基于提示词工程的应用来进一步讲解,它是如何落地商业应用的。