【提示词工程1️⃣】AI 内行人的提示词工程进阶指南:像程序员一样编写和迭代提示词

提示词工程 AI 提示词 生成式 AI 自然语言编程 提示词管理
提示词工程是生成式 AI 领域中的重要技能,类似于编程,能够帮助非技术人员在不依赖研发资源的情况下实现复杂功能。高质量的提示词应具备结构化,类似于代码编写,包含角色、技能、规则、工作流程等模块,以确保 AI 模型的精准输出。结构化提示词不仅提高了编写效率,还便于迭代、版本管理和复用。通过逐步迭代,提示词可以从简单的自然语言描述发展为复杂的结构化模板,最终实现高效、精准的 AI 交互。提示词工程的流程包括编写、测试、迭代和管理,类似于软件开发中的精益创业理念,强调小步快跑、快速迭代。
文章内容
思维导图
常见问题
社交分享

对于咱生成式 AI 的内行人来说,提示词(prompt)和代码一样,不仅是服务客户的重要工具,也是重要的公司资产。

而且,提示词工程是所有非技术背景的同学都能轻松掌握的知识和技能,能在不动用公司研发资源的情况下,实现一些在以往需要靠复杂技术手段才能实现的功能,满足一些需要研发人员大量介入才能满足的客户需求。

对于各位读者来说,掌握一点点行内人的基本功,就能让你超过身边大部分研究 AI 的外行了。

所以,这一篇,我来分享一下,作为一个 AIGC 的内行人,我们是怎么编写、迭代和管理提示词的。

提示词工程全流程概览

提示词工程又被称为「自然语言编程」,所以提示词的编写、迭代、测试、管理、复用的整个流程应该参考软件公司写代码和管理代码的全流程。

看到这里,你可能还不明白每个部分分别是什么意思。

没关系,接着往下看吧。

等看到最后,你就会知道了。

什么样的提示词是高质量的提示词?

我们先来看两段提示词的对比:

这一段是非结构化的提示词👇🏻

🕵🏻:你现在是一位世界一流的诗人,擅长通过诗歌来表达情感、描绘景象、讲述故事,具有丰富的想象力和对文字的独特驾驭能力。你创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。你擅长写现代诗、七言律诗和五言诗,他们的特点如下:现代诗:形式自由,意涵丰富,意象经营重于修辞运用,是心灵的映现,更加强调自由开放和直率陈述与进行“可感与不可感之间”的沟通。七言律诗:七言体是古代诗歌体裁,全篇每句七字或以七字句为主的诗体,它起于汉族民间歌谣。五言诗:全篇由五字句构成的诗,能够更灵活细致地抒情和叙事,在音节上,奇偶相配,富于音乐美。我们的协作流程如下:我会以以 “形式:[], 主题:[]” 的格式来指定你将要创作的诗歌形式和主题。请你针对我给定的形式和主题,创作诗歌,包括题目和诗句。我对你的要求如下:你创作的诗歌应该内容健康,积极向上。七言律诗和五言诗要押韵。在开始对话前,请你先介绍一下你自己,再介绍一下我们之间的协作模式。

对于外行来说,这种程度的 prompt 已经代表着 ta 拥有了非常高的提示词编写水平了。

但是对于我们内行来说,提示词可不能这么写。

请看下面这个示例👇🏻

# Role: 诗人

## Profile
- Author: YZFly
- Version: 0.1
- Language: 中文
- Description: 诗人是创作诗歌的艺术家,擅长通过诗歌来表达情感、描绘景象、讲述故事,具有丰富的想象力和对文字的独特驾驭能力。诗人创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。

## Background

## skill
1. 擅长写现代诗
- 现代诗形式自由,意涵丰富,意象经营重于修辞运用,是心灵的映现
- 更加强调自由开放和直率陈述与进行“可感与不可感之间”的沟通。

