当前位置: 首页 > news >正文

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

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

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


1. 什么是Prompt Engineering?

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

1.1 Prompt的基本概念

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

示例对比

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

2. Prompt Engineering最佳实践

2.1 核心原则

1. 明确目标

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

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

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

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

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

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

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

# 无示例:"生成一个关于产品的报告。"
# 有示例:"生成一个关于产品的报告,格式如下:
# --产品名称:
# --价格:
# --特点:
# --优点:
# --缺点:"
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格式输出

提示:"""
请生成一个包含以下信息的JSON对象:
- 名字
- 年龄
- 职业
- 兴趣爱好示例格式:
{
"name": "张三",
"age": 30,
"occupation": "软件工程师",
"hobbies": ["阅读", "旅行", "编程"]
}
"""输出:
{
"name": "李四",
"age": 25,
"occupation": "数据分析师",
"hobbies": ["绘画", "跑步", "音乐"]
}

4.2 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编写一个函数,计算一个列表中所有数字的平均值。"输出:
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. 高级技巧:角色提示、种子词提示、知识生成等
http://www.dtcms.com/a/573594.html

相关文章:

  • 能源生态系统的架构设计:利益相关方治理与跨行业协作
  • 潍坊seo管理浙江seo外包
  • BuildingAI二开 用户信息增加Coze套餐名称和剩余天数技术架构
  • 韦东山嵌入式Linux学习第3篇环境搭建与开发板操作:IMX6ULL_Pro
  • 自动驾驶深度学习模型的SOTIF优化方案
  • 对销售和营销的思考
  • 图像显示框架四——应用与SurfaceFlinger构建桥梁(基于Android 15源码分析)
  • 设计网站首页1农村自建房设计图纸及效果图大全
  • Git 同一个文件多次修改的 revert 的顺序
  • RFSOC29DR教程:iberf光口自环模块测试
  • (未完)超超超详版Sentinel2-L1C 数据获取及预处理 | hello,GEE!
  • wordpress企业网站入门嘉兴网站建设多少钱
  • 国外网站为啥速度慢为企业规划网络促销方案
  • 25微软MOS认证考试|时间 + 科目 + 备考攻略全梳理
  • 数控直流电流源设计指南:基于MCU+FPGA的精密控制与低功耗优化
  • mlir 编译器学习笔记之五 -- 开发避坑
  • 对接网站建设是什么意思网站的实用性
  • 深圳网站优化页面全功能多国语言企业网站
  • web开发之前后端分离的优势
  • 外贸网站推广平台有哪些网站建设公司南京
  • Linux 常用命令大全:从入门到精通
  • Linux-通过端口转发访问数据库
  • IPD PDT 团队月例会
  • 网站如何被百度收录之探索笔记
  • 番茄小说畅听红果短剧提示“低版本不安全“解决方案 【巨魔篇】
  • 付网站建设服务费什么科目查关键词排名软件
  • k8s——service详解
  • 【高阶数据结构】map,set,multiset,multimap的使用和介绍
  • Spring Boot + Spring Security ACL实现对特定领域对象的细粒度权限控制
  • 大模型应用03 || 函数调用 Function Calling || 概念、思想、流程