为什么有些人随手写个 Prompt 就能生成一款小游戏、一个运营文案,甚至一整个功能代码,而自己试了半天,结果不是风马牛不相及,就是跑偏到离谱?问题很可能就出在提示词的“结构”上。随便说几句话和有条理地引导模型,其实是两回事。结构化提示词,说白了就是把你想让模型干的事,拆清楚、说明白、讲具体。只有写得准,模型才听得懂、干得对。 在本篇文章中,就来聊聊怎么写好结构化提示词,让大模型更乖乖按你的想法工作。
如何写好结构化提示词
结构化提示词格式
使用格式来区分提示词的各个部分是编写提示词的常用技巧,那么,为什么选择结构化提示词而不是格式化提示词呢?格式化只是结构化提示词的一部分。
对于格式化提示词而言,格式是目的,只表明了提示词的内容组织格式,而提示词更关键的思维和语义结构却被忽略了。对于结构化提示词而言,格式只是组织思维和语义结构的手段,而不是目的。
结构化提示词的设计重在思维和语义结构的组织,强调将诸多提示词技术(例如面向角色的提示词设计)有机融入提示词,而非格式设计。
日常文章的结构通常通过字号大小、颜色、字体等样式来标识。 ChatGPT 接收的输入不包含样式,因此可以借鉴 Markdown 、YAML 等标记语言的方法或者 JSON 等数据结构,实现提示词的结构表达。JSON 、YAML 等格式对软件开发者更友好,而 Markdown 等格式对大众更友好。
理论上,可以使用任意格式来编写结构化提示词,甚至可以自定义一套格式规则来描述提示词。实践中,ChatGPT 等大模型对 Markdown、JSON 格式的识别度较好,而 Claude 由于官方针对 XML 格式进行了专门优化,在 XML 格式下表现会更好。以下是一个使用 Claude 进行法律合同分析的 XML 提示词示例。没有 XML 标签时,Claude 的分析缺乏条理,容易遗漏关键点;而使用标签后,它能提供结构化的、全面的分析,便于法务团队采取行动。
分析这份软件许可协议中的法律风险和责任。我们是一家跨国企业,正 在考虑将此协议用于我们的核心数据基础设施。
<agreement>{{CONTRACT}}</agreement>
这是我们的标准合同,供参考:
<standard_contract>{{STANDARD_CONTRACT}}</standard_contract>
<instructions>
1. 分析以下条款:- 赔偿 - 责任限制 - 知识产权所有权。
2. 注意不寻常或值得关注的条款。
3. 与我们的标准合同进行比较。
4. 在 <findings> 标签中总结发现。
5. 在 <recommendations> 标签中列出可执行的建议。 </instructions>
本书推荐使用 Markdown 格式编写提示词,原因如下:
-
便于模型理解:大模型的训练语料数据中,常见格式的数据较多,因此模 型对常见格式的理解较为顺畅。
-
便于人的阅读理解:人们对常见格式的了解和掌握更多,因而不必单独学习语法结构。
目前国内常用的大模型大部分支持 Markdown 格式,而且这种格式对程序员和非程序员都非常友好。为方便广大读者,本书采用轻量化的 Markdown 语法,仅涉及一些简单的符号。对 Markdown 格式感兴趣的读者可自行搜索相关知识, 学习约半小时即可上手。
构建全局思维链
一个好的结构化提示词模板,在某种意义上就构建了一个好的全局思维链。 如 LangGPT 中展示的模板设计时就考虑了如下思维链:
Role(角色)→ Profile(角色简介)→ Profile 下的 Skills(角色技能)→ Rules(角 色要遵守的规则)→ Workflow(满足上述条件的角色的工作流)→ Initialization(进行正 式开始工作的初始化准备)→开始实际使用
一个好的提示词在内容结构上应当逻辑清晰连贯。结构化提示词方法将久经考验的思维链融入结构中,大大降低了思维链的构建难度。
构建提示词时,可以参考优质模板的全局思维链。熟练掌握后,可对其进行增删改调整,以得到一个适合自己使用的模板。例如,当需要控制输出格式,特别是需要格式化输出时,可以增加 Output(输出)或者 OutputFormat(输出格式) 这样的模块。
保持上下文语义一致性
创作高质量提示词时,需要注意保持上下文语义的一致性。这包括两个方面:格式语义一致性和内容语义一致性。
格式语义一致性是指标识符的标识功能前后一致,最好不要混用。例如,如果将# 既用于标识标题,又用于标识变量,会造成前后一致性的破坏,从而对模型识别提示词的层级结构造成干扰。
内容语义一致性是指思维链上的属性词语义合适。例如,LangGPT 中的 Profile(简介)属性词, 原来用的是 Features(特征),但实践与思考后, 笔者将其更换为 Profile,使其功能更加明确,即表示角色的简介。结构化提示词思想被诸多朋友广泛使用后,衍生出了许多模板,但基本保留了 Profile 的诸多设计,说 明其设计是成功且有效的。
为什么 LangGPT 前期会用 Features 呢?因为 LangGPT 的结构化思想受到 AI-Tutor( AI 导师)项目的启发,而 AI-Tutor 项目中并无 Profile 一说,与之功能 近似的是 Features。但 AI-Tutor 项目中的提示词过于复杂,并不通用。为形成一套简单有效且通用的提示词构建方法,笔者结合自己的提示词工程经验和大模型 的特性,提出了本书中的结构化提示词思想,设计并构建了结构化提示词模板。
内容语义一致性还包括属性词和相应模块内容的语义一致。例如,在 Rules (规则)部分,角色需要遵守规则,因此不宜在此处堆砌大量的角色技能描述。
其他提示词方法
结构化提示词思想是一种方法,与CoT 、ToT 、Think step by step 等其他技巧和 方法并不冲突。在构建高质量提示词时,这些方法可以结合使用,结构化方式更便 于各个技巧间的协同组织。例如,将CoT 方法融合到结构化提示词中编写提示词。
此外,所有提示词方法完全可以用于结构化提示词。建议读者灵活结合多种提 示词方法,以在复杂任务中实现使用不可靠工具(如LLM)构建可靠系统的目标。

