从入门到精通:大模型提示词工程完全指南(附实战案例)

从入门到精通:大模型提示词工程完全指南(附实战案例)

摘要:本文系统梳理提示词工程(Prompt Engineering)的完整知识体系,从基础概念到高阶技巧,结合大量代码示例与实战案例,助你掌握与大模型高效对话的核心能力。无论你是AI新手还是进阶开发者,都能从中获得系统性提升。

一、什么是提示词与提示工程

1.1 提示词(Prompt)的定义

md 复制代码
┌─────────────────────────────────────────┐
│  用户输入                                │
│  "请用Python写一个冒泡排序"              │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│           提示词(Prompt)               │
│  提供给模型的文本片段,用于指导模型      │
│  生成特定输出或回答                      │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│           大语言模型(LLM)              │
│    GPT-4 / Claude / Kimi / 文心一言     │
└──────────────┬──────────────────────────┘
               │
               ▼
┌─────────────────────────────────────────┐
│  模型输出                                │
│  ```python                              │
│  def bubble_sort(arr):                  │
│      ...                                │
│  ```                                 │
└─────────────────────────────────────────┘

核心作用:为模型提供任务上下文,使其准确理解用户意图并生成相关回应。

1.2 提示工程(Prompt Engineering)

提示工程是通过精心设计的提示,显著提高模型性能和输出质量的技术。

md 复制代码
┌────────────────────────────────────────────┐
│            AGI时代的"编程语言"              │
│                                            │
│   传统编程          Prompt工程              │
│   ━━━━━━━━         ━━━━━━━━━━              │
│   Python/Java  →   自然语言提示            │
│   程序员         →   提示工程师            │
│   编译器         →   大语言模型            │
└────────────────────────────────────────────┘

关键认知:Prompt是AGI时代的编程语言,提示工程师是AGI时代的程序员。

二、模型选择与提示策略差异

2.1 推理模型 vs 通用模型

md 复制代码
┌─────────────────────────────────────────────────────────┐
│                    模型类型对比                          │
├─────────────────────┬───────────────────────────────────┤
│     推理模型         │           通用模型                 │
│  (o1/DeepSeek-R1)   │      (GPT-4/Claude/Kimi)          │
├─────────────────────┼───────────────────────────────────┤
│ • 内化推理逻辑       │ • 需显式引导推理步骤               │
│ • 提示语更简洁       │ • 依赖提示语补偿能力短板           │
│ • 直接明确任务目标   │ • 需要CoT提示引导                  │
│ • 避免逐步指导       │ • 需要分步验证结果                 │
└─────────────────────┴───────────────────────────────────┘

2.2 关键原则与误区

md 复制代码
┌────────────────────────────────────────┐
│           提示语设计原则                │
├────────────────────────────────────────┤
│  推理模型:简洁指令,聚焦目标           │
│            "要什么直接说"               │
├────────────────────────────────────────┤
│  通用模型:结构化、补偿性引导           │
│            "缺什么补什么"               │
└────────────────────────────────────────┘

⚠️ 常见误区:
┌────────────────────────────────────────┐
│ ❌ 对推理模型使用启发式提示(角色扮演) │
│    → 可能干扰其逻辑主线                 │
├────────────────────────────────────────┤
│ ❌ 对通用模型"过度信任"                 │
│    → 复杂推理问题需分步验证             │
└────────────────────────────────────────┘

三、基础技巧:6大核心策略

根据OpenAI官方指南,获得更好结果的6大策略:

md 复制代码
┌─────────────────────────────────────────────┐
│         获得更好结果的6大策略                │
├─────────────────────────────────────────────┤
│  1. 编写清晰的说明 (Write clear instructions)│
│  2. 提供参考文本 (Provide reference text)    │
│  3. 拆分复杂任务 (Split complex tasks)       │
│  4. 给模型时间思考 (Give time to think)      │
│  5. 使用外部工具 (Use external tools)        │
│  6. 系统测试更改 (Test changes systematically)│
└─────────────────────────────────────────────┘

3.1 技巧详解与对比

技巧 普通写法 优化写法 效果提升
清晰明确 "写首诗" "用中文写一首四句诗,模仿李白《望庐山瀑布》风格" ⭐⭐⭐⭐⭐
角色扮演 "给我减肥计划" "扮演专业健身教练,利用运动科学和营养学知识定制计划" ⭐⭐⭐⭐
指定角色 "怎么提高英语" "我是5岁幼儿园小朋友,不会写字,怎么提高英语" ⭐⭐⭐⭐
指定格式 "翻译这段话" "翻译为JSON格式:{'原文':'...','译文':'...'}" ⭐⭐⭐⭐⭐
少样本提示 "分类这段文本" "参考以下3个示例...[示例1]...[示例2]...现在分类:" ⭐⭐⭐⭐⭐

