提示工程 · Prompt 写作

获得优质输出的六大技巧

用清楚的说明、角色与风格、分隔符、步骤、示例和输出长度,让模型少猜一点,让结果更接近任务要求。

不会读心术

大语言模型很强大,但可惜的是,它不会读心术。

当我们想要什么,就要尽量清楚地告诉它,不要让模型猜我们心里到底在想什么。

猜得越少,结果越有可能接近我们的要求。

下面是六个简单但常用的办法。

1. 编写清楚的说明

为了得到想要的回复,需要提供真正重要的细节和上下文。否则,模型只能猜。

模糊的说法 更清楚的说法
如何在 Excel 中添加数字? 如何在 Excel 中把一行美元金额相加,并把结果自动放在右侧的“总计”列?
谁是总统? 2021 年的美国总统是谁?美国总统选举通常多久举行一次?
写一个斐波那契数列的方法 使用 Python 写一个计算斐波那契数列的方法,并用注释说明每个部分的作用。
写一段会议记录并总结 写一段虚构会议记录,用 Markdown 列出发言者、要点和明确出现的待办事项。

Prompt 不是越长越好。关键是:会影响结果的信息有没有说清楚。

2. 指定风格、读者和角色

如果我们希望输出有特定语气,可以直接说。

指定风格

当我请你帮忙写东西时,你的回答内容每段至少包含一个笑话或俏皮的话。

给我的同学张三写一封感谢信,感谢在他的介绍下,我成功找到了一份工作。

同一封感谢信,写成严肃公文、轻松聊天,读起来会完全不同。与其等模型猜,不如把想要的风格直接写出来。

当然,“每段一个笑话”只是一个很鲜明的演示。真正使用时,还可以写“真诚、自然,不要使用夸张的赞美”。

指定角色

如果任务需要一个明确视角,也可以指定角色:

你现在是一位“大学语文教授”,需要从语文课讲解的角度回答我的问题。

解释李白在写“天生我材必有用,千金散尽还复来”时,内心的情感变化和想表达的思想感情。

把角色和读者放在一起

那如果面对同一个知识点,我们还希望十岁的孩子也能听懂呢?

你现在是一位“获得诺贝尔物理学奖的天体物理学家”,需要从天体物理学科普的角度回答我的问题。
回答是给 10 岁的孩子看的,要让他们能够看懂,并且充满想象力。

解释黑洞的形成原理,以及黑洞的特性。

这里同时写清了回答视角、目标读者和表达风格,比只写“解释一下黑洞”多了三层信息。

角色描述的作用,是帮助模型理解视角、读者和标准。它不会让模型真的获得某个头衔,也不能证明答案一定专业。

与其说“你是世界上最厉害的专家”,不如把真正需要的判断标准写出来。

3. 用分隔符区分不同内容

当 Prompt 里同时有任务说明、原始材料和输出格式时,可以使用三引号、Markdown 标题或 XML 标签把它们分开。

请用一首短诗概括三引号中的文字。

"""
在苍茫的大海上,狂风卷集着乌云。海燕像黑色的闪电,在高傲地飞翔。
"""

也可以这样写:

<task>比较两首与黄鹤楼有关的诗,并说明理由。</task>
<article>昔人已乘黄鹤去,此地空余黄鹤楼……</article>
<article>故人西辞黄鹤楼,烟花三月下扬州……</article>

还可以直接用字段名称,把摘要和标题分开:

我将为你提供一篇文章的摘要和标题。
请判断标题能否准确概括摘要,同时要让读者看懂文章主题。
如果不符合这两个标准,请给出 5 个备选标题。

摘要:一场持续性强降雨影响多个北方地区,降雨持续时间较长、影响范围较广,部分地区可能出现大暴雨。

标题:北方多地遭遇强降雨,部分地区需注意大暴雨

这里的“摘要:”和“标题:”也是分隔符。它们没有使用特殊符号,却仍然清楚地告诉模型:哪一段是摘要,哪一段是标题。

