软件开发者的提示工程指南
作为一个AI初创公司的人,我可以告诉你,提示工程绝对是一项需要时间和精力去掌握的复杂技能,但它并不比构建应用程序所需的其他任何技术技能更重要或更不重要。

在过去的几年里,人工智能领域的每个人都一直在推动这样一个叙事:提示工程是未来的方向,也是你即将拥有的唯一职业选择。如果你现在不学它,当你找工作时就会陷入困境。
作为一个在过去几个月里一直在开发一家新的AI初创公司的人,我可以告诉你,这绝对是一项需要时间和精力去掌握的复杂技能,但它并不比构建应用程序所需的其他任何技术技能更重要或更不重要。
因此,在这篇文章中,我将分解那些通常不被谈论的技术方面的提示工程内容。我们将讨论结构化的模式、标记化和温度以及参数配置等有趣的内容。
1、人们认为它是怎样的
让我们从这里开始,因为经常有人告诉我他们正在做提示工程,但实际上,他们只是在ChatGPT中输入提示词,然后将它们存储在一个Excel表中。
严格来说不算“错误”,但我可能会认为这是一个初级水平的提示工程师。以下确实是我设计的一个提示:
写一个验证电子邮件的函数 :)
在更复杂的方面,你经常会看到跨度数千个标记的庞大提示,希望输出能够完美无缺。
# 现代Next.js作品集模板
请使用Next.js 14创建一个现代、响应式的个人作品集网站,并遵循以下规格:
## 项目结构
- 使用Next.js App Router
- 实现TypeScript以确保类型安全
- 按以下目录结构组织项目:
- app/(用于路由和布局)
- components/(可重用UI组件)
- lib/(实用函数和配置)
- public/(静态资产)
- styles/(全局样式和CSS模块)
...数百行更多内容...
更有可能的是,你会在上面那个简单的提示中得到比复杂提示更准确的结果。我已经在网上看到了很多长篇提示,声称可以完成奇迹,比如在一小时内构建并推出整个SaaS产品。但当你实际将这些提示粘贴到任何模型中时,结果往往是最糟糕的随机性和混乱。
让我们深入探讨有助于提高复杂任务准确性的一些其他提示工程技术。
2、理解模型
每家人工智能公司都会实现自己的模型、模型版本及其模态。有些公司有文本、语音和图像识别功能,而另一些公司可能只有文本,但它们的表现更好。
有些模型最多只能接受4096个标记,而另一些则可以接受多达100,000个。但再次强调,质量才是关键,很有可能那个4096标记的模型会返回更准确的信息。
而且它们的成本也各不相同。更高的成本并不一定意味着更高的准确性。
2.1 成本
如果你是在浏览器客户端上进行所有提示工程,比如ChatGPT、Claude或Gemini,那么你的成本基本上就是每月的订阅费用。
然而,如果你使用的是API,那么定价可能会变得复杂。大多数提供商根据你使用的具体模型提供不同的定价层级。参考:
几乎所有供应商都根据每次请求使用的标记数量收费。对于刚开始的大多数开发者来说,价格通常很低,你不必太担心。
例如,每天运行几十次测试,使用适度大小的标记,平均花费我10美分。
但是,如果你知道最终会处理大量数据,那么在创建提示时一定要考虑到这一点。
大多数人没有意识到输入提示会影响你的标记限制,这意味着如果你有一个2000标记的提示,那么你只剩下2096个标记用于输出(在一个最大为4096的模型上)。
2.2 标记化
标记化(tokenization)是指模型如何将文本输入处理成标记的过程。从技术角度来看,一个标记可以是一个字母、一个单词,甚至是一个单词的一部分。这将完全取决于特定模型的设计以及它认为什么是“标记”。
例如,句子“I love programming”可能会被标记为以下内容:
["I", " love", " programming"]
但你也可能遇到一个复杂的词,比如“unbelievable”,它可能会被标记为如下:
["un", "believable"]
这将完全取决于具体的模型,但概念是一样的。但这是一个重要的概念,需要牢记在心,因为每个模型都有其自身对每次请求可以使用的标记数量的限制。
并且根据你所处理的具体输入和输出,你可能需要精心设计简洁但仍然非常实用的提示,以节省成本并缩短生成时间。
2.3 温度
当与人工智能模型一起工作时,温度指的是控制特定响应随机性的参数。这个值通常在0到2之间,其中2表示最大的创造性随机性。
通常,“低”温度会返回更确定和可预测的响应。“高”温度值则会返回更具创意和随机的响应,尽管正确率略高一些。
高温度通常更适合生成任何类型的创意作品,如故事、文章或社交媒体内容。
在最高温度下,你可能会发现响应过于不稳定,这就是为什么理解你的输入和预期输出并大量测试你的提示非常重要。
3、实验
与人工智能模型和提示工程打交道最棘手的部分是你无法完全预测输出。有时是纯文本,而其他时候则是你无法识别的结构化数据。
通常的解决方法是向模型提供你需要的确切输出:
以纯文本形式提供响应,不要包含特殊字符。
但从我的经验来看,这并不总是奏效。大多数情况下你会得到正确的输出,但偶尔你可能会遇到错误,而不知道原因。
3.1 边缘情况
人工智能的边缘情况(edge case)非常广泛且晦涩,因为正如上面提到的,你的提示可能在90%的时间内有效。但那剩下的10%会让你浪费时间和给你的应用用户带来糟糕的体验。
如果你想要构建一个可扩展的实际应用,让许多人每天都在使用它,那么这最后的10%需要考虑进去。
这就是为什么你可能需要在提示中添加大量的边缘情况检查,以确保输出正确。
不要包含特殊字符。只返回纯文本。移除格式化字符……等等
并且很可能你需要编写一些逻辑代码来清理和净化输出,如果需要的话。
3.2 A/B 测试
你可能会找到一个符合需求的提示,并产生一个“足够好”的输出。它甚至可能是“相当不错”。但有很大概率你可以做得更好。这就是A/B测试发挥作用的地方,特别是如果你的应用程序已经被人们使用了。
提示工程的一个重要部分是生产高质量的内容,所以你可能需要测试多种类型的输出,看看哪种输出具有最高的参与度。并且你需要根据此修改和调整你的提示。
4、上下文引导
引导(priming)是一种技术,通过提供某种相关背景信息来指导AI模型的响应。重要的是要记住,人工智能模型默认是没有记忆的,你的提示应该包含所有必要的数据,以便生成特定的输出。
因此,如果你正在编写一个帮助某人学习量子物理的提示,不要这样写:
"解释量子物理"
你应该这样提示:
"用简单的语言向高中生解释量子物理,并重点讲解叠加原理"
上述第一个提示可能会返回过于复杂的解释,导致用户体验不佳,而更具体的提示提前为模型提供了引导,以便产生更直接的响应。
你还可以通过给予模型特定的角色来引导它,比如某个已知的人物或角色:
扮演一位幽默教授,用幽默的方式教授复杂主题。
5、小样本学习
小样本学习(few-shot learning)是一种引导技术,通过给模型几个示例来提高响应的准确性,从而教会它以特定方式输出内容。
你可以通过指定任何所需的样本输入及其预期输出,然后跟随真实数据和占位符来实现这一点。
例如:
会议纪要示例:
CEO强调了客户满意度的重要性。Q2将推出一条新产品线,鼓励员工分享创新想法。
要点:
- 客户满意度是首要任务。
- 第二季度将推出一条新产品线。
- 鼓励员工贡献创新想法。
Transcript: {transcript}
要点:
在上述片段中,示例的会议纪要和后面的关键点完全不相关。它们只是用来展示模型应该生成的内容。
然后你向模型提供真实的信息,模型会假设接下来该做什么。
这绝对是一种聪明的技术,可以帮助你更精确地获取所需的数据输出。
6、思维链思考
思维链提示是一种技术,其中AI模型被鼓励“一步一步地思考”,通过明确指导它逐步推理步骤,直到得出最终答案。
这种方法对于需要逻辑推理、复杂问题解决或多重步骤计算的任务特别有效。
与其直接要求模型给出答案,不如构建提示以鼓励逐步分解问题。这些中间步骤为模型提供了更清晰的路径,提高了其推理能力和准确性。
例如,如果你想要一个没有思维链思考的简单数学问题的答案,你的提示可能如下:
Prompt: "如果一家商店有7个苹果并卖出3个,还剩多少?"Response: 4
使用思维链思考,你的提示可能会如下所示:
Prompt: "一家商店有7个苹果。它卖出了3个苹果。首先,确定卖出了多少个苹果。然后从总苹果数中减去那个数量。还剩多少?"Response: 商店最初有7个苹果。它卖出了3个苹果。减去3后得到剩下4个苹果。
通过指定模型应遵循的具体步骤,你可以获得更详细和准确的回答。
在某些情况下,当你必须以非常具体的方式处理用户输入以获得确切回答时,这种技术可能更有益。
7、响应格式
大多数人习惯于AI模型以单一响应输出来回答提示,并且主要是作为一大段文本。
然而,最新的模型能够以更复杂的方式响应,比如JSON模式,而这些模式是由你自己在提示中指定的。
例如,假设你在开发一个应用程序,用于生成随机编程问题供人们练习。如果模型以一大段文本的形式回应,那么你将不得不自己解析这些文本。
相反,你可以指定所需的JSON模式并告诉模型只以该格式返回数据。
Generate 3 technical programming questions and return then in JSON with the following schema:
[{title: 'title goes here', question: 'question goes here'}]
这就是提示工程的核心。在现实世界的应用中,为了进行UI/UX操作,你需要结构化的数据。
如果你正在为某人构建简历使用AI,那么你需要知道哪些数据对应于他们的过往经验、教育背景、技能等。
不过请注意,这种方法也不能保证100%有效。根据我的实验,它通常能工作。但偶尔,模型可能会回应“Got it. Here's the data! [{...”。这会使解析变得困难。
但大多数这些边缘情况也可以通过指定模型不应返回任何其他内容,只返回有效的JSON来解决。然而,这种情况通常也能工作。
8、结束语
作为专业技能的提示工程仍然很新,并且随着模型的变化而不断变化。新的规则被制定,新的限制被添加,有时还会加入新的“情感”和行为。
但它是一项值得拥有的技能。能够为AI模型精心设计简洁的输入字符串,以在另一端生成精确和准确的数据,在未来与人工智能互动越来越多的情况下将会非常重要。
原文链接:A Developers Guide to A.I. Prompt Engineering
汇智网翻译整理,转载请标明出处
