你写 prompt 是不是还在「玄学调参」?Google 这篇 800 引论文把这件事变成了「软件工程」

  • 关联论文:2302.11382

你有没有过这种崩溃瞬间 😭:

你让 ChatGPT「帮我写一封道歉信」——它给你写了 200 字小学生作文。 你换个说法「请以专业公关的口吻,重写一封致客户的道歉信」——诶?突然就好用了。 你换回原 prompt 再跑一次——又坏了

这不是 GPT「飘」,是你撞上了 prompt 工程的暗礁

没有方法论,全靠试错。换个模型、换个版本、换个任务,prompt 就要从零重新调。 同一个团队里,A 写的 prompt 和 B 写的 prompt 风格完全不同,没有可继承的经验沉淀。 你好不容易试出一个「神级 prompt」,下一个新人接手项目时根本不知道你当时为什么这么写

听起来是不是很熟悉?

这就是 1990 年代「面向对象编程」刚兴起时软件开发的样子——大家各写各的,没有设计模式(Design Pattern),代码靠口口相传。

2023 年 2 月,Vanderbilt 大学的 Jules White 团队发了一篇论文(White et al., A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPTarXiv 2302.11382),直接借用了软件工程里「设计模式」的思想——把「好用 prompt 的经验」沉淀成一套可复用、可组合、可跨域迁移的 16 个模板

今天这篇科普,我就把它讲透——哪怕你完全不会写代码,10 分钟内也能搞懂「为什么 prompt 也需要设计模式」「16 个 Pattern 各自管什么场景」「为什么组合多个 Pattern 比单次调参更稳」


TL;DR(30 秒版)

  • 解决的问题:Prompt Engineering 当时没有任何术语、没有结构化方法论,优秀 prompt 经验无法沉淀、无法跨人跨模型复用。
  • 本文贡献:1) 概念:把软件工程「设计模式」思想系统化引入 Prompt Engineering,首次提出 Prompt Pattern Catalog(prompt 模式目录);2) 结构:每个 Pattern 由 Intent / Context / Problem / Template / Example / Consequences 六要素组成;3) 生态:配套 Coursera 课程,开源 Pattern 文档模板,让社区可以共同积累。
  • 为什么重要:它把「prompt 调参」从手工业变成了软件工程——后续 LangChain / LlamaIndex 的 PromptTemplate、Agent 的 system prompt 设计、AI safety 的输入过滤思路,全都直接或间接受益于这套模式化思想。被引 800+ 次,是 Prompt Engineering 这个学科的「立规矩」论文之一
  • 一个洞察好的 prompt 不是「一句话神谕」,而是「多层 Pattern 叠加」。Output Initialization 控制格式 + Chain of Thought 控制推理 + Persona 控制语气 + Safety 守住边界——组合后形成 1+1>2 的工程产物。

一、Prompt 工程师的「1990 年代」:为什么大家都在重复造轮子?

2018 年 GPT-1 出来,2020 年 GPT-3 出来,2022 年 ChatGPT 出来——模型越来越强,但「如何问一个好问题」这件事,反而越来越混乱

同一个任务(生成代码注释),网上流传着 200 种 prompt 写法,每种都说「我用这个打榜打到 95%」。 换个模型版本(GPT-3.5 → GPT-4),原来稳定的 prompt 突然就崩了,没人知道为什么。 团队里高级工程师凭经验调 prompt,初级工程师靠 Google 搜「最佳 prompt 模板」——没有知识沉淀机制

这篇论文的洞察是:

软件工程曾经解决过一模一样的难题

1994 年 GoF(Gang of Four)出版《Design Patterns: Elements of Reusable Object-Oriented Software》,把 OOP 时代 20 年里散落在各处的「优秀代码经验」收编成 23 个可命名、可复用、可传授的设计模式——从此「Singleton」「Observer」「Factory Method」成了所有计算机专业学生的必修词汇。

Prompt Engineering 也需要一次同样的「模式化整理」


二、Prompt Pattern 长什么样?六要素拆解

论文定义的 Prompt Pattern 有 6 个固定要素:

要素 含义 类比软件工程的对应物
Intent(意图) 这个 Pattern 解决什么问题 设计模式的「Name + Intent」段
Context(上下文) 适用于什么场景 设计模式的「Applicability」段
Problem(问题) 不用这个 Pattern 时会踩什么坑 设计模式的「Motivation / Forces」段
Template(模板) Prompt 的结构化文字模板 设计模式的「Structure」段
Example(示例) 在某个真实领域填好字段的样例 设计模式的「Sample Code」段
Consequences(后果) 用了这个 Pattern 之后会有什么 trade-off 设计模式的「Consequences」段