对于简单任务,使用分隔符前后可能看不出明显差别。任务越复杂,材料越长,清楚的边界就越重要。

分隔符不会让模型突然变聪明,它只是帮助我们把“指令是什么、材料是什么、格式是什么”标清楚。

4. 指定完成任务的步骤

很多任务本来就需要分几步完成。把这些步骤写出来,模型会更容易跟上我们的思路。

请按下面的顺序完成任务:

1. 用一句话概括三引号中的文字,前缀写“摘要:”。
2. 把这句摘要翻译成英语,前缀写“翻译:”。

"""
{{需要处理的文字}}
"""

需要注意,步骤不是越多越好。先写真正影响结果的步骤,不要为了看起来专业,把简单任务拆成几十步。

5. 举例说明

有时候,我们想要的风格或格式很难用一句规则讲清楚。

这时候可以直接给例子。

你是“神奇动物命名器”,根据例子的风格为动物起名字。

动物:猫
名称:暗夜特工

动物:狗
名称:超能闪电

现在为“马”起一个名字。

一到三个高质量示例,通常就能让模型看到我们想要的对应关系。

但模型也会模仿示例里的问题,所以示例不能只挑最理想的情况,还要覆盖真实任务会遇到的边界。

6. 指定输出长度

我们可以用大约多少字、多少句话、多少段或多少个要点来限制输出。

但这几种要求,模型遵守起来并不完全一样。

我们继续使用同一段材料,连续试三轮。为了便于对照,下面三个 Prompt 中的原文完全相同。

第一轮:大约 50 个字

使用大约 50 个字,概括三引号包裹的内容。

"""
在苍茫的大海上,狂风卷集着乌云。在乌云和大海之间,海燕像黑色的闪电,在高傲地飞翔。

一会儿翅膀碰着波浪,一会儿箭一般地直冲向乌云。它叫喊着,在叫喊声里充满着对暴风雨的渴望。
"""

“大约 50 个字”看起来很明确,但模型是按 Token 生成文字,不是写一个字就同步数一次字符。结果可能接近 50 个字,也可能明显超出。

第二轮:两个段落

使用两个段落,概括三引号包裹的内容。

"""
在苍茫的大海上,狂风卷集着乌云。在乌云和大海之间,海燕像黑色的闪电,在高傲地飞翔。

一会儿翅膀碰着波浪,一会儿箭一般地直冲向乌云。它叫喊着,在叫喊声里充满着对暴风雨的渴望。
"""

这一次,结果是否有两个段落,一眼就能看出来。相比精确字数,段落数通常更容易观察。

第三轮:三个要点

使用三个要点,概括三引号包裹的内容。

"""
在苍茫的大海上,狂风卷集着乌云。在乌云和大海之间,海燕像黑色的闪电,在高傲地飞翔。

一会儿翅膀碰着波浪,一会儿箭一般地直冲向乌云。它叫喊着,在叫喊声里充满着对暴风雨的渴望。
"""

要点数也很直观,我们可以马上检查结果是不是三条。

这三轮处理的是同一段文字,变化的只有长度表达方式。可以看到,“大约 50 个字”控制的是字符范围,“两个段落”和“三个要点”控制的是结构,它们不是同一种要求。

段落数和要点数通常更容易观察,但也不能因此省略检查。如果业务必须严格满足字符数、段落数或要点数,应在模型生成后用程序或编辑流程再次验证。

最后再看一遍

这六个技巧并不是每条 Prompt 都必须全部使用。

简单任务,直接说清楚就够了。复杂任务,再逐步增加上下文、分隔符、步骤和示例。

真正的目标不是把 Prompt 写得很长,而是让模型少猜一点,让我们更容易检查结果。

上一章: 概率、采样与 Temperature

下一章: 结构化 Prompt 模板与技巧

Luffy Liu
Luffy Liu

Independent product builder · AI, agents and real workflows.