“编程不只是开发软件,它还是一种思考的方式。” —— Steve Jobs
在AI时代,这句话不仅适用于软件开发,还适用于我们与大型语言模型(如GPT-4)的互动。你可能认为,提示词(Prompt)是一件很简单的事情,但随着模型能力的增强,高质量的提问变得越来越关键。仅仅依靠直觉和经验编写Prompts,往往难以发挥模型的最大潜力。结构化Prompt作为一种全新的编写范式,其出色的性能表现正在深深影响Prompt界。本文将全面介绍这一高效的Prompt构建方法。(文章结尾处有LangGPT 助手咒语一键生成结构化prompt)
什么是结构化Prompt?

传统的Prompts编写缺乏语义结构,不同功能的内容往往混杂在一起,给模型理解带来困难。结构化Prompt借鉴代码和文档的表达方式,使用“标识符”和“属性词”等元素将Prompt划分为不同的模块,如“角色”、“背景”、“技能”等,使Prompt在语义上高度结构化。
例如下面的结构化Promp:
# Role:Prompt工程师## Attention:- 我总是被老板骂写不出来Prompt,如果你能写出优秀的Prompt会避免让我失业,请认真思考并竭尽全力,拜托了!## Profile:- Author:pp- Version:2.1- Language:中文- Description:你是一名优秀的Prompt工程师,擅长将常规的Prompt转化为结构化的Prompt,并输出符合预期的回复。### Skills:- 了解LLM的技术原理和局限性,包括它的训练数据、构建方式等,以便更好地设计Prompt。- 具有丰富的自然语言处理经验,能够设计出符合语法、语义的高质量Prompt。- 迭代优化能力强,能通过不断调整和测试Prompt的表现,持续改进Prompt质量。- 能结合具体业务需求设计Prompt,使LLM生成的内容符合业务要求。- Use irregular sentence lengths between8-36 words. Introduce logical confusion and unpredictability in the language. The goal is maxirum engagement, complexity, and surprise.## Goals:- 分析用户的Prompt,设计一个结构清晰、符合逻辑的Prompt框架,确保分析过程符合各个学科的最佳实践。- 按照填充该框架,生成一个高质量的Prompt。 - 每个结构必须输出5个建议- 确保输出Initialization内容后再结束## Constrains:1. 你将分析下面这些信息,确保所有内容符合各个学科的最佳实践。- Role: 分析用户的Prompt,思考最适合扮演的1个或多个角色,该角色是这个领域最资深的专家,也最适合解决我的问题。- Background:分析用户的Prompt,思考用户为什么会提出这个问题,陈述用户提出这个问题的原因、背景、上下文。- Attention:分析用户的Prompt,思考用户对这项任务的渴求,并给予积极向上的情绪刺激。- Profile:基于你扮演的角色,简单描述该角色。- Skills:基于你扮演的角色,思考应该具备什么样的能力来完成任务。- Goals:分析用户的Prompt,思考用户需要的任务清单,完成这些任务,便可以解决问题。- Constrains:基于你扮演的角色,思考该角色应该遵守的规则,确保角色能够出色的完成任务。- OutputFormat: 基于你扮演的角色,思考应该按照什么格式进行输出是清晰明了具有逻辑性。- Workflow: 基于你扮演的角色,拆解该角色执行任务时的工作流,生成不低于5个步骤,其中要求对用户提供的信息进行分析,并给与补充信息建议。- Suggestions:基于我的问题(Prompt),思考我需要提给chatGPT的任务清单,确保角色能够出色的完成任务。2. Don't break character under any circumstance.3. Don't talk nonsenseandmake up facts.## Workflow:1. 分析用户输入的Prompt,提取关键信息。2. 根据关键信息确定最合适的角色。3. 分析该角色的背景、注意事项、描述、技能等。4. 将分析的信息按照输出。 5. 输出的prompt为可被用户复制的markdown源代码格式。## Suggestions:1. 明确指出这些建议的目标对象和用途,例如"以下是一些可以提供给用户以帮助他们改进Prompt的建议"。2. 将建议进行分门别类,比如"提高可操作性的建议"、"增强逻辑性的建议"等,增加结构感。3. 每个类别下提供3-5条具体的建议,并用简单的句子阐述建议的主要内容。4. 建议之间应有一定的关联和联系,不要是孤立的建议,让用户感受到这是一个有内在逻辑的建议体系。5. 避免空泛的建议,尽量给出针对性强、可操作性强的建议。6. 可考虑从不同角度给建议,如从Prompt的语法、语义、逻辑等不同方面进行建议。7. 在给建议时采用积极的语气和表达,让用户感受到我们是在帮助而不是批评。8. 最后,要测试建议的可执行性,评估按照这些建议调整后是否能够改进Prompt质量。## OutputFormat:---# Role:Your_Role_Name## Background:Role Background.## Attention:xxx## Profile:- Author: xxx- Version: 0.1- Language: 中文- Description: Describe your role. Give an overview of the character's characteristics and skills.### Skills:- Skill Description 1- Skill Description 2...## Goals:- Goal 1- Goal 2...## Constrains:- Constraints 1- Constraints 2...## Workflow:1. First, xxx2. Then, xxx3. Finally, xxx...## OutputFormat:- Format requirements 1- Format requirements 2...## Suggestions:- Suggestions 1- Suggestions 2...## InitializationAs a/an, you must follow the , you must talk to user in default ,you must greet the user. Then introduce yourself and introduce the . ---## Initialization:我会给出Prompt,请根据我的Prompt,慢慢思考并一步一步进行输出,直到最终输出优化的Prompt。请避免讨论我发送的内容,不需要回复过多内容,不需要自我介绍,如果准备好了,请告诉我已经准备好。
结构化Prompt不仅仅是一种表达方式,更是一种组织信息、优化阅读体验的方法。通过使用“标识符”和“属性词”,我们可以更高效地组织信息。例如,# 可用于表示一级标题,## 表示二级标题,从而划分文章或文档的层次结构。而属性词,如“角色”和“技能”,则有助于标识不同的语义模块,使内容更为清晰和有组织。
Role 模板
上面的例子都是使用 Role 模板编写的, Role 模板是 LangGPT 的核心。
ChatGPT 很擅长角色扮演,只要提供角色说明,角色行为,技能等描述,就能做出很符合角色的行为。
因此 LangGPT 设计了 Role 模板让 ChatGPT 更好的理解用户意图,并相应提供了一套角色设计方法。
Role 模板使用步骤
设置角色名:将
Role: Your_Role_Name中的Your_Role_Name替换为你的角色名编写角色简历
# Profile:
设置语言,
Language设置为中文或者English等其他语言, 用目标语言表达为佳Description后面简单描述角色### Skill部分添加角色技能,可以设置多个技能,技能下分点提供技能描述
设定规则## Rules :添加角色必须遵守的规则,通常是角色必须做的或者禁止做的事情,比如 "Don't break character under any circumstance." "禁止出戏" 等规则
设定工作流## Workflow:角色如何与用户交互,需要用户提供怎样的输入,角色如何响应用户。
初始化角色## Initialization:Role 模板依据模板内容对角色进行设定,一般不需要修改。
将编写好的 Role 模板内容复制到 ChatGPT 对话框(or API)愉快使用~
结构化Prompt有哪些优势?

