结构化提示词之LangGPT

结构化提示词之LangGPT
NeoFii构建高性能结构化提示词 – LangGPT
前言
1. 什么是结构化提示词 ?
- 结构化的思想很普遍,结构化内容也很普遍,日常写作的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构。结构化 Prompt 的思想通俗点来说就是像写文章一样写 Prompt。
2. 为什么使用结构化提示词?
结构化提示词(明确、分步骤、带参数的指令)是高效利用AI的关键,原因如下:
精准导向:明确需求(如“列3个要点”“用学术语气”),避免AI“跑题”,输出更贴合目标。
减少试错:限定格式(如“表格对比”“分步骤解释”),节省反复调整的时间。
激活模型潜力:AI依赖模式识别,结构化指令(如示例、关键词)能触发训练数据中的高质响应模式。
提升用户思维:设计提示词时,需厘清需求优先级,反向促进逻辑梳理。
一句话总结:结构化提示词像“导航指令”,让AI少猜、多做,让你少改、多得。
3. 结构化提示词的核心优势
维度 | 一般提示词 | 结构化提示词 |
---|---|---|
输出质量 | 随机性强,需反复修改 | 一次到位,精准匹配需求 |
沟通成本 | 高(隐含需求需多次澄清) | 低(需求透明化) |
适用场景 | 简单、开放性问题 | 复杂任务、需标准化输出的场景 |
用户控制力 | 弱(依赖AI自由发挥) | 强(通过参数/格式引导AI) |
结构化提示词示例
# Role: 诗人 |
结构化提示词的几个概念:
标识符
#
,<>
等符号(-
,[]
也是)依次表示标题
和变量
,控制内容层级,标识层次结构。这里使用的是Markdown语法属性词
Role
,Rules
,Language
,Workflow
等,属性词包含语义,是对模块下内容的总结和提示,用于标识语义结构
实现结构化表达并不局限于Markdown,也可以使用其他格式,如JSON
、YAML
等。
如何写好结构化提示词
1. 构建全局思维链
广泛实践证明了在 prompt 中应用思维链(Chain of Thoughts, CoT)是非常有效的。那么一个好的结构化提示词某种意义上就是构建了一个好的全局思维链。LangGPT 中展示的模板就考虑了如下的思维链:
Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用
在构建结构化提示词时可以参考一些优质模板的全局思维链路,熟练掌握后可以快速构建出符合自己要求的结构化提示词。比如当需要控制输出格式时可以增加Output
或OutputFormat
等模块。
2. 保持上下文语义一致
上下文语义一致包含两个方面,一是格式语义一致,二是内容语义一致
格式语义一致:指标识符的标识功能前后一致
比如
#
既用于标识标题又用于标识变量这种行为造成了前后不一致,会导致模型识别 prompt 层级结构造成干扰内容语义一致:指思维链路上的属性词语义合适
如 LangGPT 中的
Profile
属性词原来是Features
,但经过实践和思考后更换为了Profile
,这让 prompt 的功能更加明确,即角色的简历。掌握结构化思想后,可以针对不同场景选择合适的属性词,从而构建出符合自己需求的结构化提示词。
内容语义一致性还包括属性词和相应模块内容的语义一致。如Role
部分是角色需要遵循的规则,则不宜将角色技能、描述等大量堆砌在此。
有机结合其他 Prompt 技巧
拥有结构化方法后可以和其他如CoT, ToT, Think step by step 等技巧和方法相结合,提高效果。
从 Prompt 的角度出发提高 LLM 在复杂任务性能表现的方法:
- 细节法:给出更清晰的指令,包含更多具体的细节
- 分解法:将复杂的任务分解为更简单的子任务 (Let’s think step by step, CoT,LangChain等思想)
- 记忆法:构建指令使模型时刻记住任务,确保不偏离任务解决路径(system 级 prompt)
- 解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
- 投票法:让模型给出多个结果,然后使用模型选择最佳结果 (ToT 等方法)
- 示例法:提供一个或多个具体例子,提供输入输出示例 (one-shot, few-shot 等方法)
结构化 Prompt 对不同模型的适用性
不同模型的能力维度不同,从最大化模型性能的角度出发,针对性开发相应的 Prompt 是必要的。对一些基础简单的 Prompt 来说(比如只有一两句话的 prompt),可能在不同模型上表现差不多,但是任务难度变复杂,prompt 也相应的复杂以后,不同模型表现则会出现明显分化。结构化 prompt 方法也是如此。
结构化 Prompt 编写对模型基础能力有一定要求,要求模型本身具有较好的指令遵循、结构识别分析能力。
因此并不是一套在A模型上表现效果良好的结构化提示词同样能在B模型上表现良好,需要针对不同模型进行优化。
结构化 Prompt 的开发工作流
推荐基于初版结构化Prompt手工迭代调优直到得到符合需求的Prompt
同时可以参考LangGPT中自动生成初版结构化 Prompt 的方法,通过自动生成初版结构化 Prompt 来减少手工编写的复杂度,同时可以减少手工调试的次数。
结构化 Prompt 的局限性
结构化 Prompt 依赖于基座模型能力,并不能解决模型本身的问题,结构化 Prompt 并不能突破大模型 Prompt 方法本身的局限性。
已知的无法解决的问题:
- 大模型本身的幻觉问题
- 大模型本身知识老旧问题
- 大模型的数学推理能力弱问题 (解数学问题)
- 大模型的视觉能力弱问题(构建 SVG 矢量图等场景)
- 大模型字数统计问题(不论是字符数和 token 数,大模型都无法统计准确。需要输出指定字数时,将数值设定的高一些,后期自己调整一下,比如希望他输出100字文案,告诉他输出150字。)
- 同一 Prompt 在不同模型间的性能差异问题
参考文章
- LangGPT —— 让人人都能编写高质量 Prompt
- 如何写好Prompt: 结构化
- 为什么结构化 Prompt 如此有效?
- 构建生产级鲁棒高性能 Prompt
- 提升大模型可靠性的 prompt 方法汇总
- 结构化的Prompts, 用于各种大语言模型
写在最后
感谢 LangGPT 作者和社区,你们为中文开源社区架起了一把熊熊烈火。