Prompt 提示词工程使用指南
Prompt 提示词工程是指导大规模语言模型生成高质量输出的关键技术。其定义、构成要素及作用,涵盖问答、文本生成等场景。详细阐述了编写原则,包括指令明确、结构化输出、提供背景与示例等。通过具体实践案例,展示了如何利用分隔符、上下文信息及迭代优化来提升交互效率,帮助开发者在不微调模型的情况下适应不同应用场景,实现高效的内容创作与任务处理。

Prompt 提示词工程是指导大规模语言模型生成高质量输出的关键技术。其定义、构成要素及作用,涵盖问答、文本生成等场景。详细阐述了编写原则,包括指令明确、结构化输出、提供背景与示例等。通过具体实践案例,展示了如何利用分隔符、上下文信息及迭代优化来提升交互效率,帮助开发者在不微调模型的情况下适应不同应用场景,实现高效的内容创作与任务处理。

ChatGPT 的问世带动了一大批 AI 大模型开源并开始投入商用,尤其是从去年下半年开始,各类大模型纷纷问世,加之国内的互联网大厂也纷纷投入大模型赛道,让大模型的黑科技也能被很多不懂 AI 的小伙伴开始尝鲜。举例来说,像国内阿里的通义千问,百度的千帆大模型,腾讯的混元大模型等,都是很不错的 AI 大模型产品,得到了很多业内人士的认可。
但对于很多初学大模型或不懂大模型的人来说,如何真正用好 AI 大模型,并利用大模型强大的对话能力为日常事务助力增效呢?这就需要全面而系统的学习 Prompt 提示词工程。
Prompt 提示词工程(Prompt Engineering)是在自然语言处理(NLP)领域中一种重要的技术和方法,主要用于指导预训练的大规模语言模型(Large Language Models, LLMs)生成高质量、准确且有针对性的输出。
Prompt Engineering,也称为'指令工程'或'提示词工程',是指通过设计、实验和优化输入提示词(Prompt)来引导预训练语言模型生成所需的响应或完成特定任务的技术。
一个有效的 prompt 通常包含以下几个关键要素:
Prompt 提示词工程的作用在于指导和控制大规模语言模型(LLMs)的行为,使其能更准确、更有针对性地生成文本或完成人们下发的特定任务。下面结合实践经验总结了 Prompt 提示词工程的主要作用:
Prompt Engineering 广泛应用于各类场景中,例如:
通过 Prompt Engineering,用户可以更好的控制和指导 AI 模型的行为,使其在不需要重新训练的情况下适应不同的应用场景。这是一种非常实用的技术,尤其对于那些无法或不便对模型进行微调的情况更为重要。
学习 Prompt 提示词工程 对于有效利用大规模语言模型(LLMs)来说非常重要,一方面可以为今后快速学习和使用各类大模型提供基础的技能储备,同时也为利用大模型拓展个人综合能力,为日常工作助力提效打开全新的视野,下面详细总结了学习 Prompt 提示词工程的作用:
在真正开始使用大模型之前,需要系统学习 Prompt 的使用,就像我们学习一门技术,一门编程语言,一门外语等,第一步,一定是先学习其基础的语法、结构,而后通过反复的大量的练习和实践,才能理解并掌握,下面我们也按照这样的思路来系统学习 Prompt。
由于下文中将会涉及到较多的操作演示,在开始学习之前,请先准备好 1~2 个大模型的客户端工具,选择有很多,比如 ChatGpt,通义千问网页客户端,千帆大模型等都是可以的,我这里使用的是通义千问的网页客户端进行演示。
下面也列举国内的几个热门的大模型地址,以供学习使用。
在学习 mysql 查询语法的时候,还记得下面 mysql 的查询语法的完整结构吗:
SELECT [DISTINCT] select_list
FROM table_references
[WHERE where_condition]
[GROUP BY group_by_list]
[HAVING having_condition]
[ORDER BY order_by_list]
[LIMIT limit_count [OFFSET offset_count]];
其实 Prompt 也有下面的完整语法结构,参考下面这个简单的公式:
指令 + 输入数据 + 背景 + 输出要求
具体是什么意思呢?看下面的详细解释:
| 名称 | 描述 | 示例 |
|---|---|---|
| 指令 词 (必须) | 此部分为 prompt 的指令,告诉模型应如何响应 | '简述'、'解释'、'翻译'、'总结'、'润色'、'写一篇文章"等 |
| 输入数据 (必须) | 提供给模型的问题或具体內容,应清晰、完整,以确保模型生成满意的答案,注意控制长度,必要的时候建议分段发送 | 当需要总结时,提供原始的文本内容;当需要编写 SQL 代码时,提供的数据库表和字段信息 |
| 背景 (非必须) | 与任务相关的其他信息,提供额外信息以帮助模型更好地理解需求 | 同样是写关于计算机的科普文章,是写给小学生还是计算机专业大学生,得到的内容会完全不同 |
| 输出要求 (非必须) | 期望模型输出的指标或结构,比如:类型、字数 | '请输出五条'XX'相关的事实,并按重要性排序:1. …,2. …,3. …',请按照 markdown、表格…形式进行输出 |
依据上面的 Prompt 语法结构,下面列举几个示例加以说明。
对大模型来说,你可以将它作为一个拥有丰富知识库的大脑,只有指令足够的明确、清晰,它的理解成本才能最小,得到的回答也更贴合你的需要,比如输出下面这样的指令:
使用通俗的语言,解释一下蝴蝶效应是什么意思
大模型响应内容如下:
(此处应有模型响应截图,展示通俗易懂的解释)
在某些场景下,我们需要大模型帮我们完成一些总结,概括,或者根据提供的内容,得到分析的结论,再比如,我们提供一个 mysql 的建表需求,为我们生成建表的 sql 和初始化数据等,那么你就需要提供一些原始的内容文本信息,这样大模型才能根据你提供的内容理解并得到你想要的,如下,提供了一个需求描述,希望大模型生成一张建表语句和初始化 sql,下发的指令如下:
请根据我提供的信息,生成一张 mysql 用户表,该表包括 5 个字段,主键,用户名,密码,邮箱,电话,之后,再初始化几条数据
大模型的响应内容如下,从响应的结果来看,大致是符合要求的,一般来说,其生成的内容,在拿来使用之前还需要人工做一些微调。
在日常工作中,为了向同事或其他人清晰阐述我们的意思,并充分理解需求,有时候需要在真正提出需求之前提供需求的背景,提出背景不是必须的,但是很重要,清晰的背景可以为对方提供更完整的联想空间,从而对接下来需求的理解更加深刻,这对于大模型来说也是适用的,有了背景,大模型可以根据背景信息从知识库中一定程度上缩小检索的范围,得到的内容输出也更贴合要求,比如像大模型提供下面的指令:
针对小学生(小学生即为参考背景),发出下面的指令:
假如你现在面对的是一群小学生,请解释一下什么是量子力学
不难发现,得到的回答通过较多的形象的比喻来阐述量子力学的解释,符合小学生的理解这个阶段定位,而小学生即为我们的需求背景。
如果是面对研究生(研究生即为参考背景),再看看大模型给出的回答:
假如你现在面对的是高校的硕士研究生,请解释一下什么是量子力学
显而易见,在面对不同的群体时,大模型给出的输出内容是不一样的,这就是提供背景参考带来的效果,而这一点,恰恰是很多初次使用 LLM 类型的大模型用户容易忽视的一点。
在使用 Prompt 提示词工程之前,有一些基本的原则需要遵循,只有掌握了基本的编写原则,才能让大模型更好的辅助我们得到更符合预期的输出内容。
在编写 Prompt 提示词工程时,遵循一定的原则可帮助我们更有效地利用自然语言处理技术和生成高质量的内容。以下是一些重要的原则:
在编写 Prompt 提示词时,合理使用分隔符,可以让大模型能够更好的理解指令要表达的意思,从而得到更符合要求的输出,下面总结了一些常用的指令,这在实际使用大模型时,可以通过实践来逐步理解并掌握,有一些常用的建议可以记住。
用于定义标签或者类别,后面跟具体的内容,参考示例:
问题:量子力学是谁创立的,请给出回答
最简单的分隔符,用于分割单词或短语。
Generate a list of five fruits: apple orange banana strawberry kiwi
用于指示转换或者映射关系。
Text -> Summary A long time ago in a galaxy far, far away…
用于分隔选项或者并列的概念。
Write an essay on the following topics: science | technology | society
用于列出多个项。
List three colors: red, blue, green
用于列表或者指示顺序。
用于包含附加信息或者注释。
Write a story about a character (name: John) who travels through time.
用于表示模板中的变量或者占位符。
{Name} is a famous {Occupation}.
用于表示可选的信息或者参数。
[Optional] Include a bibliography at the end of the report.
用于定义变量或者属性。
Title = The Art of Programming Author = Jane Smith
一些特殊字符包括:
#:用于注释或标签。::用于冒号后接的内容是前一部分的说明或解释。;:用于分割列表中的项目。=:用于等式或赋值\n 或 \r\n:用于分割不同的段落或逻辑单元
<start> 和 <end>:用于标记文本的开始和结束。
<user> 和 <assistant>:用于区分对话中的不同发言者。
<question> 和 <answer>:用于区分问题和答案。
<tag> 和 </tag>:用于标记文本的特定部分
你应该通过提供尽可能清晰和具体的指令来表达希望模型执行的操作,这将引导模型给出正确的输出,并减少你得到无关或不正确响应的可能。
编写清晰的指令不意味着简短的指令,因为在许多情况下,更长的提示实际上更清晰且提供了更多上下文,这实际上可能导致更详细更相关的输出。
策略一:使用分隔符
分割符可以清晰地表示输入的不同部分; 分隔符可以是:```,"",<>,,<\tag>等; 日常编写指令时可以记住一些常用的分隔符,可以很好的提升使用大模型的工作效率; 你可以使用任何明显的标点符号将特定的文本部分与提示的其余部分分开; 这可以是任何可以使模型明确知道这是一个单独部分的标记; 使用分隔符是一种可以避免提示注入的有用技术; 提示注入,是指如果用户将某些输入添加到提示中,则可能会向模型提供与您想要执行的操作相冲突的指令,从而使其遵循冲突的指令而不是执行您想要的操作; 输入里面可能包含其他指令,会覆盖掉你的指令,对此,使用分隔符是一个不错的策略。
如下的案例中,我们给出一段话并要求 大模型对内容进行总结,在该示例中我们使用 ``` 来作为分隔符:
请帮我提炼如下内容的大纲:
新势力造车的现状呈现出激烈的竞争和两极分化的趋势。
新势力造车企业在面对传统车企的电动化转型和市场竞争时,面临着巨大的挑战。一方面,部分传统车企在电动化转型道路上展现出坚定的决心,凭借其实力雄厚、成本管控能力强以及产品实用质优价廉的特点,适应大众市场,更有可能在激烈竞争中生存下来。相比之下,新势力造车企业虽然车型定位偏向个性化,拥有特定的客群,但由于缺乏自我造血能力,依赖外部融资,难以长期维持。2024 年,造车新势力之间的竞争将更加激烈,两极分化将更加严重,一些企业可能会因为无法适应市场变化而被淘汰。
从市场格局来看,自主品牌领跑新能源汽车市场的趋势依旧明显。比亚迪、广汽埃安、长城汽车、长安汽车等企业保持了强劲的增长势头,而合资品牌也在加速新能源转化,如上汽大众 ID.家族实现了单月新车交付量的显著提升。造车新势力阵营中,理想汽车、蔚来汽车、小鹏汽车等企业通过不断创新和产品升级,试图在市场中占据一席之地。然而,也有一些企业因为市场策略失误或资金问题而面临困境,如威马汽车和天际汽车等
总的来说,新势力造车企业在面对传统车企的竞争和市场变化时,需要不断创新和提升自身实力,以适应市场的需求和变化。同时,企业也需要关注成本控制和资金管理,以确保能够在激烈的市场竞争中生存下来
然后大模型给出如下的输出,以 markdown 这种看起来比较舒服的排版方式输出了出来。
利用上文提到的分隔符,也可以使用下面这种格式的内容让大模型输出一段摘要信息:
文章内容:
请结合上面的内容,输出一段摘要
#### 4.3.2 要求结构化的输出
结构化的输出,这可以使大模型的输出结果更容易被用户解析和使用,仍然以上面的输出摘要为例,在大模型第一次输出结果之后,我们可以让它以表格的形式进行输出。
#### 4.3.3 提供示例或明确的输出格式要求
仍然以上面的结果为例,如果希望以 markdown 的格式输出,那么还可以指定具体的格式要求,如下:
将上述的输出结果以 markdown 的形式呈现出来,格式如下: 1、XXX - XXX - XXX 2、XXX - XXX - XXX
#### 4.3.4 保持指令的简洁性
在使用大模型进行提问时,一方面大模型自身对于单次输入的内容回答长度有限制,超过一定的长度限制后,反馈的输出结果准确性不好,另一方面,这也并不符合现实的对话场景下,通过一次性的问答就能得到我们预期的答案,简而言之,当你需要向大模型提问的内容很长,又希望得到相对精准且全面的回复,可以参考这几个经验:
- 将一次性提问的长文本内容,拆分成具有前后逻辑关联的较短的多个文本;
- 分多次进行提问,在一定的时间限度和语境内,大模型会记录上文的已回答的内容语义;
- 每次提问时,可基于大模型上一次的回复,进行递进式的提问,或者针对已经回复的内容进行微调,然后重新发起提问;
- 每次提问的文本内容不要太长,即指令尽量简短清晰,避免给大模型过多的理解成本;
下面看一个具体的示例,为了让大模型为我们提供 5 个短视频营销文案的标题,我们分多次提问,从而逐渐逼近最符合我们需求的输出内容;
**指令一:**
> 作为一个专业的营销策划师,请为我拟定 5 个关于创意短视频的文案标题
**指令二:**
> 注意,我的短视频受众群体主要是年轻的女性,内容尽量与时尚、好玩、有趣这些标签相关,请重新拟定
**指令三:**
> 基于你的回答,我现在想进一步缩小范围,提供时尚穿搭方面的,请重新拟定
通过上述大模型的回复,不难发现,通过这种模拟真实对话场景的提问,大模型可以不断的根据上下文的语义环境进行输出内容的调整,从而得到我们预期的结果。
#### 4.3.5 提供必要的上下文信息
也即上文提到的情境相关性,在一些复杂的场景中,比如你需要大模型帮你分析某个科学或技术问题,那么你必须提供相对完整的语境内容,否则大模型就是瞎猜了,为什么这么说呢,设想你是一个想写一篇针对某个技术观点的文章,但是你并不很懂技术,如何让大模型帮你写出一篇这样的文章呢?答案是,你要向大模型提出你的需求,比如你希望你的文章包括哪些章节,每个章节还包括哪些具体的子标题,每个章节中要重点突出哪些观点等,如下是一个具体的操作示例,是关于借助大模型我我们生成一个文章的提纲。
**指令一:**
我想写一篇关于移动互联网发展历程的文章,请为我拟定一个大纲
回复内容
**指令二:基于回复的内容,进行内容的校正,同时提供一些背景素材,以丰富回复的内容**
在你拟定的大纲中,我觉得并没有突出一些电商、短视频等移动 app,比如抖音、小红书、拼多多等 app 在发展历程中带来的影响,请重新拟定
回复内容
可以看到,在第二个指令中,基于第一个指令的回复内容并提供了新的背景信息之后,大模型就及时调整了回复的内容,按照需求将新的需求补充进去了。
## 五、总结
Prompt 提示词工程是连接人类意图与 AI 模型能力的桥梁。通过本文的学习,我们了解了 Prompt 的基本结构、核心要素及编写原则。掌握清晰指令、结构化输出、背景提供及迭代优化的技巧,能够显著提升与大模型交互的效率和质量。在实际应用中,建议结合具体场景灵活运用上述方法,不断尝试和调整,以充分发挥 AI 大模型的潜力,实现工作流的自动化与智能化。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online