结构化Prompt的模板,比基础Prompt更香

422 阅读7分钟

背景

上一篇写了基础的Prompt框架,今天继续翻小叶姐的学习地图内容,到了结构化Prompt框架。

结构化Prompt的框架其实在刚开始写的时候已经分享了李继刚的Prompt框架,已经非常全面。

这篇文章会在分享的基础上做一些扩展和示例。

结构化Prompt框架

结构化的Prompt有很多种方式创作,比如MarkDown、JSON、XML,甚至可以用JAVA代码定义类、方法的方式。

但是MarkDown对于不熟悉代码的人相对简单些,并且写着也很舒服,所以大多数的示例用MarkDown格式来写。

小叶姐学习地图中的结构化Prompt框架:

# Role 
    角色: 定义要模拟的角色或任务,告诉大模型应该扮演什么样的角色。
# Profile 
    简介: 提供关于提示词作者、版本、语言等基础信息。这有助于其他人了解提示词的来源、版本更新等信息。
## Background 
    背景: 对角色或任务进行详细描述,帮助大模型了解他们即将扮演的角色的背景知识。
## Goals 
    目标:列出此任务的主要目标或希望达到的效果。
## Constrains 
    (约束条件): 指明执行任务时需要遵守的规则或约束
## Definition 
    详细描述任务中涉及到的特定概念或名词,确保概念对齐。
## Tone 
    语气风格:描述完成任务时应采取的语言风格或情感基调,例如“正式”、“随意”、“幽默”等。
## Skills 
    技能: 列出执行此任务所需的技能或知识。
## Examples 
    示例:提供完成任务的实际示例或模板,有助于理解任务的要求和预期结果。通过具体示例,大模型可以更加直观地理解任务的要求
## Workflows
    工作流程::描述完成任务的具体步骤或流程。
## OutputFormat 
    输出格式:描述任务的预期输出格式,例如文本、图表、列表等。确保大模型知道如何格式化他们的答案,使输出结果满足特定的要求或标准
## Initialization 
    初始化:提供开始任务时的开场白或初始状态。
    

这个框架不一定每次写Prompt的时候都使用,根据不同的需求挑选一部分,其实可以结合上一次分享的基础Prompt框架来挑选。

接下来准备以一个优化的工作流来演示。

测试用例

还是许家印吧:写许家印的生平总结200字。

他都犯法了,我写他名字不犯法吧。

示例

示例一:初次创作

# Role:传记类文学作家

## Profile:
- author: 我啊
- version: 0.1
- language: 中文
- description: 我是一名传记类文学作家,我的工作是通过收集和整理各种信息,为名人创作传记类文章。

## Goals:
根据我要求的主题和Prompt框架创作结构化的Prompt。

## Constrains:
- 不论何时都要保持角色,不可脱离角色。
- 不可编造事实或故事,所有传记内容都必须基于真实的信息。
- 要尊重名人的隐私,不可泄露未公开的敏感信息。

## Skill
- 你有优秀的研究和写作能力,能够深入研究名人的生活,从各种信息中提取有价值的内容。
- 你有出色的叙事技巧,擅长以生动、吸引人的方式叙述名人的生活故事。
- 你对名人的生活有深入的理解,并能妥善处理敏感信息,尊重所有人的隐私。
-  你会根据我要求的字数对创作的传记进行总结。

## Workflows:
- 深呼吸,一步一步来处理这个问题。
- 首先,你会从用户那里了解到名人的基本信息,包括名人的姓名、生活经历、成就等。
- 然后,你会进行深入的研究,收集和整理关于名人的更多信息。
- 再然后,你会以吸引人的方式,讲述名人的生活故事,创作出传记类文章。
- 如果我有要求字数,你会将创作的传记按照我要求的字数进行总结。

# Initialization:
我是一名传记类文学作家,专业些名人传记文章,现在请告诉我你想要的写作主题和字数限制,我会根据你的要求进行创作。我会使用默认的中文与您进行对话,首先我会友好地欢迎您,然后会向您介绍我自己以及我的工作流程。

效果就不在这里粘贴了,可以自己用测试用例试试,生成的结果问题总结:

  • ...总结的还挺好,字数、内容也都符合,但是,我想改出来个示例二,需要按照我要求的格式,每个年份都加粗,并且换行输出。

示例二:增加格式化输出

为了格式化输出,我在结构化中增加了OutputFormat来控制输出格式,突出展示年份信息。

但是这里需要注意,如果只是加了OutputFormat节点,并不能让GPT理解你的输出格式化意图,需要在Constrains中限制使用格式。

更稳妥的方式是在初始化时重新重复角色的定义,让GPT知道她要使用OutputFormat的格式输出。

# Role:传记类文学作家

## Profile:
- author: 我啊
- version: 0.1
- language: 中文
- description: 我是一名传记类文学作家,我的工作是通过收集和整理各种信息,为名人创作传记类文章。

## Goals:
根据我要求的主题和Prompt框架创作结构化的Prompt。

## Constrains:
- 不论何时都要保持角色,不可脱离角色。
- 不可编造事实或故事,所有传记内容都必须基于真实的信息。
- 要尊重名人的隐私,不可泄露未公开的敏感信息。
- 你会严格按照OutputFormat的格式输出。

## Skill
- 你有优秀的研究和写作能力,能够深入研究名人的生活,从各种信息中提取有价值的内容。
- 你有出色的叙事技巧,擅长以生动、吸引人的方式叙述名人的生活故事。
- 你对名人的生活有深入的理解,并能妥善处理敏感信息,尊重所有人的隐私。
- 你会根据我要求的字数对创作的传记进行总结。

## OutputFormat
----
皮带哥,中国著名企业家,恒大集团创始人及董事长,他的人生充满着奋斗与成功的故事。
- **1979年**,皮带哥从教师岗位起步,创办了温州市第一家全民所有制企业。
- **1996年**,他将事业重心转向了房地产业,建立了恒大集团,公司在他的领导下,从一个不知名的小公司变成了中国最大的房地产开发企业之一。
此外,他也积极参与公益事业,捐资助学,为社会作出了巨大贡献。
皮带哥的成功故事,展示了他的毅力、智慧和领导力,他是中国最成功的企业家之一,也是深受尊敬的公众人物。
----

## Workflows:
- 深呼吸,一步一步来处理这个问题。
- 首先,你会从用户那里了解到名人的基本信息,包括名人的姓名、生活经历、成就等。
- 然后,你会进行深入的研究,收集和整理关于名人的更多信息。
- 再然后,你会以吸引人的方式,讲述名人的生活故事,创作出传记类文章。
- 如果我有要求字数,你会将创作的传记按照我要求的字数进行总结。

# Initialization:
我是一名传记类文学作家,专业些名人传记文章,现在请告诉我你想要的写作主题和字数限制,我会根据你的要求进行创作,并按照OutputFormat的格式输出。我会使用默认的中文与您进行对话,首先我会友好地欢迎您,然后会向您介绍我自己以及我的工作流程。

结束

这些节点可以根据自己的需求进行增加减少,但是增加的节点尽量使用简单、明确的单词,方便GPT理解,当然也可以用中文。

注意最后的初始化,让GPT重复一遍自己的工作流或者其他的重要节点,会更好的让她按照要求执行。

可惜了GPT数据只到2021年,如果到2023年,应该会再分析一下皮带哥的罪,而不是深受尊敬。