![]()
当我刚开始编写提示词时,我有一个不切实际的期待:既然大语言模型"无所不知",它们就应该总是产出完美的结果。带着这种期待,我早期构建的提示词给了模型太宽泛的输出范围。这让我怀疑自己使用的是否和其他人认为令人惊艳的同一个AI。
我对AI有很多看法,但就我对其输出的困扰而言,问题出在我身上。如果你在大语言模型输出方面也遇到了自己造成的困扰,不要担心。帮助就在这里。
什么是提示词
任何你向大语言模型提出的要求。从技术角度来说,它是你发送给模型的任何输入。这可以是一个单词、一条详细的系统消息,或者介于两者之间的任何内容。
在提示词工程的语境下,提示词是一个精心设计的输入结构,旨在引出可靠的输出。
为什么提示词工程很重要
我以前对提示词工程的理解是告诉模型我的想法,期望它能接受一个不明确的输入并输出我项目的完成版本。但这并不是提示词工程。
例如,同样的提示词"画一只猫"每次使用都会给你不同的结果。但如果你实际想要的是一只黑猫的图像,要微笑着,戴着红色蝴蝶结,那就具体地提出这个要求。你仍然不会每次都得到相同的结果,但你得到的结果会更接近你的期望,并且可能是你和模型可以迭代改进的东西,而不是一次次地重新开始。
是的,这是一个愚蠢的例子和明显的用户提示词,但它清楚地说明了一个设计糟糕的提示词。如果你想要一幅戴着红色蝴蝶结的黑猫图,你就会直接要求这个。但当话题变得更有挑战性时,比如"设计一个处理用户身份验证的系统",这个要求可能显得不够清楚。网站有多少用户?是微服务架构吗?你想要OAuth、JWT还是基于会话的身份验证?
这是一个很长的方式来说明:设计一个好的提示词将减少变异性并提高可靠性。
大语言模型如何工作
大语言模型不是神奇的读心者。我们可能认为人类的思考或推理,在大语言模型身上是别的东西。大语言模型遵循训练期间学习的统计模式,它们非常擅长将输出与你的输入提示词进行模式匹配。当你帮助它们找到你想要的模式时,效果会更好。
大语言模型在遵循指令时有一个层次结构:
系统指令权重最高
开发者指令其次
用户输入最后
好提示词的要素
如果你需要特定的东西,比如你想构建一个让团队使用自然语言查询数据库的内部工具,在开始提示之前花时间研究。了解工具实际需要做什么。首先问自己困难的问题:它需要处理多个表连接吗,应该在运行查询之前验证查询吗,谁有访问权限,如何处理返回空结果的查询?在开始之前你越清楚自己想要什么,你花在告诉模型重做的时间就越少。
你不必是专家。大语言模型可以帮助你做研究。但要做好研究,在构建网站之前知道你想要大语言模型构建什么。
清晰指令:知道你在寻找什么并清楚地提出要求。"构建一个待办事项应用"给了模型太多自由度。"构建一个待办事项应用,当我勾选任务时它们从屏幕上清除,并有一个日历让我可以为每天分配任务"细化了输出。
上下文:给模型执行任务所需的信息。不必要的上下文会增加噪音,但太少会导致通用输出。如果你在为工程师构建后端工具,告诉模型:"用户是一名从事分布式系统工作的高级后端工程师。"这一行改变了语调、词汇和假设知识。
约束:没有约束,模型会填补空白。这扩大了可能输出的范围。强约束使输出可能性与你的期望保持一致。
输出格式:如果你在编写代码,这很重要。如果你不指定格式,就无法可靠地解析输出。即使模型90%的时间返回看起来合理的内容,剩下的10%也会在最糟糕的时候破坏你的管道。
常见的提示词模式
我们不需要每次需要大语言模型帮助时都重新发明轮子。
少样本提示为模型提供一个小型数据集。数据集包含你在输出、结构、语调和风格方面寻找的确切内容。如果你发现自己在编写关于输出期望的冗长细节,你可能想用少样本提示来替换。
思维链提示在你不确定需要什么时很有用。这些提示要求模型在回答前逐步推理。是的,这提高了需要判断的任务的质量。另一个好处是它允许你与大语言模型作为思维伙伴一起工作。
角色提示在你为特定受众构建某些内容时改善模型的输出。你为初学者构建的东西与为专家构建的不同。通过包含"你是一名主要使用Snowflake数据专注于产品分析的数据分析师"来设置领域上下文。这将影响词汇、假设知识和可能的权衡。
工具增强提示通过让模型访问你的工具,将其转化为真实信息的来源。工具增强提示将帮助你获得特定问题的答案,比如"最后一次构建的部署管道返回了什么?"只要你也提供一个查询系统的函数。
为什么这很困难
因为学习如何做某件事使那件事看起来比实际操作更容易。
评估也很重要。在你测量它之前,你不会知道提示词是否有效。
验证。验证输入。验证输出。当模型返回意外内容时,要有应对计划。
总结
总结这篇文章的最好方式是看看好提示词和模糊提示词之间的区别。
模糊提示词给模型太多解释空间,而好提示词提供清晰的指令、相关上下文、适当约束和明确的输出格式。掌握这些模式将显著改善你与大语言模型协作的效果。
Q&A
Q1:什么是提示词工程?为什么它很重要?
A:提示词工程是设计精心结构化的输入来引出大语言模型可靠输出的技术。它很重要是因为可以减少输出的变异性并提高可靠性,避免模型产生过于宽泛或不符合期望的结果。
Q2:好的提示词应该包含哪些关键要素?
A:好的提示词应该包含四个关键要素:清晰的指令(明确说明你想要什么)、相关的上下文信息、适当的约束条件,以及明确的输出格式。这些要素帮助模型更准确地理解和执行你的需求。
Q3:少样本提示、思维链提示等模式分别适用于什么场景?
A:少样本提示适合当你需要特定输出格式时,通过提供样例来指导模型;思维链提示适合复杂推理任务,让模型逐步思考;角色提示适合为特定受众定制内容;工具增强提示适合需要访问实时数据或外部系统的场景。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.