3.2 少样本提示(Few-shot)实战

python 复制代码
# 零样本提示(Zero-shot)- 直接指令
prompt_zero = """
将文本分类为中性、负面或正面。
文本:我认为这次假期一般。
情感:
"""

# 少样本提示(Few-shot)- 提供示例
prompt_few = """
"whatpu"是坦桑尼亚的一种小型毛茸茸的动物。
一个使用whatpu这个词的句子的例子是:
我们在非洲旅行时看到了这些非常可爱的whatpus。

"farduddle"是指快速跳上跳下。
一个使用farduddle这个词的句子的例子是:
"""

# 运行代码
from openai import OpenAI
client = OpenAI()

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0  # 随机性最小,保证结果稳定
    )
    return response.choices[0].message.content

print(get_completion(prompt_few))

四、进阶技巧:思维链与推理优化

4.1 提示技术演进路线图

md 复制代码
┌─────────────────────────────────────────────────────────────┐
│                    提示技术演进路线                          │
│                                                             │
│  ┌─────────┐    ┌─────────┐    ┌─────────┐    ┌─────────┐  │
│  │Standard │ →  │ Few-shot│ →  │   CoT   │ →  │   ToT   │  │
│  │Prompting│    │Prompting│    │Prompting│    │Prompting│  │
│  └────┬────┘    └────┬────┘    └────┬────┘    └────┬────┘  │
│       │              │              │              │        │
│       ▼              ▼              ▼              ▼        │
│   直接提问        给示例学习      显式推理过程    多路径探索  │
│   简单任务        模式识别        复杂逻辑计算    策略决策    │
└─────────────────────────────────────────────────────────────┘

4.2 链式思考(Chain-of-Thought, CoT)

核心思想:通过中间推理步骤实现复杂推理能力。

md 复制代码
┌─────────────────────────────────────────────────────────┐
│              标准提示 vs CoT提示 对比                    │
├─────────────────────────────────────────────────────────┤
│  标准提示(错误结果)                                    │
│  Q: 罗杰有5个网球,又买了2罐,每罐3个,现在有几个?      │
│  A: 答案是27  ❌                                        │
├─────────────────────────────────────────────────────────┤
│  CoT提示(正确结果)                                     │
│  Q: 罗杰有5个网球,又买了2罐,每罐3个,现在有几个?      │
│  A: 罗杰一开始有5个球。2罐3个网球等于6个。5+6=11。       │
│     答案是11。  ✅                                       │
└─────────────────────────────────────────────────────────┘

实战代码:数学推理优化

python 复制代码
# 标准少样本提示 - 可能失败
prompt_standard = """
这组数字中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:答案是False。

这组数字中的奇数加起来是偶数:17、10、19、4、8、12、24。
A:答案是True。

这组数字中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
"""

# CoT提示 - 显式推理步骤
prompt_cot = """
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到25。答案为False。

这组数中的奇数加起来是偶数:17、10、19、4、8、12、24。
A:将所有奇数相加(17、19)得到36。答案为True。

这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
"""

print(get_completion(prompt_cot))

4.3 零样本CoT(Zero-shot CoT)

无需示例,仅通过触发词引导推理:

python 复制代码
prompt_zero_cot = """
我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。
然后我吃了1个又再去买了5个苹果。我还剩下多少苹果?
让我们逐步思考。
"""

# 关键技巧:添加"让我们逐步思考"触发推理

4.4 自我一致性(Self-Consistency)

对抗"幻觉"的有效手段:

md 复制代码
┌─────────────────────────────────────────────────────────┐
│                 自我一致性流程                           │
│                                                         │
│   输入问题 ──┬──► 采样推理路径1 ──┐                      │
│             ├──► 采样推理路径2 ──┼──► 投票选出最优答案   │
│             ├──► 采样推理路径3 ──┘                      │
│             └──► 采样推理路径N ...                      │
│                                                         │
│   原理:多次运行相同prompt,通过投票聚合最终结果          │
└─────────────────────────────────────────────────────────┘
python 复制代码
# 运行多次并收集结果
results = []
for i in range(5):  # 采样5次
    result = get_completion(prompt_cot, temperature=0.7)  # 提高温度增加多样性
    results.append(result)

# 简单投票机制(实际应用中需解析答案部分)
from collections import Counter
final_answer = Counter(results).most_common(1)[0][0]

五、高阶应用:思维树与实战案例

5.1 思维树(Tree of Thoughts, ToT)

