Menu

怎么写 AI 提示词:6 个组成部分与示例

好的提示词就是一份简短的任务说明:角色、任务、模型猜不到的背景、要处理的材料、答案的形式和限制条件。每一部分都对应着回答可能出错的一种方式。

下面的每条提示词都可以编辑:改好后,在 ChatGPT、Claude 或其他 AI 应用中打开。

提示词就是一份任务说明。模型只能读到你写下的内容,所以它需要的每一个事实、你的每一个偏好,都必须写在上面。如果回答很空泛,原因几乎总是提示词漏掉了什么,而不是哪里说得不好。

大多数有用的提示词都由同样的六个部分组成。下面这个提示词六个部分都有。关掉其中几部分,看看没有它们时的提示词;填上你自己用的语言,然后在 ChatGPT 或 Claude 中打开,比较一下结果。

解释一条错误信息
Fill in
Parts
你是一位耐心的编程老师,面向刚开始学编程第一个月的人。
解释这条 Python 错误是什么意思,以及怎么修复。
我正在学一门入门课程。我学过变量、字符串、列表和 for 循环,还没学过类和异常。
我的代码:age = 30 print("Age: " + age)错误信息:TypeError: can only concatenate str (not "int") to str
分三个简短的部分回答,每部分用加粗的小标题:错误是什么意思、我的代码为什么会出错、修复后的代码。
用通俗的话,不要用我还没学过的概念。整个回答不超过 200 字。
Try it
Example replyReplies vary between models and runs.

错误是什么意思: + 可以把两个字符串拼起来,也可以把两个数字相加,但不能把字符串和数字拼在一起。Python 不会去猜你想要哪一种,所以直接停下了。

你的代码为什么会出错: "Age: " 是字符串,而 age 存的是数字 30。这一行让 Python 用 + 把它们粘在一起。

修复后的代码: 先用 str() 把数字变成文本:

age = 30
print("Age: " + str(age))

这样会打印 Age: 30。

六个组成部分

角色告诉模型该用谁的口吻和判断标准。“一位面向初学者的耐心老师”和“一位评审生产代码的资深工程师”,对同一个问题会给出截然不同的回答。角色在暗含了受众和标准时最有用;它在哪些情况下有帮助、哪些情况下没有,见角色提示。

任务是说明要做什么的那一句话。以动词开头:解释、改写、比较、列出、修复、总结。如果你没法用一句话写出任务,那这个提示词里可能有两个任务,而其中一个通常会得到更单薄的回答。

背景是模型猜不到的一切:你是谁、你已经知道什么、结果要用来做什么、你已经试过什么。在上面的示例中,“还没学过类和异常”这句话,阻止了模型用 try 和 except 来回答。

输入是要处理的材料:代码、邮件、表格、错误信息。把它完整地粘贴进来。对代码的概括,只是你认为它在做什么的描述,而 bug 通常就藏在两者之间的差距里。

格式说明答案应该是什么样子:列表、表格、三个带小标题的部分、JSON、一行字。没有格式要求时,模型会替你选一种形式,而聊天模型往往会选长的。如果答案要由程序读取,结构化输出会讲得更深入。

限制是各种边界:长度、用词、要避免的东西、必须保持不变的东西。一个数字(“不超过 200 字”)比一个形容词(“简短”)更管用,因为“简短”对不同的读者意味着不同的东西,而模型就是其中一位读者。

含糊与具体

下面是用两种方式写的同一个请求。在两个标签页之间切换,比较一下回复。

写一个对列表排序的函数。
Try it
Example replyReplies vary between models and runs.

下面是一个简单的 Python 排序函数:

def sort_list(items):
    return sorted(items)

你可以这样调用它:sort_list([3, 1, 2]),它会返回 [1, 2, 3]。

含糊的提示词得到了一个正确的答案,回答的却是一个没人问过的问题。它只能去猜语言、数据、顺序,以及修改输入是否可以接受,而每一次它都猜了最常见的情况。具体的提示词事先回答了这四个问题,所以没有什么需要猜的了。

让提示词变得更好的习惯

  • 尽早说明任务,长材料之后再说一遍。 在简短的提示词中,先写任务,这样后面的背景读起来就有了目的。粘贴长文档时,把文档放在前面、问题放在最后,并在那里重申关键的限制条件,让指令紧挨着模型开始输出的位置。
  • 说要做什么,而不只是说要避免什么。“用简单的语言写,让 12 岁的孩子也能看懂”给了模型一个目标。“不要太技术化”只排除了一个方向,其余的方向全都敞开着。
  • 把指令和材料分开。 粘贴邮件或文件时,标出它从哪里开始、到哪里结束,以免模型把其中的某句话误当成指令。分隔符和 XML 标签介绍了各种做法。
  • 格式不常见时,给出一个输出示例。 示例展示形式比一段描述快得多。这就是少样本提示。
  • 迭代提示词本身,而不是在对话里修修补补。 如果第一次的回答不对,找出缺失的背景或限制,修改提示词,再运行一次。一长串的纠正也能奏效,但最后你只得到了一个结果,却没有一个能复用的提示词。

发送前的检查清单

  1. 我能用一句以动词开头的话说明任务吗?
  2. 一个陌生人能知道这个答案是给谁看的、我已经知道什么吗?
  3. 我粘贴的是真实的材料,而不是对它的描述吗?
  4. 我说明了答案应该多长、是什么形式吗?
  5. 有没有什么是答案绝不能改动、或者绝不能使用的?

五个回答都是“是”,并不能保证得到完美的回复,但只要有一个“否”,那很可能就是回复不好的原因。

常见问题

什么样的 AI 提示词才算好?

好的提示词会用一句清楚的话说明任务,给出模型猜不到的背景(你是谁、你已经知道什么、结果要用来做什么),附上要处理的材料,并说明答案应该是什么样子:长度、结构和语气。大多数效果差的提示词,问题出在背景和格式上,而不是措辞上。

提示词应该写多长?

任务需要多长就写多长,不要更长。一句话的问题配一句话的答案就够了。如果任务有特定的受众、输入和输出形式,通常需要四到八句话。把同一条指令重复三遍的长度没有帮助;补充缺失背景的长度才有帮助。

对 ChatGPT 或 Claude 需要讲礼貌吗?

礼貌用语既帮不了多少忙,也没什么坏处。真正能改变答案的是信息:目标、受众、限制条件,以及一个你想要的输出示例。就像给一位能干、但从没见过你项目的同事交代任务那样去写。

有写提示词的模板吗?

一个可靠的顺序是:角色、任务、背景、输入、格式、限制。并不是每个提示词都需要这六部分。先写任务,再补充模型猜不到的背景;如果第一次的回答太长、太空泛或形式不对,再加上格式和限制。可复用、带填空的版本见提示词模板。

为什么同一个提示词每次的回答都不一样?

聊天模型是从概率分布中采样来选择下一个词的,所以两次运行的结果可能不同。提示词越具体,好答案的范围就越窄,每次运行的结果也就越接近。temperature 参数控制采样时的随机程度。

Coddy 编程语言插图

和 Coddy 一起学编程

开始