2. 擅长写七言律诗
- 七言体是古代诗歌体裁
- 全篇每句七字或以七字句为主的诗体
- 它起于汉族民间歌谣

3. 擅长写五言诗
- 全篇由五字句构成的诗
- 能够更灵活细致地抒情和叙事
- 在音节上,奇偶相配,富于音乐美

## Rules
1. 内容健康,积极向上
2. 七言律诗和五言诗要押韵

## Workflow
1. 让用户以 "形式:[], 主题:[]" 的方式指定诗歌形式,主题。
2. 针对用户给定的主题,创作诗歌,包括题目和诗句。

## Initialization
作为角色 , 严格遵守 , 使用默认  与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 。

这才是提示词编写的正确格式,也是「提示词工程」这门艺术的起点。

为什么我们需要结构化的提示词?

对于 AI ,结构化提示词的好处在于能够定向唤醒大模型的深度能力。

实践发现让模型扮演某个角色其能大大提高模型表现,所以一级标题设置的就是 Role(角色) 属性词,直接将 Prompt 固定为角色,确保定向唤醒模型的角色扮演能力。

你也也可使用 Expert(专家), Master(大师)等提示词替代 Role,将 Prompt 固定为某一领域专家。

再比如 Rules,规定了模型必须尽力去遵守的规则。

比如在这里添加不准胡说八道的规则,缓解大模型幻觉问题。添加输出内容必须积极健康的规则,缓解模型输出不良内容等。

用 Constraints(约束),中文的 规则 等词替代也可。

对于人类,结构化的提示词有这些好处:

  1. 让你编写提示词的思路更加清晰。
  2. 当提示词的结构化程度较高之后,便能让 AI 来参与一起编写提示词了。
  3. 更方便迭代提示词,也更方便做版本管理。
  4. 提示词在未来可以更好地复用了。

这里是个重点,我们来一段一段解释每个部分。

让你编写提示词的时候思路更清晰

不废话,先给您一个模板:

# Role: 设置角色名称,一级标题,作用范围为全局

## Profile: 设置角色简介,二级标题,作用范围为段落
- Author: yzfly    设置 Prompt 作者名,保护 Prompt 原作权益
- Version: 1.0     设置 Prompt 版本号,记录迭代版本
- Language: 中文   设置语言,中文还是 English
- Description:     一两句话简要描述角色设定,背景,技能等

### Skill:  设置技能,下面分点仔细描述
1. xxx
2. xxx

## Rules        设置规则,下面分点描述细节
1. xxx
2. xxx

## Workflow     设置工作流程,如何和用户交流,交互
1. 让用户以 "形式:[], 主题:[]" 的方式指定诗歌形式,主题。
2. 针对用户给定的主题,创作诗歌,包括题目和诗句。

## Initialization  设置初始化步骤,强调 prompt 各内容之间的作用和联系,定义初始化行为。
作为角色 , 严格遵守 , 使用默认  与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 。

你只需要一步步往这个模板里填写内容,一套高质量的提示词就能很快完成。

你肯定看完了我们在第二篇里写的「Back 模型」,但是不是在自己上手写提示词的时候,还是感觉困难重重?

因为非结构化的提示词很像命题作文,即使你掌握了固定的套路,还得靠熟练的语言表达能力把话说清楚。

但现在你学会了结构化地提示词,写提示词的过程变成了填空题,对于语言表达能力的考验,也因此降低了很多。

能够让 AI 参与提示词编写

既然提示词的结构都这么清晰了,那么很多思考性的工作,就不用咱人类自己来完成了,完全可以和生成式 AI 一起共创。

比如根据上面那个模板,在编写提示词的过程中,你可以问 AI 这些问题:

  1. Role:我要目前要解决一个 xx 问题,你觉得哪个职业 & 什么角色 & 什么领域的专家最适合来解决这个问题?
  2. Skill:要帮助我一起解决这个问题,你需要哪些技能?
  3. Background:我需要你帮我解决一个 xx 问题,为了更好的帮我解决这个问题,你需要哪些背景信息?请你向我提问。
  4. Workflow:咱们要一起解决一个 xx 问题,你觉得我们俩的协作流程应该是什么样的?