适用于需要探索或预判战略的复杂任务:

md 复制代码
┌─────────────────────────────────────────────────────────┐
│                    思维树结构                            │
│                                                         │
│                      [Input]                            │
│                         │                               │
│           ┌─────────────┼─────────────┐                 │
│           ▼             ▼             ▼                 │
│       [Thought1]    [Thought2]    [Thought3]            │
│       /       \         │         /       \             │
│   [T1.1]    [T1.2]   [T2.1]    [T3.1]    [T3.2]        │
│      │         │        │          │         │          │
│      └────┬────┘        └────┬────┘        └────┐      │
│           ▼                  ▼                  ▼       │
│       [评估]              [评估]              [评估]     │
│       可行性               可行性               可行性    │
│           │                  │                  │       │
│           └──────────────┬───┴──────────────────┘       │
│                          ▼                              │
│                    [最优路径选择]                        │
│                          │                              │
│                       [Output]                          │
└─────────────────────────────────────────────────────────┘

ToT核心步骤:

  • 在思维链每一步采样多个分支
  • 拓扑展开成一棵思维树
  • 判断每个分支的任务完成度
  • 进行启发式搜索
  • 验证叶子节点的正确性

5.2 实战案例:晚餐盲盒文案生成

这是一个经典的少样本+CoT综合应用案例:

md 复制代码
## 完整Prompt设计(5步构建法)

**第一步:需求背景**
对于独居者或小情侣,"今晚吃什么"是巨大选择困难症。我想开发"晚餐盲盒"产品,抽到什么吃什么。

**第二步:角色设定**
你作为一名优秀的美食作家,协助编写俏皮灵动、趣味盎然的美食短句子。

**第三步:约束条件**
1. 每个句子不超过36个字
2. 符合中国人晚餐场景,不要甜点、饮料、水果
3. 有生活感和浪漫感,文笔优美,比喻恰当
4. 引起用户食欲
5. 比喻句用"是"代替"好像、宛如"
6. 避免平庸比喻,找出奇妙联想

**第四步:少样本示例**
示例1:"罗勒叶缠绕着小牛排,交织摩擦,情欲荡漾。"
→ 巧妙比喻食材形态联想到情感关系

示例2:"张牙舞爪的小龙虾与没能力的领导莫名契合,清蒸还是麻辣?"
→ 把张牙舞爪和职场角色联想,提出"泄愤"方式

示例3:"串串锅里选择今日运势。"
→ 精炼句子,食材形态(多食材似运势签)契合生活选择

**第五步:CoT思考步骤**
请按以下步骤思考:
1. 食物叫什么,包含哪些食材
2. 食物名称或食材有哪些美妙联想
3. 有哪些优美词汇可以搭配
4. 有哪些比喻可形容文化、形态、隐喻、色彩、口感
5. 组合成精炼、优美、巧妙的美食句子

请根据范例,撰写20条符合需求的句子。

六、Prompt的典型构成框架

md 复制代码
┌─────────────────────────────────────────────────────────┐
│                 Prompt标准结构(6要素)                  │
├─────────────────────────────────────────────────────────┤
│  1. 角色(Role)                                          │
│     给AI定义最匹配任务的角色                              │
│     "你是一位软件工程师" / "你是一位小学老师"            │
├─────────────────────────────────────────────────────────┤
│  2. 指示(Instruction)                                   │
│     对任务进行描述                                        │
│     "你的任务是识别信息中的时间、地点、人物"              │
├─────────────────────────────────────────────────────────┤
│  3. 上下文(Context)                                     │
│     与任务相关的背景信息(多轮交互中尤为重要)             │
├─────────────────────────────────────────────────────────┤
│  4. 例子(Examples)                                      │
│     One-shot / Few-shot / In-context Learning           │
│     实践证明对输出正确性有显著帮助                        │
├─────────────────────────────────────────────────────────┤
│  5. 输入(Input)                                         │
│     明确标识用户输入信息                                  │
├─────────────────────────────────────────────────────────┤
│  6. 输出(Output)                                        │
│     输出格式描述,便于后续模块自动解析                    │
│     JSON / XML / Markdown / 特定分隔符                   │
└─────────────────────────────────────────────────────────┘

6.1 完整代码示例:信息提取

python 复制代码
from openai import OpenAI
import os
from dotenv import load_dotenv

load_dotenv()
client = OpenAI()

# 1. 角色与指示
instruction = """
你的任务是识别用户输入的信息,提取出对应的时间(time)、地点(location)、人物(character)。
"""

# 2. 输出格式定义
output = """
并以JSON格式输出,格式如下:
{
    "time": "提取的时间",
    "location": "提取的地点", 
    "character": ["人物1", "人物2"]
}
"""