举个例子——Output Initialization Pattern(输出初始化模式):

  • Intent:让 LLM 第一次输出就符合预期格式(比如 JSON / Markdown 表格 / 固定字段顺序),避免后期解析失败。
  • Context:你需要把 LLM 的输出直接喂给下游程序(数据库、API、前端组件),格式错误 = 系统崩溃。
  • Problem:LLM 默认「自由发挥」,可能写散文、写代码、写半截 JSON…… 解析时 80% 概率失败。
  • Template"请以 JSON 格式返回结果,必须包含以下字段:{field1, field2, field3}。不要添加任何额外字段或说明文字。"
  • Example"请以 JSON 格式返回用户画像,必须包含 age、gender、interest 三个字段。返回:{\"age\": 28, \"gender\": \"female\", \"interest\": \"reading\"}"
  • Consequences:✅ 格式稳定,解析 0 失败;⚠️ 模板字段必须穷举,遇到边角情况 LLM 会瞎填。

——你看,是不是和「Factory Method 模式的 Intent / Applicability / Sample Code」几乎一一对应?


三、16 个 Pattern 的五大类:每类管一件事

论文把 16 个 Pattern 分成 5 大类(部分细节以论文正文为准):

1. Output Initialization(输出初始化类) - 管「格式约束」——JSON、表格、特定 schema - 典型 Pattern:Output IndicatorFormat Restriction - 工程场景:所有 production LLM 应用的「接口稳定层」都靠它

2. Chain of Thought(思维链类) - 管「推理过程」——分步思考、显式中间状态 - 典型 Pattern:Chain of Thought PromptingSelf-Ask - 工程场景:数学、逻辑、多跳推理任务

3. Persona / Role Assignment(角色分配类) - 管「语气 & 视角」——专业公关、资深工程师、初级用户…… - 典型 Pattern:Persona PatternAudience Persona Pattern - 工程场景:客服 bot、行业顾问、教育场景

4. Safety Patterns(安全防护类) - 管「边界守住」——防止 Prompt Injection、限制有害输出、隔离用户输入 - 典型 Pattern:Input SanitizationOutput ValidationFlipped Interaction - 工程场景:任何暴露公网的 LLM 应用

5. Compositional Patterns(组合类) - 管「Pattern 叠加」——多个 Pattern 如何协同,顺序如何排 - 典型 Pattern:Pattern CompositionConflict Resolution - 工程场景:复杂 Agent / 多轮对话 / 工具调用


四、核心洞察:为什么「组合 Pattern」比「单次调参」更强?

这是论文最重要的工程贡献之一。

传统做法:

写一个 500 字的 prompt,把所有约束、格式、语气、推理步骤全塞进去 → LLM 经常「漏掉其中一条」。

论文推荐的做法:

base_prompt = "你是一名资深金融分析师。"

# 1. Persona Pattern 加上角色
prompt = base_prompt

# 2. Output Initialization Pattern 加上格式
prompt = apply_pattern("OutputIndicator", prompt, format="JSON")

# 3. Chain of Thought Pattern 加上推理步骤
prompt = apply_pattern("ChainOfThought", prompt, steps=["读取数据", "识别异常", "归因分析"])

# 4. Safety Pattern 加上防御
prompt = apply_pattern("InputSanitization", prompt, ignore_user_instructions_above=True)

send_to_LLM(prompt)

为什么这样更好?

  1. 可调试:4 个 Pattern 独立,出了问题能定位到具体那一个。
  2. 可复用:同一组 Pattern 跨任务 / 跨模型 / 跨团队迁移,只要换字段。
  3. 可组合:复杂任务(如 RAG + Agent + Tool Use)本质就是「多个 Pattern 叠加 + 外部工具调用」——这正是 LangChain / LlamaIndex / AutoGen 等框架的核心设计哲学。
  4. 可版本化:Pattern 仓库用 git 管理,每次模型升级跑回归测试套件。

用一句话总结这个工程哲学

不要试图写一个「完美的 prompt」;要建立一个「可组合的 Pattern 库」,让 prompt 像乐高一样搭出来。


五、为什么这篇 2023 年的论文到 2026 年还在被引用?

最直接的理由是——它解决了一个「跨模型、跨时间、跨团队」都成立的问题,而不是「特定模型的特定 trick」:

论文提出的 16 个 Pattern 不绑定 GPT-3.5、GPT-4、Claude、Gemini 任何具体模型。 它的抽象层级在「如何结构化一段 prompt」,而不是「如何在某个模型上刷分」。

论文的局限(反方视角)也很清楚:

  • 量化评估不足:原文主要靠案例展示 Pattern 效果,没有大规模 A/B 实验数据。被引 800+ 次主要是因为「概念有用」而不是「数字碾压」。
  • 2026 年模型演进后部分 Pattern 必要性下降:比如 CoT 在 GPT-4o / Claude 3.5 上几乎是默认行为,显式「请一步步思考」有时候反而拖慢输出。
  • 5 个大类划分是后人整理:论文原文未给出 16 个 Pattern 的统一分类框架,本文采用的「5 大类」是结合后续研究推断,原文结构可能略有不同。
  • 没覆盖 LLM Agent 时代:2024-2026 年的 Tool Use / Function Call / Multi-Agent / Memory Management 这些新范式,原文完全没有涉及。

