Prompt 开发生命周期是 Prompt Engineering 的重要基石
快速阅读: 《福布斯》消息,掌握生成式AI提示工程的四种方法(凭直觉、深思熟虑、有计划、全面),根据不同场景灵活运用。既要随机应变,也要注重规划,以提升效率和效果。
掌握提示开发生命周期(PDLC)的方法能够显著提升生成式人工智能的工作效率。在今日的专栏中,我将继续深入探讨有助于充分利用诸如ChatGPT、GPT-4、Bard、Gemini、Claude等生成式AI应用的提示工程策略和技巧。这一次的重点是介绍一种重要的系统化方法——提示开发生命周期(PDLC)。这种方法类似于编程或软件工程中常用的系统开发生命周期(SDLC)。
如果你对整体提示工程感兴趣,你可以参考我关于五十多种关键提示策略的综合指南,详情请点击链接[这里]。许多人习惯于即兴编写提示,这种方式通常是通过直觉来完成的。通常情况下,你面对生成式AI应用中的空白提示框时,脑海中浮现出想要询问的问题。你开始输入模糊的问题,很快意识到需要补充一些有用的上下文信息,否则AI无法理解你的意图。问题是,你是直接补充上下文,还是清空已输入的内容重新开始?这就是典型的试探性提示编写过程。
更多内容请参考《纽约时报》今日谜题:3月18日星期二的线索、拼字游戏和答案;《纽约时报》微型谜题:3月18日星期二的线索与答案;以及《纽约时报》今日谜题:3月18日星期二的线索、拼字游戏和答案。
距离报税季结束还有一个多月,美国国税局(IRS)的报税数据显示,征税活动依旧呈现出微弱的生命迹象。你事先并未做好特别的准备,只是空洞地想着登录生成式AI应用程序并开始输入。无论如何,你期待自己能想出一个能够完成任务的提示。可能需要输入一个软弱无力的提示,一旦看到AI生成的响应后,你就得重写提示。没关系,你可以在现场立即重写提示。然而,有些批评者会对你如此漫不经心的做法表示不满。你怎么敢如此草率地想出一个提示?离开AI,先理清你的思路。有条理地写下你想询问的内容,然后,也只有在那时,你才能访问AI。这样你会准备得更充分,并能有效地利用生成式AI应用程序。你事先并未做好特别的准备,只是空洞地想着登录生成式AI应用程序并开始输入。无论如何,你期待自己能想出一个能够完成任务的提示。可能需要输入一个软弱无力的提示,一旦看到AI生成的响应后,你就得重写提示。没关系,你可以在现场立即重写提示。我不是那种高高在上的批评家中的一员。你看,我愿意承认,在某些情况下,通过即兴提示的方式使用生成式AI是完全可以接受的。祝你好运。但我同时也敦促你不应仅仅局限于一种方法。如果你在进行提示时总是随意行事,那你很遗憾地错过了使用生成式AI的全部重要价值。你应该知道如何超越直觉的方法。
提示编制的四种基础方法
任何认真认为自己是提示工程师的人都应该熟悉所有编制提示的方式。在我的提示工程课程中,我注意到有四种基础方法:
1. 凭直觉提示。即兴编制提示,通常是在你需要的时候实时进行。
2. 深思熟虑的提示。在编写提示之前思考它,注意你希望提示说什么和做什么。
3. 预先规划的提示。提前规划你要编写的提示及其系列提示,包括预先撰写其中的一些提示,而其他提示则可能基于预先确定的整体结构实时编写。
4. 系统化的提示。提示发展的顶峰是一种类似严格系统开发生命周期(SDLC)的形式化生命周期,通常称为PDLC(提示开发生命周期)。我会在接下来的过程中为你详细解释这些。
这种编制提示的概念可以类比于编写计算机程序。有些软件开发者和程序员凭直觉编写代码,而另一些人则以系统化和规定的方式进行。一个平衡良好的系统开发者知道各种方法,并根据具体情况选择合适的一种。如果你曾经开发过新系统,你可能听说过或者甚至使用过SDLC(系统开发生命周期)。即使你从未当过开发者,你也可能是参与构建新系统的用户之一。也许系统开发者向你展示了一系列用于开发工作的步骤或阶段。这被认为是一种SDLC。SDLC通常明确为一系列阶段、阶段或步骤,应在构思、设计、编码、测试和部署新系统时遵循。这也被称为瀑布模型。通常,你会从一个阶段或步骤移动到下一个阶段,就像流水沿着河流流下一样。在某些情况下,你可能会更加迭代,快速且循环地通过这些阶段,这是敏捷开发方法论原则的一个前提。
关于正式SDLC的一个常见抱怨是,它们通常假设正在开发的系统庞大且复杂。由于涉及大量文件,如果系统一开始就简单明了,似乎很难证明所有这些形式主义是合理的。关于大型SDLC的一种诙谐评论是,它们像是一把大象枪,用这么强大的武器去对付一只蚂蚁是没有意义的。因此,大多数精心撰写的SDLC都有缩短版的方案,旨在认识到有时更快速的方法是合适的。可以把这种调整看作是与目标蚂蚁相匹配的小型蚂蚁版本。
形式化与优雅
我提到这一点是因为在提示工程领域有一个问题,即使用提示导向的SDLC是否像那个比喻中的大象枪。提示不同于编码,因为通常你一次只会处理少量提示,而编码可能涉及数百或数千行代码。提示的编写是否合理地关联到编写代码,或者这个类比被过度拉伸,引导我们错误地尝试使用SDLC而不适用呢?
我提到这一点是因为在提示工程领域有一个问题,即使用提示导向的SDLC是否像那个比喻中的大象枪。提示不同于编码,因为通常你一次只会处理少量提示,而编码可能涉及数百或数千行代码。我的答案是,当你的情况需要这种额外的能力时,确实可以使用提示导向的SDLC。我大声宣称,你不需要总是完全采用这种严格的路径。再次强调,请根据手头的情况选择正确的工具。
我们应该用什么名字或术语来指代提示导向的SDLC呢?提示工程领域还很新,目前还没有广泛接受的标准术语。以下是我见过的一些名称:
– PE-SDLC。提示工程-系统开发生命周期。
– PESDLC。提示工程系统开发生命周期。
– PDLC。提示开发生命周期(这是最常见的表述)。
– PODLC。提示导向开发生命周期。
– PLC。提示生命周期。
各种研究人员和公司正在提出提示工程的推荐实践,有时会指定专有的提示导向SDLC。务必仔细查看方法中所述的内容。它对你来说是否有意义?它是容易使用还是过于复杂?使用它是否会对你有益,还是会带来不必要的困难?
使用PDLC时要有常识
如果你看到了并爱上了PDLC,这并不意味着你必须完全放弃基于直觉的提示方法。我不想在这个问题上重复太多,但这是你在编写提示时应始终牢记的一点。我回想起多年前我刚开始从事AI开发和专业软件工程师职业生涯时学到的一句名言。起初我想确保我的代码总是达到最高质量。有一天,我们公司负责维护和运行的一个系统出现了问题。我想花很多时间编写最漂亮的代码来解决问题。与此同时,系统瘫痪了。用户们疯狂起来。警报声响起。上级管理层惊慌失措。这是一场灾难。一位资深软件开发人员跑过来,看到我在费力地工作,然后拿出了一些看起来丑陋但实际上有效的“意大利面条代码”,问我到底在干什么。当我试图解释我的开发方法是最优秀的时,他摇了摇头笑了。我永远不会忘记他告诉我的话。他透过眼镜看着我说,语气坚定:“实战中无需讲究风格。”有时候你需要做任何必要的事情来生存下去。这个睿智的故事也适用于提示。有时凭直觉编写提示是可以的。去做吧。还有其他时候,你应该放下本能反应,更谨慎地编写提示。
方法的渐进性质
我上面提到的四个基石方法具有渐进的性质。方法的渐进性质第一个是最即兴的,称为凭直觉提示。最后一个更为严谨,我简称为系统化的提示。两者之间是从即兴到严谨的过程,即深思熟虑的提示到预先规划的提示。这总体上标志着一系列渐进的方法,旨在提供逐步增强的专注程度来制定提示。
你的任务是什么?你应该最终能够从即兴方法到最明确和严格的方法都感到自在。一旦真正掌握了所有这些方法,就应在适当的时候使用正确的方法。还有一句你可能知道的名言适合这种情况。人们说,如果你只知道锤子,整个世界看起来就只有钉子。有时螺丝刀比锤子更好。提示工程师需要熟悉独特的提示工程开发方法,并根据实际情况使用每种方法。
深入探讨决定因素
你怎么知道哪种情况适合哪一种方法?我很高兴你问到了。考虑以下五个关键要素:
1. 提示目的
2. 提示限制
3. 提示频率
4. 提示预期类型
5. 提示开发方法
让我们简要探讨每个关键要素。
首先,你需要考虑潜在提示的目的。我之前讨论过,大多数时候在使用生成式AI时应该心中有明确的目标,详见链接[这里]。你是试图回答具体问题吗?你是试图解决特定问题吗?你是四处寻找新想法吗?总的来说,与生成式AI的对话应该有一个目的,然后目的是制作足够且适当的提示来服务于该目的。
首先,你需要考虑潜在提示的目的。我之前讨论过,大多数时候在使用生成式AI时应该心中有明确的目标,详见链接[这里]。你是试图回答具体问题吗?你是试图解决特定问题吗?我是喜欢将“提示目的”设想为三个层次:
1. 玩耍。
2. 尝试获得一个好的答案或响应。
3. 深入探究重要的事物。
另一个影响确定合适情况的因素涉及在使用生成式AI时面临的各种限制。以下是典型的限制清单:
1. 编写提示所需的时间。
2. 编写提示的成本。
3. 运行提示并获得结果所需的时间。
4. 运行提示并获得结果的成本。
5. 响应或结果的质量。
正如上面所述,其中一个限制是您构思提示所需的时间(限制1)。如果您时间紧迫且需要快速行动,您可能不愿意花太多时间思考和编写提示。构思提示可能涉及成本(限制2),例如,如果您必须进行一些研究或支付他人来首先识别提示的相关方面。
我敢说,最显著的限制是涉及运行提示所需的时间(限制3)以及为此付出的费用(限制4)。一些生成式AI应用程序可以免费使用,因此您可能不关心运行提示需要多长时间,也不关心成本,因为没有收费或费用。但对于那些使用收费生成式AI应用程序的人来说,您可能需要留意自己的支出。有方法可以编写提示,使其运行得更快。您也可以随意编写提示,结果却运行得很慢。除了延迟收到回复外,这无疑会占用生成式AI服务器的计算资源。提示的措辞既可以节约资源,也可以浪费资源。
或许最明显的限制是响应或结果的质量(限制5)。很多人都这样做。他们匆忙编写提示。按下回车键后,得到的结果与他们期望的大相径庭。然后他们重新编写提示,但结果仍然不尽如人意。如此反复。响应的质量不一定是因为AI的错,可能是提示写得不好或者一系列提示都很糟糕。
如果您的时间充裕,这也许是可以接受的。但如果在为使用生成式AI付费,这种随意重复的努力可能会迅速累积大量费用。很可能,如果您事先仔细考虑过提示,第一次或第二次尝试就能得到正确的结果。没有必要愚蠢地浪费宝贵的金钱在随意的尝试上。
更多因素涉及及一个示例
一般而言,接下来要考虑的因素是该提示是一次性使用还是可能会再次使用。这就是提示的频率。
我认为这可以这样理解:
1. 仅一次性使用。
2. 重复使用。
3. 可重用模板。
一般来说,如果一个提示可能会被偶尔使用,或者将来有可能被融入到一个可重用的模板中,那么提前投入精力去编写提示是值得的。但这并不意味着一次性提示就不值得提前深思熟虑。它也是值得的。其他因素当然会有助于确定这一点。
说到模板,提示可以有多种预期用途类型。
这是我列出的预期用途类型:
1. 模板使用。
2. 示例使用。
3. 由AI为您生成。
4. 从头开始编写。
这些预期用途类型交织进了当编写提示时需要考虑的复杂因素的拼图之中。
假设我正在尝试编写一个提示,让生成式AI来回答一个棘手且重要的问题。我的目标是将这个提示转化为一个可重用的模板,以便其他人以后可以利用我的提示来解决类似的问题。我使用的生成式AI应用程序对我的每周使用量设有限制。如果超过限制,我会开始支付超额费用。
我应该使用哪种方法?
让我们评估一下这些因素,并看看它们如何帮助我们做出决定。我会将每个选择用粗体标出,并用箭头展示基于此提示最终目标的选择依据。
1. 提示目的
– 级别1:随意玩耍。
– 级别2:试图获取良好的答案或响应。
– → 级别3:认真深入探讨某件重要事情。
2. 提示限制
– 限制1:构思提示所需的时间。
– 限制2:构思提示的成本。
– 限制3:运行提示并获得结果所需的时间。
– → 限制4:运行提示并获得结果的成本。
– 限制3:运行提示并获得结果所需的时间。
– → 限制5:响应或结果的质量。
3. 提示频率
– 频率1:仅一次性使用。
– 频率2:重复使用。
– 频率1:仅一次性使用。
– → 频率3:可重用模板。
4. 提示预期用途类型
– 类型1:模板使用。
– 类型2:示例使用。
– 类型1:模板使用。
– 类型3:由AI为您生成。
– → 类型4:从头开始编写。
基于这些因素,我将采用彻底的方法,因为确保我的提示设计良好并能有效获得准确响应是值得努力的。
有许多PDLC可供选择
似乎每天都有人提出另一种提示导向的SDLC。我将这些称为PDLC,尽管正如提到的那样,人们使用各种术语来指代此类方法。
让我们快速看一下两个,这样您可以了解PDLC通常包含的内容。
首先,Anthropic,Claude生成式AI应用的开发者,在其官方网站上描述了一个PDLC(参见“提示开发生命周期”,Anthropic,提示工程博客,2024年5月10日在线访问)。这是他们推荐的PDLC的描述(我摘录了部分内容;鼓励您访问他们的网站以查看其余详细信息):
“我们建议采用原则性的、测试驱动的开发方法,以确保提示的最佳性能。让我们通过以下关键的高级流程来说明我们在为任务开发提示时所采用的方式,如附图所示。”
1. 需求调研:第一步也是最关键的一步是清楚地界定您希望Claude执行的具体任务。这可以是从实体提取、问答到文本摘要等简单任务,也可以是代码生成或创意写作等更复杂的任务。一旦任务明确,建立指导评价和优化过程的成功标准。
2. 开发测试用例:在定义任务和成功标准之后,下一步是创建一组多样化的测试用例,涵盖您应用程序的预期应用场景。这些应包括典型示例和边缘情况,以确保您的提示具有鲁棒性。预先设定好测试用例将使您能够客观地衡量提示相对于成功标准的表现。
3. 设计初步提示:接下来,起草一个初始提示,概述任务定义、良好响应的特征以及Claude所需的任何必要上下文。理想情况下,您应该添加一些示例输入和输出供Claude遵循。这个初步提示将成为后续改进的基础。
4. 测试提示与测试用例:使用初步提示将测试用例输入Claude。仔细评估模型的响应是否符合预期输出和成功标准。无论采用人类评估、与答案键比较,还是基于规则的另一个Claude实例判断,关键是系统化地评估性能。
5. 优化提示:根据步骤4的结果,迭代优化提示,以提高测试用例上的表现并更好地满足成功标准。这可能涉及添加澄清、示例或约束条件来引导Claude的行为。请注意不要过度优化特定输入集,以免导致过拟合和泛化能力差。
6. 发布优化后的提示:一旦您得到了一个在所有测试用例上表现良好且符合成功标准的提示,就可以将其部署到您的应用程序中。实时监控模型的表现,并随时准备根据需要进一步优化。未曾预见的特殊情况可能出现在最初的测试集中。
您可以看到他们提倡一种六步PDLC。
PDLC提到了Claude,但我认为您可以很容易看出这些步骤同样适用于其他生成式AI应用程序。
接下来,我认为您可能会发现了解关于PDLC的研究很有价值。
例如,在Lorrie Willey、Barbara Jo White、Cynthia Deale撰写的一篇名为《在大学课程中教授AI:介绍AI提示开发生命周期(PDLC)》的论文中(《信息系统问题》,第24卷,第2期,2023年),提出了一个PDLC(此处摘录如下):
“为了高效生成AI提示,理解开发提示的思维过程以及编写提示的技术至关重要。本文介绍了提示开发生命周期(PDLC),它提供了一个框架,向学生介绍编写提示的认知方面以及一些可以提高他们编写提示能力的基本技术。”
“该模型包括以下阶段:需求调研、开发、测试和评估。PDLC的迭代性质增强了编写提示的逻辑性,每个阶段都建立在前一阶段的基础上。在写出符合预期结果的提示之前,一个人可能需要多次经历这些阶段。”
“需求调研:明确主题及其背景信息、描述主题的短语或关键词、期望的输出格式和可用工具。”
“开发:使用需求调研阶段的信息创建或优化提示。”
“测试:运行提示并维护提示及其输出。”
“评估:验证输出是否准确并对输出的准确性和潜在偏见进行批判性分析。”
这是一个四步PDLC。
我之前提到过,PDLC在阶段或步骤的数量以及支撑这些步骤的细节上可能会有所不同。话虽如此,总体而言,PDLC通常是相当相似的,选择任何一个都不会出错。
我这样说是因为有些人纠结于挑选“最佳”或“正确”的PDLC,陷入这样的困境中。不要陷入分析瘫痪。仔细看看几个PDLC,选择一个你觉得合适的,然后继续前进。
使用生成式AI深入探讨PDLC
接下来,我将进一步探讨PDLC的本质。
这将包括与ChatGPT的一系列对话。选择ChatGPT是合理的,因为它作为一个生成式AI应用非常受欢迎。据说每周有大约4亿活跃用户在使用ChatGPT。那是很多人,也是大量的生成式AI使用正在进行。
我选择从询问ChatGPT什么是PDLC开始。我们可以从中了解ChatGPT对此的看法。
开始了。
我输入的提示:“什么是提示开发生命周期?”
ChatGPT生成的响应:
“提示开发生命周期(PDLC)是指为AI系统创建、测试、优化和部署提示的结构化过程,特别是针对像ChatGPT这样的自然语言处理(NLP)模型。以下是PDLC中通常涉及的各个阶段的详细分解。”
1. 需求调研。
– 目标界定:识别提示的目标和目的。了解您希望AI实现什么或需要什么样的响应。
– 情境理解:考虑提示将在哪个场景中使用,包括目标受众和具体应用。
2. 提示设计。
– 初步起草:创作提示的初始版本。这包括起草清晰且具体的疑问、指令或陈述。
– 初步起草
– 遵循指南:确保提示符符合任何指南或伦理标准,例如避免偏见并确保包容性。
3. 测试。
– 试点测试:将提示符通过AI模型运行以查看初始响应。这有助于识别任何即时问题或意外结果。
– 迭代:根据试点测试结果,对提示符进行迭代。调整措辞、结构和内容以提升清晰度和有效性。
4. 评估。
– 性能指标:使用相关性、连贯性、准确性和用户满意度等不同指标来评估提示符。
– 反馈收集:收集测试用户或利益相关者的反馈,以了解提示符的表现及其改进领域。
反馈收集
5. 优化。
– 优化:进行必要的调整以优化提示符。这可能包括微调措辞、添加澄清细节或重构提示符以获得更好的结果。
– A/B测试:对不同版本的提示符进行A/B测试,以确定哪个版本表现更优。
A/B测试
6. 部署。
– 集成:将优化后的提示符集成到预期的应用程序或系统中。
– 监控:持续监控实际场景中提示符的性能。收集有关其有效性和出现的任何问题的数据。
7. 维护。
– 定期更新:定期审查和更新提示符,以确保其保持有效和相关。这可能包括纳入新数据、适应用户行为的变化或应对任何新的伦理考量。
– 反馈循环:建立反馈循环,以不断从用户那里获取见解并相应地改进提示符。
反馈循环
8. 文档记录。
– 记录保存:记录开发过程,包括所做的改动、测试结果和反馈。这确保了提示符如何开发和演化的明确历史记录。
– 知识共享:与团队或社区分享见解和最佳实践,以协助改善未来的提示符开发工作。
PDLC的重要性。
– 一致性:确保提示符以结构化的方式开发,从而实现一致且可靠的AI交互。
– 质量:通过系统地根据测试和反馈完善提示符来提升AI响应的质量。
– 可扩展性:促进在规模上创建有效的提示符,这对大规模AI部署至关重要。
– 伦理:帮助识别并缓解潜在的伦理问题,如AI响应中的偏见和公平性。
通过遵循PDLC,开发人员和研究人员可以创建更有效、可靠和用户友好的AI系统,更好地满足其应用程序和用户的需求。
ChatGPT回应结束
从以上生成的回答可以看出,ChatGPT确实接受过关于提示导向型SDLC的一些数据训练。
经验和下一步
本讨论中最重要的要点是,你应该熟悉并掌握四种核心提示设计方法:
1. 凭直觉型提示。
2. 深思熟虑型提示。
3. 有计划型提示。
4. 全面型提示。
不要只用一种方式。根据情况使用凭直觉型提示。根据需求采用有计划型提示。并且根据具体情况采取恰当方法。
我认为仅选用一种方法并在所有情况下都使用它将是目光短浅的,并不能带来显著益处。
关于凭直觉的价值,我将引用著名的中国哲学家老子的话:“让事物自然向前发展,随心所欲。”这是极佳的建议。
关于全面的价值,我将引用亚伯拉罕·林肯的名言:“给我六个小时砍倒一棵树,我会花前四个小时磨快斧头。”这也是非常好的建议。
我们该如何调和看似对立的建议?答案显而易见,即针对具体情况采取恰当方法,并因此感到欣慰。
(以上内容均由Ai生成)