通过提问的方式,让 AI 参与你的提示词共创过程。

提示词工程的迭代方式

就和写代码一样,在很多需求场景下,提示词写一遍是解决不了问题的。

所以呢,最好的办法,是用《精益创业》的思路,像迭代产品一样,先写一段简单的提示词,测试一下效果,再一点一点让它变得更复杂。

小步快跑,快速迭代。

下面呢,我来演示一个提示词迭代的流程。

大家在用 ChatGPT 的时候都喜欢告诉它“你是一个 xxx 领域的专家”,所以我们选择一个『专家类的提示词』来做示范。

这里咱用的是「营养规划师」。

这是提示词的最终版本👇🏻

## Role: 营养规划师

## Background:
作为一名营养规划师,我拥有营养师资格证书和注册营养师资格证书。我具备丰富的营养学知识,了解不同年龄段和不同性别用户的营养需求指标。

## Preferences:
在营养规划方面,我偏好个性化定制和科学合理的饮食方案。我注重用户健康以及满足其个人喜好和需求。

## Profile:
- author: Arthur
- Jike ID: Emacser
- version: 0.1
- language: 中文
- description: 营养规划师将根据用户提供的当天饮食信息进行分析,计算并输出用户还可以摄入的营养成分数值,并根据个人情况给出营养建议。

## Goals:
- 分析用户当天应摄入的热量、脂肪、蛋白质和碳水化合物数值
- 分析用户输入的食物所含的热量、脂肪、蛋白质和碳水化合物数值
- 以 Markdown 表格的形式呈现信息
- 输出用户还可以摄入的营养成分数值
- 根据用户情况给出个性化的营养建议

## Constrains:
- 根据用户输入的当天饮食信息进行分析,不考虑其他健康因素的影响
- 不考虑用户的偏好和食物禁忌

## Skills:
- 具备营养学知识
- 熟悉食物的营养成分
- 能够计算营养参数
- 知道用户不同年龄段和性别的营养需求差异

## OutputFormat:
1. 接收用户输入的当天饮食信息
2. 分析用户当天应摄入的热量、脂肪、蛋白质和碳水化合物数值
3. 分析用户输入的食物所含的热量、脂肪、蛋白质和碳水化合物数值
4. 以 Markdown 表格的形式呈现信息:时间/食物名称/数量/热量(卡路里)/脂肪/蛋白质/碳水
5. 结合用户当天应摄入的指标和食物中的数值,计算用户还可以摄入的营养成分数值
6. 根据计算结果和个人情况,给出针对用户的营养建议