但即便如此——它完成了「把 prompt 从艺术变成工程」的范式转换

现在的 LangChain PromptTemplate、LlamaIndex 的 Query Engine、AutoGen 的 System Message 设计、Anthropic 的 Claude Prompt Engineering 指南、OpenAI 的 GPT Best Practices 文档——所有这些「结构化 prompt 设计」的工业实践,都在用某种形式的「Pattern 抽象」

这就是为什么 3 年后,prompt pattern 这个思想还是 AI 应用工程师每天在用的东西


六、一张图带走(适合发小红书 / 朋友圈)

📚 Prompt Pattern 是什么?

→ 软件工程「Design Pattern」的思想平移到 Prompt Engineering
→ 把好用的 prompt 经验,沉淀成可命名、可组合、可复用的「模板」

🎯 6 要素:Intent / Context / Problem / Template / Example / Consequences

📦 5 大类:Output Initialization / Chain of Thought / Persona / Safety / Composition

🧱 核心思想:好 prompt 不是「一句话神谕」,是「多个 Pattern 组合」

✅ 工程价值:可调试 / 可复用 / 可组合 / 可版本化 ——
   让 prompt 从「玄学」变成「软件工程」

写在最后

2026 年你打开任何 LLM 应用的 system prompt——客服 bot、AI 助手、Agent workflow、RAG pipeline——你都会看到「角色设定 + 格式约束 + 推理步骤 + 边界防护」的层叠结构

这不是某家公司「拍脑袋」的设计,是这篇 2023 年论文立下的工程规矩

下一个让你觉得「这个 prompt 怎么写得这么稳」的瞬间——大概率是某位工程师从 Pattern 库里像搭乐高一样拼出来的


原文:White et al., "A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT", arXiv 2302.11382, 2023.2 影响:被引 800+ 次(OpenAlex),Prompt Engineering 学科「立规矩」级论文。 延伸阅读:Jules White 的 Coursera 课程 "Prompt Engineering for ChatGPT";LangChain PromptTemplate 文档。


三个标题变体

  1. 《为什么 ChatGPT 时灵时不灵?Google 这篇 800 引论文给出了答案——prompt 也是「软件工程」》(痛点向,强调 prompt 不稳的根源)
  2. 《把「设计模式」思想搬进 prompt:Vanderbilt 2023 年这套 16 个模板,悄悄统治了你手机里每个 LLM》(历史脉络向,强调范式影响)
  3. 《别再「玄学调参」了!Prompt Engineering 的「Design Pattern」到底长什么样?》(教学向,强调可上手的方法论)

小红书风格卡片文案

🤖 你写 prompt 是不是还在「玄学调参」?

你有没有过这种崩溃瞬间 😭:

让 ChatGPT 写道歉信,它给你写 200 字小学生作文。换种说法突然就好用了,换回原 prompt 又崩了——这不是 GPT 飘,是你撞上了 prompt 工程的暗礁

🎯 arXiv 2302.11382(被引 800+)一次说透

Vanderbilt 团队把软件工程里「设计模式」的思想搬进 prompt,提出 Prompt Pattern Catalog——16 个可命名、可复用、可组合的模板。

📋 6 要素结构(每个 Pattern 都有):

要素 含义
Intent 解决什么问题
Context 适用什么场景
Problem 不用会踩什么坑
Template 结构化文字模板
Example 真实领域填字段样例
Consequences 用了之后的 trade-off

📦 5 大类 Pattern

  • Output Initialization → JSON / 表格 / schema 格式约束
  • Chain of Thought → 分步推理、显式中间状态
  • Persona / Role Assignment → 「你是资深公关 / 工程师 / 医生」
  • Safety Patterns → 防 Prompt Injection + 输入过滤
  • Compositional Patterns → 多个 Pattern 如何叠加

🧱 核心工程哲学

不要试图写一个「完美的 prompt」;要建立一个「可组合的 Pattern 库」,让 prompt 像乐高一样搭出来。

可调试 / 可复用 / 可组合 / 可版本化——让 prompt 从「玄学」变成「软件工程」

⚠️ 必须警惕的 4 个坑

  • Pattern 必要性下降:2026 年模型演进后,部分 Pattern(如显式 CoT)已是默认行为;
  • 5 大类划分非原文:本文分类是结合后续研究推断,论文原文未给出统一框架;
  • 量化评估不足:原文主要靠案例展示,没有大规模 A/B 实验;
  • 不覆盖 LLM Agent:2024+ 的 Tool Use / Function Call / Multi-Agent 原著未涉及。

📎 论文 ID:2302.11382

💬 你的团队 prompt 是「写一个超长 prompt 一把梭」还是「拆成多个 Pattern 组合」?评论区聊聊你的实战经验!

PromptEngineering #PromptPattern #LLM #ChatGPT #AI工程化 #设计模式 #DesignPattern #LangChain #AutoGen #AI科普 #深度学习 #Prompt调优 #AI应用开发 #Agent设计