引言
我对 Prompt(提示词)的认知经历了两个阶段:
第一阶段:去年 3 月至 11 月,我认为 Prompt 最终会灭亡。
第二阶段:去年 12 月至今,我有两个理解:
- 在主流 LLM 工具(如 ChatGPT、文心一言等大模型厂商的对话产品)中,Prompt 能力未来会像我们现在使用 Word、PPT、Excel 的能力一样,成为人人必备的技能。
- 在垂直领域的 AI 应用中,Prompt 对用户会消亡,因为好的 AI 应用会把 Prompt 完美地嵌入到 AI 应用中。也正因如此,Prompt 工程是 AI 应用开发者一项必不可少的能力。在这种场景下,我把 Prompt 定义为 AI 应用的最后一公里,是一项系统实验工程。
公众的认知基于数据来看:
- 第一阶段:2022 年 12 月,ChatGPT 第一次发布后,Prompt Engineering 一路飙升到今年 7 月到达最高峰。
- 第二阶段:2023 年 7 月至今,开始迅速回落。
套用被历史多次验证的 Gartner 技术曲线,Prompt Engineering 的发展正趋于稳定,但无论如何不会超过 2023 年的最高峰。所以不要过高估计 Prompt Engineering 的未来发展,也不建议大家把它作为职业生涯的长期规划。类比来说,20 年前有个工种叫办公自动化,主要就是操作 Office 套件,现在人人都能用 Office。
也正是这样一个趋于稳定的时间点,加上最近的一些实践,会让我自己更理性地看待 Prompt Engineering。今天就和大家一起聊聊 Prompt Engineering 的话题,按照我目前的认知分为两个话题:
- 日常工作中我是如何做好 Prompt 来使用 LLM 工具的,目的主要是'教会大家如何使用 Office',也解答周围人经常问我的问题。这一部分会以原则和实例来说明,不会有特别专业的词汇。
- 如何在构建产品时合理发挥 Prompt 的作用,这一部分会单独在下一篇文章中聊一下。目前讲这块的文章确实不多,甚至很多产品都把 Prompt 作为自己的核心、不可泄露的内容。
日常工作中我是如何使用 Prompt 的
直至今日,我身边的大多数人对 LLM 工具的使用是跟着舆论热点走的,比如最近 Claude 3 出来了,大家可能就赶紧再去使用一下,过了几天就凉了。我自己的使用频率稍有不同,是'隔三差五'的频率。
这其中有两个原因:
- 一是 LLM 工具最擅长的文字、Coding 工作仅仅是工作的一部分,Agent 应用有望能 Cover 更多的工作,但 Agent 应用目前还没有普及。
- 二是大家对 LLM 的期待过高,从而导致使用方式的错误,进而容易放弃使用 LLM。我自己也是经历了一段时间后才摸索出来适合自己的方式,这也是本文的重点,希望对大家有借鉴意义。
接下来我会以写文章为例来说明我是如何使用 LLM 工具的,在这之前声明几个重要的原则。
LLM 工具使用原则
- 降低预期:我会借助 LLM 工具来写文章,但往往最后会发现没有一段话是 LLM 直接给我的,所以放低你对 LLM 工具的期待,但它确实会成为你的助手。
- 质量保障:长文的撰写中,LLM 的质量依然没有保障。其实这是好事,不然你的价值又在哪里?
- 独立判断:在撰写任何一篇文章之前,我会做较多的调研和实践,以保证自己对 LLM 的回答有基本判别能力。在调研过程中,我不会使用大模型的总结能力,因为此时我并没有构建出基本的判别能力,总结是一种有损压缩,且损失特别大。除非你对某个话题特别了解,否则不要用总结功能。
- 提供参考:我总是会给 LLM 工具很多我认可的参考文章,而不是纯粹依赖 LLM 的能力。
- 高效敷衍:工作中需要敷衍的文章(我知道大家绝对有这个诉求)确实可以很高效地用 LLM 工具完成。
接下来说说在使用 LLM 工具前要做的准备工作:拆解任务。
准备工作:拆解你的任务
在写文章的例子中,我把这个任务拆成几个步骤:选题 → 调研 → 构思大纲 → 把内容填充到大纲中 → 配图 → 排版。我把每一步 LLM 参与的比例、所花费时间进行分析。
可以看出:
- 最耗时选题和调研是 LLM 工具最难参与的,这一部分从理性角度来讲,我认为目前还是要以真人参与为主,我主张 LLM 在工作中是一个工具。
- 最不耗时的配图和排版 LLM 参与少是因为'打苍蝇用不着大炮'。如果使用 MJ 和 DALL-E 3 等工具精准控图,要说好多提示词,还不如传统工具来得快;另一个步骤排版,传统工具也已经做得很好了。
- 目前看起来只有中间填充大纲内容部分 LLM 工具参与度比较高。
拆解步骤后,就是针对这些步骤写 Prompt 模板了。我的每一步会有一个或几个 Prompt 模板,我推荐每个人都慢慢积累一套自己的模板。
如何撰写 Prompt 模板,我用一句话概括就是:用招聘任务助理的方式来写 Prompt。
想象你在招聘个人助理时,需要你撰写招聘文案,俗称 JD(Job Description)。你的 JD 怎么写,Prompt 就怎么写(这个比喻便于大家记忆,也是我根据网上的各种资源做的一个总结,通俗地覆盖了 80% 的 OpenAI Prompt 策略)。
这是我随意从招聘网站上找到的 JD 和我日常使用的一个 Prompt 模板的对照,你会发现他们的结构是一样的,但在具体内容上,Prompt 会执行更细、更具体的 Task。
示例:JD 与 Prompt 对照
| 招聘 JD 要素 | Prompt 对应要素 |
|---|
| 职位名称 | 角色设定 (Role) |
| 岗位职责 | 任务描述 (Task) |
| 任职要求 | 技能要求 (Skills) |
| 工作流程 | 步骤说明 (Steps) |
| 输出格式 | 响应规范 (Output Format) |
接下来详细说明每一步。
手把手使用 LLM 工具示例
前几天我想写一篇关于'苹果取消电动汽车项目'的文章,我按照上述的步骤一步步来看:
1. 选题
在这个例子中选题不用我想了。如果你不确定选题,我也不太建议你寻求 LLM 的帮助(因为 LLM 的信息不是实时的),而是通过一些大数据平台、Google Trends、Exploding Topics 等寻找合适选题。
2. 调研
在这之前,我对苹果电动汽车项目其实并不了解。我首先通过 Google 搜索、Perplexity.ai、知乎等地略读了大约 15-30 篇文章。
3. 选用合适的思维框架并列出大纲
根据某种思维框架构思出文章思路,这些框架我已深深印刻在脑海中(比如 5W2H 框架、总分总框架、What+Why+How 框架、MECE 框架、Timeline 的框架、四象限框架等等),这些框架也会在一篇文章中混合、嵌套使用。一般在调研之后,我自己就能选出合适的框架来构思。如果不熟悉如何选择这些框架,你可以借助 LLM 来帮助你完成这一工作,在提示词中指定:
- 角色为:科技博主
- 技能为:熟悉各种思维框架;熟悉科技最新动态;拥有较强的构思能力。
- 步骤为:我会给你一个主题和一个思维框架 → 请你按照这个思维框架,为这个主题列出构思大纲。
- 初始化:我给你的主题是:
<苹果取消电动汽车项目>,我给你的思维框架是:<5W2H>。
多试几个框架,选出你认为最合适的就好。
4. 填充大纲内容
大纲构建出来之后,再看你调研的内容是否足以填充到相应的内容中,如果没有相应的内容,则:寻找更多的资料或者调整大纲。然后将对应内容填入大纲。这一部分大模型的参与最多,牢记两点:
- 要给定你认可的参考资料避免 LLM 胡说八道(参考 OpenAI Prompt 策略 Provide reference text)。
- 小标题一个个完成,不要让大模型一次性完成多个小标题(参考 OpenAI Prompt 策略 Split complex tasks into simpler subtasks)。
在这篇文章中我针对大纲的第二个标题 When 中有一项是'概述苹果电动汽车项目的时间线',我就会去用我的模板:'给出参考文章和主题总结 Timeline',只需要把最后提到的参考文章链接和主题更改一下就可以,注意这些参考文章是根据之前的人工调研得到你认可的文章。
当然我还有其他模板,例如:
- 给出主题写思路
- 给出思维框架和主题写大纲和段落概要
- 给出主题、大纲、参考文章,写出新文章(用于写敷衍性的文章)
- 给出参考文章和主题写段落
- 给出参考文章和主题总结 Timeline
- 从某参考文章中快速找到确定性答案
- 完整读某篇参考文章
- 根据步骤画出 Mermaid 流程图
填充大纲内容后,接下来的两个工作就是:插图和排版。
5. 插图
有些创意性的图片会在 MidJourney 社区中寻找或直接生成,博客文章中的图要加上具体的标记还是推荐在传统做图软件中实现。
6. 排版
我用 MD 格式撰写,Notion、飞书等工具已经做得很好了。在公众号文章中我用的是特定的模板,MD 放进去基本不用修改。
这样,一篇文章基本就写完了。当然,LLM 工具还有很多其他使用场景,比如算数学题,可能会使用完全不同的任务拆解方法和提示词结构,有的还会涉及到一些 Prompt 的专业技巧名词,比如:
- COT (Chain of Thought):其实就是提示词中添加具体操作步骤,越细越好。
- Zero Shot / Few Shot:Shot 的意思就是举例说明,在提示词中加上举例会让 LLM 工具更好地理解你。
- SBP (Step Backward Prompt):就是把你的问题抽象一下再给大模型。比如一个物体从 100 米的高处落下到地上的速度是多少,SBP 就是在提示词里加上这样一句话'这个问题遵循什么物理规则'。
这些技巧就像 Office 套件中的高级功能,大家可以了解一下,需要的时候搜索使用即可。
进阶:如何构建高质量的 Prompt 模板
为了让大家更好地掌握 Prompt 工程,这里提供一个通用的 Prompt 模板结构,适用于大多数文本生成任务:
你是一名 [角色名称],擅长 [核心技能]。
当前背景是 [背景描述],目标是 [目标描述]。
请完成以下任务:[具体任务描述]。
1. [约束条件 1]
2. [约束条件 2]
1. 第一步:[步骤 1]
2. 第二步:[步骤 2]
请以 [格式要求] 输出结果。
[在此处粘贴参考文章内容]
在实际使用中,建议将 Reference Text 替换为你人工筛选过的权威资料,这能显著减少幻觉(Hallucination)的发生。同时,对于复杂任务,务必采用'分步执行'的策略,让模型先输出大纲,确认无误后再逐段生成正文。
常见误区与避坑指南
在使用 LLM 工具的过程中,我发现以下几个常见误区,值得注意:
- 过度依赖总结功能:如前所述,在没有建立判别能力前,不要直接用 LLM 总结长文,这会丢失关键细节。
- 一次性下达复杂指令:复杂的任务必须拆解。例如,不要说'帮我写一份完整的营销方案',而应说'请先列出营销方案的目录结构',确认后再说'请完善第一部分'。
- 忽视上下文窗口限制:如果输入内容过长,超出模型上下文限制,会导致信息截断。建议分段处理或使用支持长上下文的模型。
- 缺乏迭代优化:Prompt 不是一次性写好的。根据第一次的输出结果,不断调整指令中的约束条件和示例,直到满意为止。
总结
今天和大家讲了一点朴素的提示词工程能力,供大家日常使用,不必焦虑天天要用。即使是今天这篇文章,LLM 的参与度也不算特别高,大概 30% 左右。
Prompt Engineering 的核心不在于记住多少专业术语,而在于理解人机协作的逻辑。将 LLM 视为一个需要明确指令、提供充足上下文、并接受审核的智能助手,而非全知全能的神谕,这样才能真正发挥其价值。随着技术的演进,虽然直接的 Prompt 交互可能会逐渐隐入后台,但理解如何向机器表达意图的能力,将成为数字时代的基础素养。
希望这篇文章能帮助大家更理性地使用 LLM 工具,将其转化为实际的生产力,而不是追逐热点的工具。在未来的工作中,继续探索适合自身业务场景的 AI 工作流,才是长久之计。