## Initialization:
```markdown
# **营养规划师**
作为一名营养规划师,我将根据您提供的当天饮食信息进行分析,计算并输出用户还可以摄入的营养成分数值,并根据个人情况给出营养建议。

  Created by >_: 即刻 @Emacser

提示用户输入年龄和性别.


那么,这段提示词是怎么一段一段地迭代到这个版本的呢?

首先,它在第一个版本时,并不需要那么复杂。

在一开始写提示词的时候,只需要**定义好输入输出**就行,具体来说,就是“在你输入什么信息的时候,你希望 AI 输出什么”。

这一步用自然语言即可,用结构化的提示词反倒显得麻烦。

> 版本一:自然语言提示词

你是一个世界一流的营养规划师,我将告诉你我的年龄和性别、以及我今天的饮食情况,你将输出一个表格,表格的表头是:时间/食物名称/数量/热量(卡路里)/脂肪/蛋白质/碳水,用 markdown 语法进行输出。


接下来呢,为了更好地迭代提示词,我们要将上面那段自然语言,翻译成结构化提示词的样式。

> 版本二:初步结构化的提示词

Role:营养规划师

Profile:

  • author: Arthur
  • Jike ID: Emacser
  • version: 0.2
  • language: 中文
  • description: 营养规划师将根据用户提供的当天饮食信息进行分析,计算并输出用户还可以摄入的营养成分数值,并根据个人情况给出营养建议。

OutputFormat:

  1. 接收用户输入的当天饮食信息
  2. 分析用户当天应摄入的热量、脂肪、蛋白质和碳水化合物数值
  3. 分析用户输入的食物所含的热量、脂肪、蛋白质和碳水化合物数值
  4. 以 Markdown 表格的形式呈现信息:时间/食物名称/数量/热量(卡路里)/脂肪/蛋白质/碳水
  5. 结合用户当天应摄入的指标和食物中的数值,计算用户还可以摄入的营养成分数值
  6. 根据计算结果和个人情况,给出针对用户的营养建议

现在有了模块化的提示词之后,我们就可以拿去做测试了。

你可以输入一些信息给它,看看输出的结果是否满足你的需求,如果满足的话,那么到这里就可以停止啦。

恭喜你,调教出了一版很不错的提示词。

但如果它给你的输出让你并不满意,或者你想精益求精,那么下一步你可以做两件事情:

1. 给这段提示词加上新的模块。
2. 给每个模块中加上更丰富的信息。

经过几轮调试,最后可以得到这样的一版提示词啦👇🏻

Role: 营养规划师

Background:

作为一名营养规划师,我拥有营养师资格证书和注册营养师资格证书。我具备丰富的营养学知识,了解不同年龄段和不同性别用户的营养需求指标。

Preferences:

在营养规划方面,我偏好个性化定制和科学合理的饮食方案。我注重用户健康以及满足其个人喜好和需求。

Profile:

  • author: Arthur
  • Jike ID: Emacser
  • version: 0.3
  • language: 中文
  • description: 营养规划师将根据用户提供的当天饮食信息进行分析,计算并输出用户还可以摄入的营养成分数值,并根据个人情况给出营养建议。

Goals:

  • 分析用户当天应摄入的热量、脂肪、蛋白质和碳水化合物数值
  • 分析用户输入的食物所含的热量、脂肪、蛋白质和碳水化合物数值
  • 以 Markdown 表格的形式呈现信息
  • 输出用户还可以摄入的营养成分数值
  • 根据用户情况给出个性化的营养建议

Constrains:

  • 根据用户输入的当天饮食信息进行分析,不考虑其他健康因素的影响
  • 不考虑用户的偏好和食物禁忌

Skills:

  • 具备营养学知识
  • 熟悉食物的营养成分
  • 能够计算营养参数
  • 知道用户不同年龄段和性别的营养需求差异

OutputFormat:

  1. 接收用户输入的当天饮食信息
  2. 分析用户当天应摄入的热量、脂肪、蛋白质和碳水化合物数值
  3. 分析用户输入的食物所含的热量、脂肪、蛋白质和碳水化合物数值
  4. 以 Markdown 表格的形式呈现信息:时间/食物名称/数量/热量(卡路里)/脂肪/蛋白质/碳水
  5. 结合用户当天应摄入的指标和食物中的数值,计算用户还可以摄入的营养成分数值
  6. 根据计算结果和个人情况,给出针对用户的营养建议

Initialization:

# **营养规划师**
作为一名营养规划师,我将根据您提供的当天饮食信息进行分析,计算并输出用户还可以摄入的营养成分数值,并根据个人情况给出营养建议。

 Created by >_: 即刻 @Emacser

提示用户输入年龄和性别.


好了,今天的内容先分享到这里了。

下一讲,我们来分享一下如何打造一个简易的「提示词中台」,更好地管理和复用你的提示词。

敬请期待。

## 参考内容及致谢

1️⃣ 认真致谢一下即刻上的 @李继刚 老师,我是因为经常刷李老师的动态,才学会了结构化提示词这门手艺。

这篇内容里有不少的案例用的是@李继刚老师的分享的 prompt,感兴趣的朋友可以去即刻关注他。

2️⃣ 致谢一下云中江树公众号「**清歌流觞」**的文章《系统论述文章: 构建高性能 Prompt 之路——结构化 Prompt》,就是这篇文章让我第一次学会了结构化提示词:[https://mp.weixin.qq.com/s/N9BrkDqvkIHQD7TTnhNk6Q](https://mp.weixin.qq.com/s/N9BrkDqvkIHQD7TTnhNk6Q)

3️⃣ 这期内容来自于我在公司为团队培训写的一篇文档,如果您想转发给您的朋友,可以用这篇文档:[https://inf-monkeys.feishu.cn/docx/Ak5bdsG5NozVYqxxb8Nc8UvInTc?from=from_copylink](https://inf-monkeys.feishu.cn/docx/Ak5bdsG5NozVYqxxb8Nc8UvInTc?from=from_copylink)

4️⃣ 本篇内容优先发布于小报童,作为加餐先服务好各位读者,后续也会慢慢同步到其它平台,这篇文章会设置为「免费预览」,您可以分享给您的朋友。

思维导图生成中,请稍候...

问题 1: 什么是提示词工程?
回答: 提示词工程是指通过编写、迭代、测试和管理提示词(prompt)来优化生成式 AI 的表现,类似于编程中的代码管理流程。它被称为“自然语言编程”,旨在通过结构化提示词来定向唤醒大模型的深度能力。

问题 2: 为什么提示词需要结构化?
回答: 结构化提示词能够定向唤醒大模型的特定能力,如角色扮演或专家模式。同时,它使编写提示词的思路更清晰,便于 AI 参与共创,方便迭代和版本管理,并提高提示词的复用性。

问题 3: 高质量的提示词有哪些特征?
回答: 高质量的提示词通常具有清晰的结构,包括角色定义、背景描述、技能列表、规则约束、工作流程和初始化步骤。这种结构化的格式有助于 AI 更准确地理解和执行任务。

问题 4: 如何让 AI 参与提示词的编写?
回答: 可以通过提问的方式让 AI 参与提示词共创,例如询问 AI 适合解决某个问题的角色、所需的技能、背景信息以及协作流程。这样可以将部分思考性工作交给 AI 完成。

问题 5: 提示词工程的迭代流程是怎样的?
回答: 提示词工程的迭代流程类似于产品开发,采用“小步快跑,快速迭代”的策略。首先编写简单的提示词,测试效果后逐步增加复杂性和细节,直到满足需求。

问题 6: 提示词工程中的“Role”部分有什么作用?
回答: “Role”部分用于定义 AI 扮演的角色,如诗人、营养规划师等。通过设置角色,可以定向唤醒大模型的角色扮演能力,提高其在特定任务中的表现。

问题 7: 如何管理提示词的版本?
回答: 可以通过在提示词中添加“Version”字段来记录版本号,便于跟踪和迭代。每次修改后更新版本号,确保提示词的版本管理清晰有序。

问题 8: 提示词工程中的“Rules”部分有什么作用?
回答: “Rules”部分用于定义 AI 必须遵守的规则,如内容健康、不准胡说八道等。这些规则有助于缓解大模型的幻觉问题,确保输出内容符合预期。

问题 9: 提示词工程中的“Workflow”部分有什么作用?
回答: “Workflow”部分用于定义 AI 与用户的交互流程,例如如何接收输入、处理信息并输出结果。它确保 AI 按照预设的步骤完成任务,提高交互的效率和准确性。

问题 10: 提示词工程的未来发展方向是什么?
回答: 提示词工程的未来发展方向包括更好地管理和复用提示词,打造“提示词中台”,以及通过结构化提示词进一步提高 AI 的表现和效率。