cv.cm

AI · 提示词写作

提示词工程入门:怎么写好AI提示词

阅读约 7 分钟

简短回答

提示词工程(prompt engineering)就是把指令写好,让语言模型第一次就给出你要的结果,之后每次也都稳定。好提示词会写明任务,给出必要的背景和输入,说明输出给谁看,示范格式,并设定限制。遇到难处理的情况,再加一两个示例,然后用多个真实输入测试这条提示词。

为什么提示词的措辞很重要

语言模型不了解你的处境,它只看得到你发过去的文字。提示词含糊时,模型会用最典型的答案去填补空白,这样的答案通常泛泛而谈、篇幅过长,或者对准了错误的读者。提示词工程的大部分工作,就是消除这些猜测。

有个好用的检验方法:一位聪明的新同事,从没见过你,只凭你这条消息能把任务做好吗?如果他得先问三个问题,那模型也需要这三个问题的答案。OpenAI、Anthropic 和 Google 的官方指南,用不同的话说的是同一条核心建议:表达清楚具体,提供背景,给出示例,说明想要的格式。

好提示词的六个组成部分

并不是每条提示词都需要六个部分齐全,但对照这份清单检查一遍,就能修好大多数不够好的提示词。

部分回答什么问题示例片段
任务模型要做什么?给这封顾客邮件写一封回信。
背景它需要哪些背景信息?我们卖手工陶瓷杯,发货需要5到7天。
输入它要处理哪些材料?顾客的邮件,单独清楚地分隔出来。
读者与语气输出给谁看?一位第一次购买、有些恼火的顾客。语气友好,不要过分道歉。
格式输出应该是什么样子?三个短段落,不超过120词,不要主题行。
限制必须做什么、避免什么?不要承诺退款。提供物流跟踪链接。

较长的输入材料,要放在清晰的标记之间,比如 XML 风格的标签或三重引号,让模型能区分你的指令和要处理的文字。这也能降低一种风险:输入里藏着的指令(比如粘贴进来的网页中),被误当成命令执行。

改写前后对比

下面是一条典型的不够好的提示词:

Summarize this article.

模型会给出一份摘要,但多长、给谁看、什么形式,都不确定。下面是同一个请求,补全了这些空白:

You are helping a busy product manager decide whether to read a research article.

Summarize the article below for that reader.
- Start with one sentence: the main finding.
- Then 3 bullet points: method, key number, main limitation.
- Use plain English. Explain any technical term in a few words.
- Under 100 words in total.
- If the article does not state a limitation, write "No limitation stated".

<article>
{paste the article here}
</article>

每个部分的作用:

  • 第一行设定了读者和目的。模型现在知道摘要为什么而写,所以会据此取舍内容。
  • 要点结构固定了格式,每份摘要看起来都一样,也便于比较。
  • 字数上限防止模型凑字数。
  • 关于缺少局限的规则,告诉模型遇到边界情况该怎么做,而不是自己编一个。
  • 标签把文章和指令分隔开。

文字说不清时,给示例

有些要求很难描述,却很容易演示:一种语气、一套标注方案、一种特定的输出风格。加入几个做好的示例,这种做法叫少样本提示(few-shot prompting)。一个示例(one-shot)往往就很有帮助,两到五个各不相同的示例通常能覆盖主要情况。

Classify each support message as BILLING, SHIPPING, PRODUCT or OTHER.
Reply with the label only.

Message: I was charged twice for order 5521.
Label: BILLING

Message: The handle on my mug cracked after one week.
Label: PRODUCT

Message: Do you have a shop in Osaka?
Label: OTHER

Message: {new message}
Label:

示例之间要有差异。如果它们全都又短又客气,模型处理一封又长又愤怒的消息时可能会出问题。还要检查示例与规则是否一致:模型照搬示例的倾向,比遵循书面指令更强。

针对特定情况的技巧

  • 先要步骤,再要答案。对数学、逻辑或多部分的决策,让模型先把问题推演一遍再给最终答案,能提高准确率,这叫思维链(chain-of-thought)提示。当前许多模型会在内部这样做(通常叫推理或思考模式),所以一句“请仔细作答”有时就够了。
  • 拆分大任务。与其在一条提示词里写“调研、列提纲、写报告”,不如分成三条提示词,检查每一步的输出。这叫提示词链(prompt chaining)。
  • 只有角色能增加信息时才设定角色。“你是一位越南的税务会计”会改变用词和假设,“你是世界一流的天才”则没有任何作用。
  • 说明要做什么,而不只是不要什么。“用短句写”比“不要啰嗦”更有效。
  • 允许回答“我不知道”。告诉模型,可以说信息缺失。这样能减少编造的事实,但不能杜绝。
  • 输出要由代码读取时,要求机器可读的格式,比如带命名字段的 JSON。大多数 API 也能直接强制使用 JSON schema。

像测试代码一样测试提示词

在一个例子上有效的提示词,换下一个可能就失效。如果这条提示词会被反复使用,或者给别人用,就要测试:

  1. 写下好的输出是什么样子:长度、格式、必须正确的事实。
  2. 收集10到20个真实输入,包括困难的:特别短的、特别长的、跑题的、另一种语言的。
  3. 把提示词在所有输入上跑一遍,阅读每一条输出。
  4. 每次只改一处,再把整组输入重跑一遍,这样你知道是哪处改动起了作用。
  5. 把最终的提示词和测试集放在一起保存。更换模型或模型更新时,把这组测试再跑一遍。

最后一步很关键,因为同一条提示词在不同模型上,甚至在同一模型的新版本上,表现都可能不同。模型厂商的提示词工程指南也因此会随时间变化。

常见错误

  • 一条提示词里目标太多。十条同等权重的规则,会被部分忽略。把最重要的规则放在最前面,清单保持简短。
  • 自相矛盾,比如“要详细”和“不超过50词”。模型只能满足其中一个,违反另一个。
  • 靠大写字母或威胁(“你必须”)而不是讲清理由。简短地解释一条规则为什么存在,通常效果更好。
  • 没有把输入和指令分开,让模型把文档的一部分当成了命令。
  • 轻信输出中的事实。写得再好的提示词,仍会产生自信的错误。要核对人名、数字、引文和链接。

常见问题

新一代AI模型还需要提示词工程吗?

需要的小花招少了,但清晰的任务、背景、格式和测试,仍然能带来很大差别。新模型对指令的执行更字面化,所以措辞精确反而更重要。

系统提示词和用户提示词有什么区别?

系统提示词(有些 API 叫开发者指令)为整段对话设定规则和行为。用户提示词是这一轮的请求。在应用里,系统提示词通常由开发者编写。

提示词应该用英文写吗?

大多数大模型在许多语言里都表现良好。复杂指令用英文写可能略微更可靠,但用输出所用的语言写指令,往往得到更自然的结果。可以在你的任务上两种都试一下。

提示词多长合适?

够消除猜测就行,不必更长。简单任务一行提示词就够了。产品里可复用的提示词,可以长达一页或更多。

提示词能杜绝AI幻觉吗?

没有哪条提示词能完全杜绝。提供原文、要求模型引用原文,并允许它回答“原文里没有”,都能减少编造的事实。

全部AI教程