
汇总
本文深入探讨了结构化提示词(Structured Prompt)的设计方法和实践技巧。从传统的角色扮演式提示词出发,介绍了结构化提示词的核心概念、语法规范、模块组成以及实际应用示例。通过对比传统方法和结构化方法,展示了结构化提示词在提升AI交互质量方面的显著优势。文章提供了完整的知识探索专家提示词模板,并详细解释了各个模块的作用和设计思路,帮助读者快速掌握这一高效的提示词工程技巧。
如何写好 Prompt:结构化
背景
最早接触 Prompt Engineering 时,学到的 Prompt 技巧都是:
- 你是一个 XX 角色…
- 你是一个有着 X 年经验的 XX 角色…
- 你会 XX,不要 YY..
- 对于你不会的东西,不要瞎说!
- …
对比什么技巧都不用,直接像使用搜索引擎一样提问,上面的技巧对于回复的效果确实有着明显提升。在看了 N 多的所谓”必看的 Prompt 10 大技巧””价值 2 万元的珍藏 Prompt”后,发现大家都在上面这些技巧上打转。
直到有一天,在 GitHub 上看到了 JushBJJ/Mr.-Ranedeer-AI-Tutor,才发现原来 Prompt 还可以这样写:原来可以在运行中调整各种变量并立即生效,原来对话语言可以随时更改,原来可以像编程一样,提前预置好命令供用户调用…
再之后发现了 GitHub – yzfly/LangGPT,这个项目提出的简版结构化 Prompt,非常易于学习和上手。
看到了优秀的榜样,剩下的就是拆解学习了,从中学习到的第一个 Prompt Engineering 技巧就是:结构化 Prompt。
什么是结构化?
结构化:对信息进行组织,使其遵循特定的模式和规则,从而方便有效理解信息。
—— by GPT-4
从上面的 Prompt 中最直观的感受就是结构化,将各种想要的、不想要的,都清晰明确地表述在设计好的框架结构中。这种结构化的方式不仅让提示词更加清晰易读,更重要的是能够帮助 AI 更好地理解和执行任务。
结构化的优势
- 清晰性:通过明确的模块划分,让每个部分的作用一目了然
- 可维护性:结构化的提示词更容易修改和迭代
- 可复用性:良好的结构可以方便地应用到不同的场景
- 一致性:标准化的格式保证了输出的一致性
- 扩展性:可以轻松添加新的模块或功能
语法
这个结构支持 Markdown 语法,也支持 YAML 语法,甚至纯文本手动敲空格和回车都可以。我个人习惯使用 Markdown 语法,一方面便于集成在各种笔记软件中进行展示,另一方面考虑到 ChatGPT 的训练语料库中该类型的材料更多一些。
Markdown 语法示例
# Role: 角色名称
## Profile
- author: 作者名
- version: 版本号
- language: 语言
- description: 描述
## Goals: 目标描述
## Constrains: 约束条件
## Skills: 技能列表
## Workflow: 工作流程
# Initialization: 初始化对话
YAML 语法示例
Role: 角色名称
Profile:
author: 作者名
version: 版本号
language: 语言
description: 描述
Goals: 目标描述
Constrains:
- 约束条件1
- 约束条件2
Skills:
- 技能1
- 技能2
Workflow: 工作流程
Initialization: 初始化对话
结构
结构中的信息,可以根据自己需要进行增减,从中总结的常用模块包括:
# Role: <name>
指定角色会让 GPT 聚焦在对应领域进行信息输出。
作用:
- 明确 AI 的身份定位
- 限定回答的专业领域
- 引导 AI 采用相应的语气和风格
示例:
Role: 知识探索专家Role: Python 编程导师Role: 产品经理助手
## Profile
包含 author/version/description 等元信息,用于 Credit 和迭代版本记录。
字段说明:
author:提示词作者,便于追溯和交流version:版本号,方便迭代管理language:默认对话语言description:角色功能描述
示例:
## Profile
- author: Arthur
- version: 0.8
- language: 中文
- description: 我是一个专门用于提问并解答有关特定知识点的 AI 角色。
## Goals
一句话描述 Prompt 目标,让 GPT Attention 聚焦起来。
设计原则:
- 简洁明了,一句话概括
- 明确核心目标
- 避免模糊不清的表述
示例:
Goals: 提出并尝试解答有关用户指定知识点的三个关键问题:其来源、其本质、其发展。Goals: 帮助用户编写高质量的 Python 代码,并提供最佳实践建议。
## Constrains
描述限制条件,其实是在帮 GPT 进行剪枝,减少不必要分支的计算。
常见约束类型:
- 知识边界:明确告知不知道的内容
- 输出格式:指定回答的格式要求
- 行为规范:限制某些行为或回答方式
- 长度限制:控制回答的长度
- 语言风格:规定语气和表达方式
示例:
## Constrains
- 对于不在你知识库中的信息,明确告知用户你不知道
- 你不擅长客套,不会进行没有意义的夸奖和客气对话
- 解释完概念即结束对话,不会询问是否有其它问题
- 回答控制在 500 字以内
## Skills
描述技能项,强化对应领域的信息权重。
技能描述要点:
- 突出专业能力
- 强调独特优势
- 包含软技能(如沟通、排版等)
- 体现价值观和工作态度
示例:
## Skills
- 具有强大的知识获取和整合能力
- 拥有广泛的知识库,掌握提问和回答的技巧
- 拥有排版审美,会利用序号、缩进、分隔线和换行符等等来美化信息排版
- 擅长使用比喻的方式来让用户理解知识
- 惜字如金,不说废话
## Workflow
重点中的重点,你希望 Prompt 按什么方式来对话和输出。
工作流程设计要点:
- 步骤清晰,逻辑连贯
- 每个步骤有明确的输出要求
- 考虑异常情况的处理
- 提供可复用的框架
示例:
## Workflows
你会按下面的框架来扩展用户提供的概念,并通过分隔符、序号、缩进、换行符等进行排版美化:
1. 它从哪里来?━━━━━━━━━━━━━━━━━━
讲解清楚该知识的起源,它是为了解决什么问题而诞生。
然后对比解释一下:它出现之前是什么状态,它出现之后又是什么状态?
2. 它是什么?━━━━━━━━━━━━━━━━━━
讲解清楚该知识本身,它是如何解决相关问题的?
再说明一下:应用该知识时最重要的三条原则是什么?
接下来举一个现实案例方便用户直观理解:
- 案例背景情况(遇到的问题)
- 使用该知识如何解决的问题
- optional: 真实代码片断样例
3. 它到哪里去?━━━━━━━━━━━━━━━━━━
它的局限性是什么?
当前行业对它的优化方向是什么?
未来可能的发展方向是什么?
# Initialization
冷启动时的对白,也是一个强调需注意重点的机会。
初始化内容:
- 友好的欢迎语
- 自我介绍
- 工作流程说明
- 注意事项提醒
示例:
# Initialization
作为知识探索专家,我拥有广泛的知识库和问题提问及回答的技巧,严格遵守尊重用户和提供准确信息的原则。我会使用默认的中文与您进行对话,首先我会友好地欢迎您,然后会向您介绍我自己以及我的工作流程。
示例
知识探索专家
# Role: 知识探索专家
## Profile
- author: Arthur
- version: 0.8
- language: 中文
- description: 我是一个专门用于提问并解答有关特定知识点的 AI 角色。
## Goals
提出并尝试解答有关用户指定知识点的三个关键问题:其来源、其本质、其发展。
## Constrains
- 对于不在你知识库中的信息,明确告知用户你不知道
- 你不擅长客套,不会进行没有意义的夸奖和客气对话
- 解释完概念即结束对话,不会询问是否有其它问题
## Skills
- 具有强大的知识获取和整合能力
- 拥有广泛的知识库,掌握提问和回答的技巧
- 拥有排版审美,会利用序号、缩进、分隔线和换行符等等来美化信息排版
- 擅长使用比喻的方式来让用户理解知识
- 惜字如金,不说废话
## Workflows
你会按下面的框架来扩展用户提供的概念,并通过分隔符、序号、缩进、换行符等进行排版美化:
1. 它从哪里来?━━━━━━━━━━━━━━━━━━
讲解清楚该知识的起源,它是为了解决什么问题而诞生。
然后对比解释一下:它出现之前是什么状态,它出现之后又是什么状态?
2. 它是什么?━━━━━━━━━━━━━━━━━━
讲解清楚该知识本身,它是如何解决相关问题的?
再说明一下:应用该知识时最重要的三条原则是什么?
接下来举一个现实案例方便用户直观理解:
- 案例背景情况(遇到的问题)
- 使用该知识如何解决的问题
- optional: 真实代码片断样例
3. 它到哪里去?━━━━━━━━━━━━━━━━━━
它的局限性是什么?
当前行业对它的优化方向是什么?
未来可能的发展方向是什么?
# Initialization
作为知识探索专家,我拥有广泛的知识库和问题提问及回答的技巧,严格遵守尊重用户和提供准确信息的原则。我会使用默认的中文与您进行对话,首先我会友好地欢迎您,然后会向您介绍我自己以及我的工作流程。
实践建议
1. 从简单开始
不要一开始就追求完美的结构化提示词。可以先从基本的角色设定开始,逐步添加其他模块。
2. 迭代优化
提示词工程是一个持续迭代的过程。根据实际使用效果,不断调整和优化各个模块的内容。
3. 测试验证
每次修改后都要进行充分测试,验证提示词的有效性和稳定性。
4. 积累模板
将常用的提示词结构保存为模板,方便后续复用和快速创建新的提示词。
5. 分享交流
将自己的提示词模板分享给社区,获取反馈,共同进步。
常见问题
Q: 结构化提示词一定比非结构化的好吗?
A: 不一定。对于简单的任务,非结构化的提示词可能已经足够。但对于复杂任务、需要多次交互的场景,结构化提示词的优势会更加明显。
Q: 必须包含所有模块吗?
A: 不需要。根据具体需求选择合适的模块组合。核心模块是 Role、Goals 和 Workflow,其他模块可以根据需要添加。
Q: 如何判断提示词的质量?
A: 主要从以下几个方面评估:
- 输出的准确性和相关性
- 回答的一致性
- 交互的流畅性
- 是否满足预期目标
AI 解读
本文系统性地介绍了结构化提示词的设计方法和实践技巧,是 Prompt Engineering 领域的一篇实用指南。文章的核心价值在于:
- 方法论清晰:从传统提示词的局限性出发,自然引出结构化提示词的优势,逻辑连贯,易于理解。
- 结构完整:详细介绍了结构化提示词的各个组成部分(Role、Profile、Goals、Constrains、Skills、Workflow、Initialization),每个模块都有明确的定义和示例,具有很强的可操作性。
- 实践性强:提供了完整的”知识探索专家”提示词模板,读者可以直接使用或作为参考进行修改,降低了学习门槛。
- 扩展性好:文章不仅介绍了基础结构,还提供了语法选择(Markdown/YAML)、实践建议和常见问题解答,帮助读者深入理解和应用。
从技术角度看,结构化提示词的本质是将自然语言的模糊性转化为结构化的明确性,通过模块化的设计让 AI 更好地理解任务需求和输出规范。这种方法特别适合需要多次交互、复杂任务处理或需要一致输出质量的场景。
建议读者在阅读本文后,结合自己的实际需求,尝试创建自己的结构化提示词模板,并通过实践不断优化和改进。提示词工程是一个需要持续学习和实践的领域,结构化方法为我们提供了一个良好的起点。
参考链接:
- https://platform.claude.com/docs/zh-CN/build-with-claude/prompt-engineering/claude-prompting-best-practices
- https://cloud.tencent.com/developer/article/2400502
- https://langgptai.feishu.cn/wiki/ASXOwDbTEiH9CUkXFA5cLHumn88
- https://aws.amazon.com/cn/blogs/china/sixteen-ways-of-prompt-engineering/
- https://www.promptingguide.ai/zh