# 3. 少样本示例
examples = """
在本周末,我将和我的同事王五一起去海洋公园玩耍。:
{"time": "本周末", "location": "海洋公园", "character": ["我", "我的同事王五"]}

昨天晚上,张三和李四在会议室讨论项目方案。:
{"time": "昨天晚上", "location": "会议室", "character": ["张三", "李四"]}
"""

# 4. 用户输入
input_text = "今天晚上我会和我的闺蜜小美一起去酒馆喝酒"

# 5. 组装Prompt
prompt = f"""
{instruction}

{output}

参考示例:
{examples}

用户输入:
{input_text}
"""

def get_completion(prompt, model="gpt-3.5-turbo"):
    messages = [{"role": "user", "content": prompt}]
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0
    )
    return response.choices[0].message.content

print(get_completion(prompt))

七、实用工具与资源

7.1 Prompt调试建议

md 复制代码
┌─────────────────────────────────────────────────────────┐
│              网页端调试最佳实践                          │
├─────────────────────────────────────────────────────────┤
│  ✅ 将System Prompt和User Prompt组合写到界面Prompt里     │
│  ✅ 利用自动引用最近对话内容,避免重复粘贴                 │
│  ✅ 找到好的Prompt后,开新Chat再测试,避免历史干扰        │
│  ✅ 使用temperature=0确保结果可复现                      │
│  ✅ 复杂任务先用Prompt解决,四两拨千斤                   │
│  ❌ 不要迷信Prompt,合理组合传统方法提升确定性            │
└─────────────────────────────────────────────────────────┘

7.2 优质Prompt资源站

网站 链接 特点
PromptBase https://promptbase.com 商业化Prompt交易平台
Awesome ChatGPT Prompts https://github.com/f/awesome-chatgpt-prompts GitHub开源集合
LangChain Hub https://smith.langchain.com/hub 结构化Prompt库
Prompt Genius https://www.promptgenius.site 中文优质Prompt
OpenAI官方课程 见参考资料 系统性学习资料

八、经验总结与核心要点

md 复制代码
┌─────────────────────────────────────────────────────────┐
│                  提示工程核心要点                        │
├─────────────────────────────────────────────────────────┤
│  1. 具体、丰富、少歧义                                   │
│     - 具体:避免抽象,确保问题明确                        │
│     - 详细上下文:提供足够背景信息                        │
│     - 避免歧义:明确多义词含义或重新表述                  │
│     - 逻辑清晰:问题逻辑连贯,避免矛盾                    │
├─────────────────────────────────────────────────────────┤
│  2. 角色定义是关键                                        │
│     想让AI做什么,先给它定义最擅长此事的角色              │
├─────────────────────────────────────────────────────────┤
│  3. 思维链提升复杂任务准确率                              │
│     数学计算、逻辑推理类问题必用CoT                       │
├─────────────────────────────────────────────────────────┤
│  4. 防御Prompt攻击                                        │
│     注意安全性,防止提示注入攻击                          │
├─────────────────────────────────────────────────────────┤
│  5. 持续迭代优化                                          │
│     找到好的Prompt是持续迭代过程,需不断调优              │
└─────────────────────────────────────────────────────────┘
相关推荐
九.九8 小时前
ops-transformer:AI 处理器上的高性能 Transformer 算子库
人工智能·深度学习·transformer
春日见8 小时前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
恋猫de小郭8 小时前
AI 在提高你工作效率的同时,也一直在增加你的疲惫和焦虑
前端·人工智能·ai编程
deephub8 小时前
Agent Lightning:微软开源的框架无关 Agent 训练方案,LangChain/AutoGen 都能用
人工智能·microsoft·langchain·大语言模型·agent·强化学习
大模型RAG和Agent技术实践8 小时前
从零构建本地AI合同审查系统:架构设计与流式交互实战(完整源代码)
人工智能·交互·智能合同审核
老邋遢8 小时前
第三章-AI知识扫盲看这一篇就够了
人工智能
互联网江湖8 小时前
Seedance2.0炸场:长短视频们“修坝”十年,不如AI放水一天?
人工智能
PythonPioneer9 小时前
在AI技术迅猛发展的今天,传统职业该如何“踏浪前行”?
人工智能
冬奇Lab9 小时前
一天一个开源项目(第20篇):NanoBot - 轻量级AI Agent框架,极简高效的智能体构建工具
人工智能·开源·agent
阿里巴巴淘系技术团队官网博客9 小时前
设计模式Trustworthy Generation:提升RAG信赖度
人工智能·设计模式