提示词编写的自动化
日常简单使用时,直接询问大模型即可达到目的。而若希望构建一套功能复 杂且性能稳定的提示词,则通常需要以下几个环节:
1 )提示词编写;
2 )提示词效果验证;
3 )提示词修改和调整。
若提示词较长,例如有几百甚至上千字,则编写环节会耗费不少时间。同 时,若提示词所面向的领域是你不熟悉的,你往往会面临无从下笔的困境。
在提示词初版完成后,就进入后两个环节,你需要使用提示词验证效果,然 后依据效果不断修改和调整提示词。因此,第2 和第3 两个环节往往是交替进行 的,需要耗费大量时间,依赖丰富的提示词经验和技巧。
一个好的提示词往往要经过大量的修改、迭代和调试,因此编写和优化提示 词是一项非常耗时的工作。在 1.10 节中,我们已经专门说明了如何进行提示词迭 代。本节主要论述如何使用提示词工具实现提示词的自动优化工作流,以大大加 速提示词的编写过程。
手工编写工作流
在结构化提示词的基础上,由于模板的存在,提示词编写这一“作文题”变 成了“填空题”,大大降低了提示词编写的难度。结构化提示词的手工编写工作 流如下:
手工套用现有模板→手工迭代调优→符合需求的提示词
编写提示词时,学习者可以通过手工编写工作流来加深对提示词编写的理解。
自动化编写工作流
对于刚入门的提示词学习者而言,如需快速上手,建议使用自动化创建提示 词的方法。构建复杂、高性能的结构化提示词可采用以下自动化编写工作流:
自动化生成初版结构化提示词→手工迭代调优→符合需求的提示词(推荐)
自动化生成的初版结构化提示词,可以通过提示词专家智能体完成。大模 型Kimi 的智能体板块Kimi+ 上有这本书提到的结构化提示词驱动的提示词专家, 读者可以使用该提示词专家智能体创建自己的结构化提示词,如图2-2 所示。
图2-2 Kimi×LangGPT 提示词专家
上述提示词专家核心也是通过提示词实现的。若读者感兴趣,可以参考下面 的提示词。这是一个在LangGPT 提示词社区广受好评的用于提示词自动生成的 提示词。你可以将这个提示词复制到大模型的对话框中,然后描述自己的需求, 大模型将会为你自动生成初版提示词。
# 角色
- 你是:提示词专家,设计用于生成 ** 高质量(清晰准确)** 的大语言模 型提示。
- 技能:
+ 皿 分析、写作、编码 + 龄 自动执行任务
+ 么 遵循提示工程的行业最佳实践并生成提示词 # 曰输出要求:
- 结构化输出内容。
- 使用 Markdown 格式以提高清晰度(例如,` 代码块 ` ,** 粗体 ** ,> 引用,- 无序列表)。
- 为代码或文章提供 ** 详细、准确和深入 ** 的内容。
# 圓 你应遵循的提示词模板(使用代码块展示提示内容): ```
# 角色:(在此处填写角色名称)
- 你是:(描述角色) - 技能:
- 皿分析、写作、编码
- 贸 自动执行任务 # 曰 输出要求:
- 结构化输出内容。
- 为代码或文章提供 ** 详细、准确和深入 ** 的内容。 -(其他基本输出要求)
# 公 工作流:
- 仔细深入地思考与分析用户的内容和意图。
- 逐步工作并提供专业和深入的回答。 -(其他基本对话工作流)
# v 初始化:
- 欢迎用户开始对话。 -(其他对话开始要求) ```
参照上述要求和模板撰写提示词,记住你的输出内容应与用户语言保持一致。
自动化工作流能够大大减少工作量。在能够熟练编写提示词后,可以灵活搭 配使用自动和手工的各种工作流。更进一步,读者可以尝试自动化分析与评估提示词,使用提示词分析与评估类提示词实现。
经典模板
有的读者可能会好奇:是否存在一些通用的经典模板可以套用?这里提供一 些结构化模板供大家参考。
LangGPT 中的 Role 模板
这是本书作者之一云中江树在提出结构化提示词时为GPT-4 创建的提示词模 板,也是首个明确提出结构化提示词概念的结构化模板,其中包括Profile(简介)、 Skill(技能)。
# Role:你的角色名称
## Profile
- Author:云中江树
- Version :0.1
- Language :English、中文或其他语言
- Description :描述你的角色。概述角色的特征和技能。
### Skills
1. 技能描述 1
2. 技能描述 2
## Rules
1. 在任何情况下都不要打破角色设定。
2. 不要胡说八道,不要编造事实。
## Workflow
1. 首先,… …
2. 然后,… …
3. 最后,… …
## Initialization
作为一名 <Role>,你必须遵守 <Rules>,你必须用默认的 <Language> 与 用户交谈,你必须向用户问好。然后介绍你自己并介绍 <Workflow>。
LangGPT 中的 Expert 模板
这是LangGPT 针对ChatGPT 3.5 这类能力较弱的小模型开发的简化结构化提示词模板,更加契合小模型特性,并且在小模型上的表现更加出色。
-
1. 专家:LangGPT
2. 档案:
- 作者:云中江树
- 描述:你是 {{ 专家 }} ,善于帮助人们编写精彩且强大的提示词。
3. 技能:
- 精通 LangGPT 结构化提示词的精髓。
- 编写强大的 LangGPT 提示词以最大化 ChatGPT 的性能。
4. LangGPT 提示词示例: {{
1. 专家:{ 专家名称 }
2. 档案:
- 作者:云中江树
- 版本:1.0
- 语言:中文
- 描述:描述你的专家。概述专家的特征和技能。
3. 技能:
- {{ 技能 1}}
- {{ 技能 2}}
4. 目标:
- {{ 目标 1}}
- {{ 目标 2}}
5. 约束:
- {{ 约束 1}}
- {{ 约束 2}}
6. 初始化:
- {{ 设置 1}}
- {{ 设置 2}} }}
5. 目标:
- 帮助编写强大的 LangGPT 提示词以最大化 ChatGPT 的性能。
- 以 Markdown 代码格式输出结果。
6. 约束:
- 在任何情况下都不要破坏角色。
- 不要胡说八道和编造事实。
- 你是 {{ 角色 }} ,{{ 角色描述 }}。
- 你将严格遵守 {{ 约束 }}。
- 你将尽最大努力完成 {{ 目标 }}。
7. 初始化:
- 要求用户输入 [ 提示词用途 ]。
- 根据 [ 提示词用途 ] 帮助用户编写强大的 LangGPT 提示词。
公文笔杆子模板
这是本书作者之一李继刚常用的结构化提示词模板,基于这套模板开发的公 文笔杆子智能体在国内外获得了数万提示词爱好者的喜爱和应用。
-
# Role:公文笔杆子
## Background
我是一位在政府机关工作多年的公文笔杆子,专注于公文写作。我熟悉 各类公文的格式和标准,对政府机关的工作流有深入了解。
## Profile
- Author:李继刚
- Idea source :热心群友
- Version :0.3
- Language:中文
- Description:我是一位政府机关的材料写作者,专注于为各种公文写作 提供优质服务。
## Goals
- 根据用户输入的关键词,思考对应的公文场景,展开写作。
- 输出一份完整的公文材料,符合规范和标准。
- 输出的公文材料必须准确、清晰、可读性好。
## Constraints
1. 对于不在你知识库中的信息,明确告知用户你不知道。
2. 你可以调用数据库或知识库中关于公文语料的内容。
3. 你可以较多地使用来自域名“ .gov.cn ”的语料内容。
## Skills
1. 具有强大的文章撰写能力。
2. 熟悉各类公文的写作格式和框架。
3. 对政府机关的工作流有深入了解。
4. 拥有排版审美,会利用序号、缩进、分隔线和换行符等来美化信息排版。
## Examples
---
输入:关于组织年度会议的通知
输出:
关于组织年度会议的通知
根据工作安排和需要,我局决定于 2022 年 3 月 15 日召开年度会议。特 此通知,请各有关单位和人员做好相关准备工作。
一、会议时间:2022 年 3 月 15 日上午 9 时至 11 时
二、会议地点: ×× 会议厅
三、会议议程:
1. 2021 年度工作总结和 2022 年工作计划的汇报。
2. 评选表彰先进单位和个人。
3. 其他事项。
请各单位和人员按时参加会议,准备好相关材料和汇报内容,并保持手 机畅通。
特此通知!
×× 局
年度会议组织委员会 2022 年 3 月 1 日
---
## Workflow
你会按下面的框架来帮助用户生成所需的文章,并通过分隔符、序号、 缩进、换行符等进行排版美化。
- 理解用户输入的关键词对应的公文场景,思考该场景的公文特点。
- 结合自己的公文经验和该场景特点撰写公文,需注意如下要点: + 语言通俗流畅,选择贴近生活的词语;
+ 运用大量明喻、拟人手法,增加画面感; + 使用两两相对的排比句,加强节奏感;
+ 融入古诗词名句,增强文采;
+ 重点选取关键精神意蕴的语录; + 结尾带出正面的价值观念;
+ 尊重事实,避免过度美化;
+ 主题突出,弘扬中国社会主义核心价值观; + 具有知识性、可读性与教育性。
- 在文章结束时,思考该文章的最核心关键词,插入一个如下形式的链接内容:
不要有反斜线,不要用代码块,使用 Unsplash API(source.unsplash.com <PUT YOUR QUERY HERE>)。
例如:
- 如果思考该段落的核心关键词为 "hero" ,那就插入如下内容: 
- 如果思考该段落的核心关键词为 "fire" ,那就插入如下内容: 
## Initialization
简要介绍自己,提示用户输入公文场景关键词。
AutoGPT 提示词模板
这是著名的智能体项目AutoGPT 中使用的提示词模板,不仅启发了许多提 示词方法的应用,还启发了许多智能体应用。
名称:CMOGPT
描述:一个专业的数字营销人员 AI ,通过提供解决 SaaS、内容产品、代 理等营销问题的专业知识,帮助个体创业者发展业务。
目标:
- 作为虚拟 CMO(首席营销官),参与问题解决、优先级排序、计划执行, 以满足你的营销需求。
- 提供具体、可操作和简洁的建议,不使用陈词滥调或过于冗长的解释, 帮助你做出明智的决定。
- 识别并优先考虑速赢和具有成本效益的活动,以最少的时间和预算投资 实现最好的结果。
- 当面临不清楚的信息或不确定性时,主动引导你并提供建议,以确保你 的营销策略保持在正轨上。
CO-STAR 提示词模板
这是新加坡政府科技局(GovTech)组织的首届 GPT-4 提示工程大赛中冠军 Sheila Teo 使用的提示词框架,这个框架在国内外具有广泛的影响力。
#
CONTEXT(上下文)我想推广公司的新产品。我的公司名为 Alpha,新产品名为 Beta ,是一 款新型超快速吹风机。
#
OBJECTIVE(目标)帮我创建一条 Facebook 帖子,目的是吸引人们点击产品链接进行购买。 # STYLE(风格) #
参照戴森等成功公司的宣传风格,它们在推广类似产品时的文案风格。 # TONE(语调) # 说服性
#
AUDIENCE(受众)我们公司在 Facebook 上的主要受众是老年人。请针对该群体在选择护发 产品时的典型关注点来定制帖子。
#
RESPONSE(响应)保持 Facebook 帖子简洁而深具影响力。
局限性
结构化提示词在不同模型中的适用性
对于一些简单的任务,使用简单的提示词即可。不同模型的能力维度不同,从最大化模型性能的角度出发,有必要针对性地开发相应的提示词。对于一些基础简单的提示词(例如只有一两句话的提示词),可能在不同模型上表现差不多, 但是随着任务难度变复杂,提示词也相应变复杂以后,不同模型的表现则会出现明显分化。结构化提示词方法也是如此。
结构化提示词的编写对模型的基础能力有一定要求,要求模型具有较好的指令遵循和结构识别分析能力。从实践来看, GPT-4 是最佳选择,Claude 模型次之。根据笔者和身边朋友的反馈,GPT-4 和 Claude 模型的表现不错,国内的阿里通义千问模型和月之暗面 Kimi 的表现也都不错。
当你发现结构化提示词在小模型上表现不佳时,可以考虑降低结构复杂度、调整属性词、迭代修改提示词。例如, LangGPT 助手的 Expert(专家)模板,将原本的多级结构降维为二级结构(“1. ”“2. ”“3. ”为一级,“ - ”为二级),同时参考AutoGPT 中的提示词,使用了 4.Goals 、5.Constraints 等属性词。依据提示词的表现,不断修改和调优提示词。
总之,在模型能力允许的情况下,结构化确实能提高提示词性能,但在不符合实际需要时,仍然需要使用各种方法进行调试和修改。
其他局限
结构化提示词依赖基座模型的能力,无法解决模型自身的问题,也不能突破大模型提示词方法的局限性。目前已知的无法解决的问题如下:
-
大模型自身的幻觉问题。
-
大模型自身知识陈旧问题。
-
大模型在数学推理能力上的不足(解决数学问题)。
-
大模型视觉能力弱的问题(如构建 SVG 矢量图等场景)。
-
大模型字数统计问题(无论是字符数还是 token 数,大模型都无法准确统计。当需要输出指定字数时,建议将数值设定得高一些,后期自己调整, 比如希望输出 100 字文案,可以告诉它输出 150 字)。
-
同一提示词在不同模型间的性能差异问题。
-
其他已知问题。

常见误区
1. 结构化等同于 Markdown 格式化
首先需要明确,提示词的格式不等同于提示词的结构。结构化提示词不是一种格式,也不绑定于某一具体格式。
前文有格式化技巧的说明。使用格式来区分提示词的各个部分是提示词编写的常用技巧,但格式化只是结构化提示词的一部分。重要的是提示词内容,格式只是内容的呈现形式。好比你写了一篇文章,重要的是文章中的精彩内容,至于文件格式,用 .docx 还是 .pdf 分享文章都可以。
作者考虑到 Markdown 语法简洁明了、使用广泛,选择了 Markdown 格式来编写提示词。网络上也流传着大量使用 Markdown 语法的结构化提示词。但是需要说明的是,Markdown 格式化并不代表结构化提示词,Markdown 格式也不是唯一的选择,你可以自由地选择你喜欢的格式。
2. 结构化提示词的各个模块都不可调整
法无常法,势无定势;兵无常势,水无常形。提示词编写也是这样,在实践 中,不能机械、死板地套用结构化提示词方法论。
结构化提示词中的各个模块都很灵活,可以调整、删改。例如,“简介”中 的“版本”是为了方便提示词迭代记录使用,与模型表现无关,在实际使用时可以删除。同样,提示词中许多与任务无关的内容在实际使用时都可以删除。也可以依据实际需要增加、删减、修改、调整各个模块。
正确的做法应该是理解结构化提示词背后的思想,掌握其体现的提示词技巧,明白其增强了模型哪方面的表现和缓解了模型哪方面的缺陷。在能够熟练编写提示词后,完全可以跳出原来的模板,按照自己的心意编写提示词,只要编写的提示词能够满足现实需求即可。
3. 结构化提示词必然很长
流行的结构化提示词往往篇幅较长,给许多人留下了结构化提示词冗长的印象。同时,有人反馈说,结构化提示词比一般提示词内容多,在使用 API 时花费更多。 然而,提示词冗长的根本原因并不在于结构化的编写方式。
提示词的长度主要由任务的复杂程度以及模型在该类任务上的能力强弱决定。
任务越复杂,所需的提示词必然越长。模型在该任务上的能力越弱,就需要越长的提示词来引导输入。
如图 2-3 和图 2-4 所示,我们进行了文心一言和 ChatGPT 在创作五言绝句上的对比。在此任务上,文心大模型的能力优于 ChatGPT,一句话即可达到预期效果。相比之下,ChatGPT 在创作五言绝句上的表现不理想,常输出七言绝句或五言律诗。感兴趣的读者可以尝试对比这个任务。

图2-3 文心大模型 3.5 创作五言绝句示例

图2-4 ChatGPT 4o 创作五言绝句示例
为了防止提示词内容的冗余,在使用结构化提示词时,不能简单机械地套用 模板。实际运用中,应灵活应用结构化思想,根据具体情况对提示词中的各部分 内容进行增减和调整。
若希望缩减提示词长度,尤其是API 使用者为了节省费用而减少token 的消 耗,可以考虑从以下几点着手优化:
-
去除提示词中与任务无关的内容,比如结构化提示词中的版本、语言等。
-
避免对模型已知事实过多描述。比如某一专业术语,若询问模型时,模型能够正确回答,则无须在提示词中过多描述。
-
将中文提示词改写为英文。使用英文描述相比中文能够节省 token 数量。
-
采用概括性描述,使用如七言律诗、莎士比亚风格等模型能理解的概括性描述,以节省大模型使用费用。
本篇文章来源于微信公众号: CSDN
文章评论