【大模型实战笔记 6】Prompt Engineering 提示词工程

《深入解析Prompt Engineering:从基础到高级技巧的完整指南》

  • [《深入解析Prompt Engineering:从基础到高级技巧的完整指南》](#《深入解析Prompt Engineering:从基础到高级技巧的完整指南》)
    • [1. 什么是Prompt Engineering?](#1. 什么是Prompt Engineering?)
      • [1.1 Prompt的基本概念](#1.1 Prompt的基本概念)
    • [2. Prompt Engineering最佳实践](#2. Prompt Engineering最佳实践)
      • [2.1 核心原则](#2.1 核心原则)
        • [1. 明确目标](#1. 明确目标)
        • [2. 提供上下文](#2. 提供上下文)
        • [3. 使用具体的指示](#3. 使用具体的指示)
        • [4. 提供示例](#4. 提供示例)
        • [5. 使用分步指示](#5. 使用分步指示)
      • [2.2 高级技巧](#2.2 高级技巧)
        • [6. 控制输出长度](#6. 控制输出长度)
        • [7. 使用占位符和模板](#7. 使用占位符和模板)
        • [8. 反复试验和调整](#8. 反复试验和调整)
    • [3. 核心提示技术详解](#3. 核心提示技术详解)
      • [3.1 Zero-shot、One-shot和Few-shot提示](#3.1 Zero-shot、One-shot和Few-shot提示)
      • [3.2 Chain-of-Thought (CoT) 提示](#3.2 Chain-of-Thought (CoT) 提示)
      • [3.3 ReAct 框架](#3.3 ReAct 框架)
      • [3.4 Reflexion 技术](#3.4 Reflexion 技术)
    • [4. 结构化输出设计](#4. 结构化输出设计)
      • [4.1 JSON格式输出](#4.1 JSON格式输出)
      • [4.2 Markdown格式报告](#4.2 Markdown格式报告)
      • [4.3 表格格式数据](#4.3 表格格式数据)
    • [5. 实际应用场景](#5. 实际应用场景)
      • [5.1 代码生成](#5.1 代码生成)
      • [5.2 数据处理](#5.2 数据处理)
      • [5.3 文本分类](#5.3 文本分类)
      • [5.4 创意生成](#5.4 创意生成)
    • [6. 高级提示工程技术](#6. 高级提示工程技术)
      • [6.1 角色提示](#6.1 角色提示)
      • [6.2 种子词提示](#6.2 种子词提示)
      • [6.3 知识生成提示](#6.3 知识生成提示)
    • [7. 图像提示工程技术](#7. 图像提示工程技术)
      • [7.1 明确图像生成目标](#7.1 明确图像生成目标)
      • [7.2 提供详细描述](#7.2 提供详细描述)
      • [7.3 使用多模态提示](#7.3 使用多模态提示)
    • [8. 实战框架:CRISPE模型](#8. 实战框架:CRISPE模型)
    • [9. 总结](#9. 总结)

1. 什么是Prompt Engineering?

Prompt Engineering(提示词工程)是设计和优化输入提示(prompt)以获得预期输出的过程。在与大型语言模型(如ChatGPT、GPT-4)交互时,如何构造提示会显著影响模型的回答质量。

1.1 Prompt的基本概念

Prompt是一种人为构造的输入序列,用于引导GPT模型根据先前输入的内容生成相关的输出。简单来说,就是你向模型提供的"提示词"。

示例对比

  • 简单提示:"告诉我关于猫的事情。"
  • 优化提示:"请详细描述猫的生物学特征、行为习惯以及它们在不同文化中的象征意义。"

2. Prompt Engineering最佳实践

2.1 核心原则

1. 明确目标

明确你希望模型完成的任务或回答的问题。

  • 目标不明确:"告诉我关于气候变化的事情。"
  • 目标明确:"请简要描述气候变化的主要原因及其对农业的影响。"
2. 提供上下文

为模型提供必要的背景信息或上下文,以帮助其理解任务。

  • 无上下文:"解释一下微积分。"
  • 有上下文:"作为一名高中生,我正在学习微积分。请用简单的语言解释一下微积分的基本概念。"
3. 使用具体的指示

使用明确的指示和要求,避免模糊不清的提示。

  • 模糊指示:"写一篇关于技术的文章。"
  • 具体指示:"请写一篇关于人工智能在医疗领域应用的文章,包含以下几点:应用场景、优势和挑战。"
4. 提供示例

通过提供示例来展示你期望的输出格式或内容。

python 复制代码
# 无示例:"生成一个关于产品的报告。"
# 有示例:"生成一个关于产品的报告,格式如下:
# --产品名称:
# --价格:
# --特点:
# --优点:
# --缺点:"
5. 使用分步指示

对于复杂任务,分解为多个步骤,逐步引导模型完成。

  • 一步完成:"解释并解决这个数学问题:2x + 3 = 7。"
  • 分步指示:"首先,解释如何解方程。然后,解方程2x + 3 = 7。"

2.2 高级技巧

6. 控制输出长度

通过提示控制输出的长度,确保内容简洁或详细。

  • 无长度控制:"解释一下量子力学。"
  • 有长度控制:"用不超过100字解释量子力学的基本概念。"
7. 使用占位符和模板

使用占位符和模板来指示需要填充的内容或格式。

  • 无模板:"生成一个用户注册表单。"
  • 有模板:"生成一个用户注册表单,包含以下字段:用户名、密码、邮箱、电话号码。"
8. 反复试验和调整

不断试验和调整提示,观察模型的输出,并根据需要进行优化。

3. 核心提示技术详解

3.1 Zero-shot、One-shot和Few-shot提示

Zero-shot:模型在没有任何示例的情况下完成任务。

复制代码
提示:"翻译这句话:'The cat is on the roof.'"
回答:"猫在屋顶上。"

One-shot:提供一个示例帮助模型理解任务。

复制代码
提示:"翻译以下句子:'The dog is in the garden.' -> '狗在花园里。' 'The cat is on the roof.' ->"
回答:"猫在屋顶上。"

Few-shot:提供多个示例帮助模型理解复杂任务。

3.2 Chain-of-Thought (CoT) 提示

通过展示模型思考过程的步骤来解决复杂问题。

复制代码
提示:"如果一个苹果和一个香蕉的总价是3美元,一个苹果的价格是2美元,那么一个香蕉的价格是多少?请展示你的思考过程。"
回答:"首先,苹果的价格是2美元。总价是3美元,所以香蕉的价格是3美元减去2美元,等于1美元。"

3.3 ReAct 框架

结合反应(Reaction)和行动(Action)的提示技术。

复制代码
提示:"你是一个虚拟助手。用户问:'我今天应该穿什么衣服?' 你需要根据天气情况给出建议。步骤1:查询天气。步骤2:根据天气给出建议。"
回答:
- 步骤1:"查询天气:今天的天气是晴天,温度在25~30度之间。"
- 步骤2:"建议:今天适合穿轻便的夏装,比如T恤和短裤。"

3.4 Reflexion 技术

模型在生成初步答案后,反思并可能修改其回答。

复制代码
提示:"解释为什么天空是蓝色的。"
初步回答:"因为大气中的氧气和氮气散射阳光中的蓝色光。"
反思:"这解释不够准确。实际上,蓝色光被散射得更多是因为瑞利散射效应。"
修改回答:"天空是蓝色的,因为阳光穿过大气层时,短波长的蓝色光比其他颜色的光被空气分子散射得更多,这种现象被称为瑞利散射。"

4. 结构化输出设计

4.1 JSON格式输出

python 复制代码
提示:"""
请生成一个包含以下信息的JSON对象:
- 名字
- 年龄
- 职业
- 兴趣爱好

示例格式:
{
"name": "张三",
"age": 30,
"occupation": "软件工程师",
"hobbies": ["阅读", "旅行", "编程"]
}
"""

输出:
{
"name": "李四",
"age": 25,
"occupation": "数据分析师",
"hobbies": ["绘画", "跑步", "音乐"]
}

4.2 Markdown格式报告

markdown 复制代码
提示:"""
请根据以下信息生成一份Markdown格式的报告:
- 标题:气候变化对农业的影响
- 引言:简要介绍气候变化的背景。
- 影响:详细描述气候变化对农业的具体影响。
- 结论:总结并提出应对措施。
"""

输出:
# 气候变化对农业的影响

## 引言

气候变化是指长期气候模式的变化,主要由人类活动引起的温室气体排放导致...

## 影响

气候变化对农业的影响主要体现在以下几个方面:
1. **作物生长周期**:温度升高和降水模式的变化影响作物的生长周期...
2. **病虫害**:气候变化可能增加病虫害的发生频率和严重程度...
3. **水资源**:气候变化导致的极端天气事件,如干旱和洪水...

## 结论

为了应对气候变化对农业的影响,需要采取以下措施:
1. 推广耐高温和抗旱作物品种。
2. 改进农业灌溉技术,提高用水效率。
3. 加强农业病虫害监测和防治工作。

4.3 表格格式数据

复制代码
提示:"""
请生成一张包含以下信息的表格:
- 产品名称
- 价格
- 库存数量
- 供应商

示例格式:
| 产品名称 | 价格 | 库存数量 | 供应商 |
|---|---|---|---|
| 产品A    | 100   | 50    | 供应商1 |
| 产品B    | 200   | 30    | 供应商2 |
"""

输出:
| 产品名称 | 价格 | 库存数量 | 供应商 |
|---|---|---|---|
| 产品C    | 150   | 20    | 供应商3 |
| 产品D    | 250   | 10    | 供应商4 |

5. 实际应用场景

5.1 代码生成

python 复制代码
提示:"请用Python编写一个函数,计算一个列表中所有数字的平均值。"

输出:
def calculate_average(numbers):
    return sum(numbers) / len(numbers)

5.2 数据处理

复制代码
提示:"请将以下数据转换为标准日期格式:'12/31/2023', '01-01-2024', '2024.02.28'。"

输出:"2023-12-31, 2024-01-01, 2024-02-28"

5.3 文本分类

复制代码
提示:"请将以下句子分类为'正面'或'负面':'我今天很开心。' '这个产品真糟糕。'"

输出:"正面:'我今天很开心。' 负面:'这个产品真糟糕。'"

5.4 创意生成

复制代码
提示:"请编写一个关于勇敢小狗冒险的短篇故事。"

输出:"从前有一只勇敢的小狗,它每天都在森林里冒险。有一天,它遇到了一个迷路的小女孩,决定帮助她找到回家的路......"

6. 高级提示工程技术

6.1 角色提示

通过为模型指定特定角色来引导输出。

复制代码
提示公式:"作为[角色]生成[任务]"

示例:
- 任务:生成对客户查询的回复
- 角色:客户服务代表
- 提示公式:"作为客户服务代表,生成对客户查询的回复。"

6.2 种子词提示

通过提供特定的种子词或短语来控制输出。

复制代码
提示公式:"请根据以下种子词生成文本:[种子词]"

示例:
- 任务:编写一篇有关龙的故事
- 种子词:"龙"
- 提示公式:"请根据以下种子词生成文本:龙"

6.3 知识生成提示

从模型中引出新的、原创的信息。

复制代码
提示公式:"请生成关于X的新的和原创的信息"

示例:
- 任务:从给定的数据集中生成有关客户行为的见解
- 提示公式:"请从这个数据集中生成有关客户行为的新的和原创的信息"

7. 图像提示工程技术

7.1 明确图像生成目标

  • 目标不明确:"生成一张图片。"
  • 目标明确:"生成一张卡通风格的森林场景,包含动物和树木。"

7.2 提供详细描述

  • 简单描述:"生成一张城市图片。"
  • 详细描述:"生成一张现代城市的图片,包含高楼大厦、街道和行人,使用明亮的色调。"

7.3 使用多模态提示

结合文本和图像提示,提供更加丰富的信息。

复制代码
提示:"生成一张森林的图片,参考下面的描述和图像。
描述:一个宁静的森林,阳光透过树叶。
[参考图像链接]"

8. 实战框架:CRISPE模型

CRISPE是Prompt Engineering的经典框架:

  • Capacity and Role(能力与角色):你希望ChatGPT扮演怎样的角色
  • Reason(洞察):背景信息和上下文
  • Instruction(陈述):你希望ChatGPT做什么
  • Style(个性):你希望ChatGPT以什么风格或方式回答
  • Experiment(实验):要求ChatGPT提供多个答案

示例

复制代码
角色:产品经理
背景:需要设计一个赛博朋克风格的网站首页
任务:编写PRD文档,包含主题、简介、问题陈述、目标与目的、用户故事、技术要求等
风格:专业、详细
实验:提供3个不同的设计方案

9. 总结

Prompt Engineering是与大型语言模型有效交互的关键技能。通过掌握:

  1. 基础原则:明确目标、提供上下文、使用具体指示
  2. 核心技术:Zero-shot、CoT、ReAct等提示技术
  3. 结构化输出:JSON、Markdown、表格等格式设计
  4. 实战应用:代码生成、数据处理、创意写作等场景
  5. 高级技巧:角色提示、种子词提示、知识生成等
相关推荐
NAGNIP8 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab10 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab10 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP13 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年13 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼14 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS14 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
warm3snow14 小时前
Claude Code 黑客马拉松:5 个获奖项目,没有一个是"纯码农"做的
ai·大模型·llm·agent·skill·mcp
天翼云开发者社区15 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈15 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能