如何写好提示词(Prompt)
摘要: 写好提示词(Prompt)的关键在于清晰、具体地指导AI完成任务。核心原则包括:指令明确(如限定字数、受众)、提供上下文(如产品细节)、角色扮演(如设定专家身份)、拆解复杂任务(分步骤执行)和指定输出格式(如JSON)。吴恩达教授强调用分隔符区分指令与数据、结构化输出、角色设定、分步思考和示例引导。遵循CRISP法则(清晰、角色、信息、步骤、精确)能显著提升AI输出质量,如同编程般精确指导
写好提示词(Prompt)是使用大语言模型的关键技能。其核心在于 “像与一个极其聪明但毫无常识的新员工沟通” :你必须清晰、具体、并提供足够的上下文。
一、提示词应遵循的原则
以下是五大核心原则及其正反例子:
原则一:指令明确,避免模糊
模糊的指令会导致模型自由发挥,结果可能完全不符合你的预期。
反例 1:写点关于人工智能的东西。
问题: 太宽泛了。是写技术报告、科普文章、历史回顾、还是诗歌?目标读者是谁?
正例 1:写一篇约500字的科普短文,向高中生介绍机器学习的基本概念,包括监督学习和无监督学习的简单例子。
改进点: 明确了长度(500字)、受众(高中生)、内容焦点(机器学习概念及例子)和文体(科普文)。
原则二:提供上下文和背景信息
没有背景信息,模型只能做出最通用、最平庸的假设。
反例 2:为我们的新产品写一条推特。
问题: 模型不知道产品是什么、目标客户是谁、有什么亮点,写出的内容必然空洞。
正例 2:为我们新推出的名为‘Zenith’的极简主义番茄钟App写一条推特。目标用户是学生和远程工作者。突出其‘减少手机干扰’的核心功能。语气积极且具有号召力,并添加2个相关标签。
改进点: 提供了产品名称(Zenith)、类型(番茄钟App)、特点(极简主义、减少干扰)、受众(学生、远程工作者)、平台要求(推特、标签)和语气(积极、有号召力)。
原则三:使用引导词和角色扮演
通过让模型扮演特定角色,可以引导其输出更专业、风格更一致的文本。
反例 3:解释一下什么是区块链。
问题: 输出会是标准的技术解释,可能枯燥且没有重点。
正例 3:假设你是一位非常擅长用比喻和生活中的例子来解释复杂概念的中学教师。请你向一个零基础的初中生解释区块链是什么,避免使用技术术语。
改进点: 指定了角色(中学教师)、风格(善用比喻和例子)、受众(零基础初中生)和限制(避免技术术语)。
原则四:将复杂任务拆解为步骤
对于复杂任务,一步步的指令能极大提高结果的准确性和质量。
反例 4:帮我分析一下这份数据【粘贴数据】,然后写个报告。
问题: 模型不知道如何分析(用什么方法?)、报告的重点是什么、结构如何,很容易产生混乱或错误的输出。
正例 4: 请按照以下步骤处理提供的数据:
- 首先,总结这份数据中的关键趋势和异常值。
- 其次,分析导致第3季度销售额异常可能的原因,提出3个假设。
- 最后,根据你的分析,撰写一段约200字的简要报告摘要,供管理层会议使用。
改进点: 将任务清晰地拆解为“总结 -> 分析 -> 撰写”三个步骤,并明确了每一步的具体要求。
原则五:指定输出格式和结构
明确你想要的格式(JSON、HTML、Markdown、列表等),让模型的结果更易于你后续使用和处理。
反例 5:列出文艺复兴时期的三位主要艺术家及其代表作。
问题: 输出可能是一段连贯的文字,不便于快速浏览和提取信息。
正例 5:以Markdown表格的形式列出文艺复兴时期的三位主要艺术家,表格应包含三列:姓名、国籍、一首代表作。
改进点: 明确指定了输出格式(Markdown表格)和表格的具体列名(姓名、国籍、代表作),使输出结构清晰、机器可读。
总结:写好提示词的黄金法则 (CRISP)
- C - Clear (清晰): 指令 unambiguous,没有歧义。
- R - Role (角色): 让模型扮演一个特定角色。
- I - Information (信息): 提供充足的任务背景和信息。
- S - Steps (步骤): 将复杂任务分解为 sequential steps。
- P - Precision (精确): 明确指定长度、格式、风格等细节。
记住,与LLM沟通就像编程一样,你给的指令越精确,得到的结果就越符合你的期望。多加练习,你就能熟练掌握这门“与AI对话的艺术”。
二、吴恩达教授倡导的提示词核心策略
吴恩达(Andrew Ng)教授在提示工程(Prompt Engineering)方面提出了许多深刻且实用的见解和策略。他核心的观点是:将大语言模型视为一个需要被精确指导的“实习生”。要让这个实习生出色地完成任务,你必须给出清晰的指令。
以下是吴恩达教授倡导的、用于编写清晰提示词(Clear Prompt)的核心策略,我将结合他的理念为您进行梳理和解释:
核心策略一:使用分隔符清晰界定指令和数据
为什么要这样做?
为了防止用户的指令(Instruction)和需要处理的数据(Data)或上下文(Context)混淆在一起。使用明确的分隔符
(如``````, `"""`, `---`, `<tag>`等)可以帮助模型准确识别哪些是它需要遵循的要求,哪些是它需要处理的内容。
反例:
总结一下这段文字:人工智能是未来…(很长的一段文字)…非常重要。请用中文总结。
问题: 指令和待处理的文本混在一起,模型可能会误将指令的一部分作为需要总结的内容。
正例(吴恩达风格):
请总结一下用三个反引号分隔的文本。
```
人工智能是未来…(很长的一段文字)…非常重要。
```要求:总结内容不超过50个汉字。
效果: 通过```````将指令和文本清晰分离,模型能毫无歧义地理解任务对象和任务要求。
核心策略二:要求结构化的输出
为什么要这样做?
为了让你更容易地将模型的输出结果用于下一步的处理,例如存入数据库、导入Excel或由其他程序解析。JSON、HTML、XML等结构化格式是机器可读的理想选择。
反例:
列出三位文艺复兴时期的艺术家和他们的代表作。
问题: 输出可能是自由文本,格式不统一,不利于程序自动化处理。
正例(吴恩达风格):
列出三位文艺复兴时期的艺术家及其代表作。
请以JSON格式提供输出,JSON结构应包含以下键:`name`, `nationality`, `lifespan`, `masterpiece`。
其中,`lifespan`格式为`出生年-逝世年`,`masterpiece`为一个字符串。
效果: 你得到的输出是干净、标准的JSON数据,可以直接被应用程序解析和使用,极大提升了效率。
核心策略三:指定模型需要扮演的角色
为什么要这样做?
为模型设定一个角色(Persona)可以引导其输出风格和专业深度。让它扮演专家、顾问、初学者等不同角色,其生成的文本在语气、复杂度和视角上会有显著差异。
反例:
解释一下什么是区块链。
问题: 输出会是通用、中性的解释,可能缺乏特色或深度。
正例(吴恩达风格):
假设你是一位资深金融科技顾问,正在为一群投资银行家做讲座。
你的任务是:用专业但不过于学术的语言解释区块链技术的核心原理及其对跨境支付业务的潜在颠覆性影响。请避免使用过多的技术行话。
效果: 模型的输出会模仿资深顾问的口吻,内容更具商业洞察力,语气更自信,并专注于指定的应用场景(跨境支付)。
核心策略四:将复杂任务分解为步骤
为什么要这样做?
LLM在处理需要多步推理的复杂任务时,一步到位的指令容易导致遗漏或错误。通过要求模型“链式思考”(Think step-by-step),你可以引导它进行更清晰、更准确的推理。
反例:
根据提供的数据,写一份投资分析报告。
问题: 任务过于宏大,模型可能无法抓住重点,生成的内容可能结构混乱。
正例(吴恩达风格):
请严格按照以下步骤分析提供的数据:
- 1.第一步 - 总结趋势: 简要描述过去三个季度销售额和利润率的主要变化趋势。
- 2.第二步 - 识别异常: 指出数据中最显著的一个异常值或波动,并分析其可能的原因。
- 3.第三步 - 提出建议: 基于以上分析,为管理层提供一条具体的行动建议。
数据:
[此处插入数据]
效果: 你将得到一个结构清晰、逻辑严谨的分析报告,每一步都紧扣指令,大大提高了输出的质量和可靠性。
核心策略五:提供成功范例(Few-Shot Learning)
为什么要这样做?
“示例”是最强大的沟通方式之一。通过提供一两个输入和输出的例子(即Few-Shot Prompting),你可以明确地向模型展示你期望的任务格式、风格和复杂度。
反例:
把以下句子从正式语气改为随意口语化语气:“本公司由衷感谢您的惠顾。”
问题: 模型理解的“口语化”可能和你的预期有偏差。
正例(吴恩达风格):
你的任务是将正式语气的句子转换为随意、友好的口语化语气。
以下是一些例子:•输入: “敬请于明日傍晚前提交相关报告。” -> 输出: “哥们儿,明天晚上之前记得把报告发我哈!”
•输入: “您的申请正在审理中。” -> 输出: “你的申请我们已经收到啦,正在看哦!”现在请转换这个句子: “本公司由衷感谢您的惠顾。”
效果: 模型通过你提供的例子,精准地学习到了“随意口语化”的具体风格(包括用词、语气助词等),输出的结果会更符合你的特定要求。
总结:吴恩达的清晰提示词哲学
吴恩达教授的策略核心可以总结为:通过工程化的方法减少歧义,最大化模型的确定性。
他把编写提示词比作编程——你需要为这个特殊的“实习生”(LLM)编写非常精确的“代码”(提示词),它才能高效地执行任务。
- •使用分隔符 -> 相当于在代码中定义变量边界。
- •要求结构化输出 -> 相当于定义函数返回值的格式(如返回JSON对象)。
- •指定角色 -> 相当于调用一个特定功能的库或模块。
- •分解步骤 -> 相当于编写算法逻辑,一步步执行。
- •提供范例 -> 相当于提供单元测试(Unit Test),让模型明确知道什么是“正确”的输出。
掌握这些策略,你将能更有信心和效果地与大型语言模型协作。
更多推荐
所有评论(0)