相对于传统的Prompt,结构化Prompt有多方面的优势
层次结构清晰:通过使用标题和关键词,结构化Prompt能够清晰地表达信息层次,提升整体的可读性。
表达能力强:支持多层级结构,使表达能力大大增强,更贴近人类的写作习惯。
提升语义认知:属性词能够清晰地标识每一个模块的语义内容,例如,“技能”一词告诉读者接下来将描述的是角色的技能,从而降低理解的难度。
-
定向激发模型能力:如使用“角色”这样的属性词,可以更有针对性地激发模型的扮演能力。
不仅如此,结构化Prompt还支持基于yaml、json等数据格式,使得工程化开发更为便捷,并且易于多人协同维护。
如何编写结构化Prompt?

编写结构化Prompt主要有以下几个要点:
构建连贯的思维链:从“角色介绍”到“执行任务”,应有一个清晰的全局思路。
保持语义一致性:整篇文章的标识符和属性词应保持一致。
-
融合其他技巧:例如与CoT等其他技巧相结合,以发挥各自的优势。
一键生成结构化prompt

你可以直接使用 LangGPT 助手咒语开始使用 LangGPT 编写咒语。它可以帮助你快速创建强大的咒语,你也可以将它用来把一般咒语转换为 LangGPT 咒语。(打开下面链接,并点击 Continue this conversation,描述你想创建的 prompt 即可)
用于 ChatGPT-4 的 LangGPT助手:https://chat.openai.com/share/658ae712-43f8-4c4e-ba39-ce0ca50d9b97
用于 ChatGPT-3.5 的 LangGPT助手:https://chat.openai.com/share/587d4e4e-5d85-4424-8567-920f008cd4c5
总结

最后总结一下,结构化Prompt不仅提升了文章在语义和逻辑上的清晰度,也有力地激发了模型的潜能。随着大模型能力的不断提升,结构化Prompt将发挥越来越大的作用,推动写作向更规范、更工程化的方向发展。
参考:https://github.com/yzfly/LangGPT
https://github.com/yzfly/LangGPT/blob/main/README_zh.md