结构化提示词之LangGPT

构建高性能结构化提示词 – LangGPT

前言

1. 什么是结构化提示词 ?

  • 结构化的思想很普遍,结构化内容也很普遍,日常写作的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构。结构化 Prompt 的思想通俗点来说就是像写文章一样写 Prompt。

2. 为什么使用结构化提示词?

  • 结构化提示词(明确、分步骤、带参数的指令)是高效利用AI的关键,原因如下:

    • 精准导向:明确需求(如“列3个要点”“用学术语气”),避免AI“跑题”,输出更贴合目标。

    • 减少试错:限定格式(如“表格对比”“分步骤解释”),节省反复调整的时间。

    • 激活模型潜力:AI依赖模式识别,结构化指令(如示例、关键词)能触发训练数据中的高质响应模式。

    • 提升用户思维:设计提示词时,需厘清需求优先级,反向促进逻辑梳理。

一句话总结:结构化提示词像“导航指令”,让AI少猜、多做,让你少改、多得。

3. 结构化提示词的核心优势

维度 一般提示词 结构化提示词
输出质量 随机性强,需反复修改 一次到位,精准匹配需求
沟通成本 高(隐含需求需多次澄清) 低(需求透明化)
适用场景 简单、开放性问题 复杂任务、需标准化输出的场景
用户控制力 弱(依赖AI自由发挥) 强(通过参数/格式引导AI)

结构化提示词示例

# Role: 诗人

## Profile

- Author: YZFly
- Version: 0.1
- Language: 中文
- Description: 诗人是创作诗歌的艺术家,擅长通过诗歌来表达情感、描绘景象、讲述故事,具有丰富的想象力和对文字的独特驾驭能力。诗人创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。

### 擅长写现代诗
1. 现代诗形式自由,意涵丰富,意象经营重于修辞运用,是心灵的映现
2. 更加强调自由开放和直率陈述与进行“可感与不可感之间”的沟通。

### 擅长写七言律诗
1. 七言体是古代诗歌体裁
2. 全篇每句七字或以七字句为主的诗体
3. 它起于汉族民间歌谣

### 擅长写五言诗
1. 全篇由五字句构成的诗
2. 能够更灵活细致地抒情和叙事
3. 在音节上,奇偶相配,富于音乐美

## Rules
1. 内容健康,积极向上
2. 七言律诗和五言诗要押韵

## Workflow
1. 让用户以 "形式:[], 主题:[]" 的方式指定诗歌形式,主题。
2. 针对用户给定的主题,创作诗歌,包括题目和诗句。

## Initialization
作为角色 <Role>, 严格遵守 <Rules>, 使用默认 <Language> 与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 <Workflow>。

结构化提示词的几个概念:

  • 标识符

    #, <>等符号(-, []也是)依次表示标题变量,控制内容层级,标识层次结构。这里使用的是Markdown语法

  • 属性词

    Role, Rules, Language, Workflow等,属性词包含语义,是对模块下内容的总结和提示,用于标识语义结构

实现结构化表达并不局限于Markdown,也可以使用其他格式,如JSONYAML等。

如何写好结构化提示词

1. 构建全局思维链

广泛实践证明了在 prompt 中应用思维链(Chain of Thoughts, CoT)是非常有效的。那么一个好的结构化提示词某种意义上就是构建了一个好的全局思维链。LangGPT 中展示的模板就考虑了如下的思维链:

Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用

在构建结构化提示词时可以参考一些优质模板的全局思维链路,熟练掌握后可以快速构建出符合自己要求的结构化提示词。比如当需要控制输出格式时可以增加OutputOutputFormat等模块。

2. 保持上下文语义一致

上下文语义一致包含两个方面,一是格式语义一致,二是内容语义一致

  • 格式语义一致:指标识符的标识功能前后一致

    比如#既用于标识标题又用于标识变量这种行为造成了前后不一致,会导致模型识别 prompt 层级结构造成干扰

  • 内容语义一致:指思维链路上的属性词语义合适

    如 LangGPT 中的Profile属性词原来是Features,但经过实践和思考后更换为了Profile,这让 prompt 的功能更加明确,即角色的简历。掌握结构化思想后,可以针对不同场景选择合适的属性词,从而构建出符合自己需求的结构化提示词。

内容语义一致性还包括属性词和相应模块内容的语义一致。Role部分是角色需要遵循的规则,则不宜将角色技能、描述等大量堆砌在此。

有机结合其他 Prompt 技巧

拥有结构化方法后可以和其他如CoT, ToT, Think step by step 等技巧和方法相结合,提高效果。

从 Prompt 的角度出发提高 LLM 在复杂任务性能表现的方法:

  1. 细节法:给出更清晰的指令,包含更多具体的细节
  2. 分解法:将复杂的任务分解为更简单的子任务 (Let’s think step by step, CoT,LangChain等思想)
  3. 记忆法:构建指令使模型时刻记住任务,确保不偏离任务解决路径(system 级 prompt)
  4. 解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
  5. 投票法:让模型给出多个结果,然后使用模型选择最佳结果 (ToT 等方法)
  6. 示例法:提供一个或多个具体例子,提供输入输出示例 (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 在不同模型间的性能差异问题

参考构建生产及鲁棒高性能 Prompt

参考文章

写在最后

感谢 LangGPT 作者和社区,你们为中文开源社区架起了一把熊熊烈火。