大模型_2:Prompt Engineering
目录:
- 1、提示工程简介
- 2、如何写好提示词
- 2.1 描述清晰
- 2.2 角色扮演
- 2.3 提供示例
- 2.4 复杂任务分解
- 2.5 使用格式符区分语义
- 2.6 情感和物质激励
- 2.7 使用英语
- 2.8 结构化提示词
1、提示工程简介
1.1 什么是Prompt 提示词?
- 不论是文生图应用,还是 GPT文生文的应用,都是 prompt 输入模型,模型给出结果。所以我们今天谈的所谓 prompt,就是指模型的输入
- Prompt:为模型提供输入,用以引导AI模型其生成特定的输出。

1.2 什么是Prompt Engineering提示工程?
- Prompt Engineering:是一种人工智能(AI)技术,它通过设计和改进 AI 的 prompt 来提高 AI 的表现。
- Prompt Engineering 的目标是创建高度有效和可控的 AI 系统,使其能够准确、可靠地执行特定任务。
因为人类的语言从根本上说是不精确的,目前机器还没法很好地理解人类说的话,所以才会出现 PE 这个技术。
另外,受制于目前大语言模型 AI 的实现原理,部分逻辑运算问题,需要额外对 AI 进行提示。
另外,目前的 AI 产品还比较早期,因为各种原因,产品设置了很多限制,如果你想要绕过一些限制,或者更好地发挥 AI 的能力,也需要用到 Prompt Engineering 技术。
- 如下:左图右图 prompt 基本是一样的,差别只在提示工程这个词是否用中英文表达。我们看到,一词之差,回答质量天壤之别。为了获得理想的模型结果,我们需要调整设计提示词,这也就是所谓的提示工程

所以,总的来说,Prompt Engineering 是一种重要的 AI 技术:
- 如果你是 AI 产品用户,可以通过这个技术,充分发挥 AI 产品的能力,获得更好的体验,从而提高工作效率。
- 如果你是产品设计师,或者研发人员,你可以通过它来设计和改进 AI 系统的提示,从而提高 AI 系统的性能和准确性,为用户带来更好的 AI 体验。
1.3 Prompt 再理解
- 一个广泛的理解误区就是将 prompt 简单理解为自己精心设计的那一小段提示词,而忽略了prompt 的其他来源 。
- 我们用输入法做个类比,第一张图片中的 “春眠” 是我们的输入,“不觉晓” 是模型输出,所以 “春眠” 是 Prompt。
- 到了第二张图片, “春眠不觉晓” 是模型输入(“不觉晓”是模型前一轮的输出),“处处闻啼鸟” 是模型输出,所以 “春眠不觉晓” 是 Prompt。
- prompt 的来源可以是我们的预设 prompt,也可以是用户的输入,甚至模型自己之前的输出也是 prompt。
- 所以,要用好大模型能力,我们应意识到:“所有会被模型用于预测输出结果的内容,都是 Prompt”。

1.4 为什么提示工程很重要?提示词是调用大模型能力的接口
- 从模型原理出发去理解 prompt, 它无处不在,Prompt 是调用大模型能力的接口,是用好大模型能力的核心,所以非常重要。

在 LLM 应用的开发和性能优化过程中,我们可以看到提示工程贯穿始终。
- 一切 LLM 应用推荐先从 prompt 工程着手建立原型,作为我们性能优化的基石。
- 若 prompt 工程无法满足实际需求,再分析性能瓶颈原因,采取进一步策略。比如通过 RAG 构造更好的模型输入,所以 RAG 本质上也是一种 prompt 工程。
- 如果要使用微调,通过 prompt 工程构造高质量的微调数据更是微调成功的关键。
- 很多朋友希望做垂直领域大模型,也需要通过 prompt 工程(或结合 RAG )先获取第一批高质量输入输出数据,然后微调模型。
- 模型性能提升后,数据质量进一步提升,将更优质的数据用于模型训练,然后更好的模型产出更好的数据,如此构建正向迭代循环(也称数据飞轮),其中每个环节都离不开好的提示工程。
2、如何写好提示词
2.0 六大原则(OpenAI官方)
- 最为推荐的是阅读 OpenAI 官方的提示工程文档,这里我也总结成了思维导图,一共六大原则,下面还有不少的小点,就不展开细讲了。
- 只讲一点,给模型“思考” 时间,是大家很容易误解的原则。它不是真的指让模型慢慢思考,给出答案,实际上侧重点在于让模型一步步思考,给出过程,最终得到答案,就像我们做数学题一样,给出计算过程后再给结果,能够提高结果的正确度。

OpenAI 文档:https://platform.openai.com/docs
2.1 描述清晰
那么怎么写好提示词,我们的答案是实践。

第一点,清晰地描述是最重要的,能做到这一点,能够解决 80% 的问题。
上图展示了一个我们与华硕校园的合作案例,当你第一次接触 GPT 的时候,不妨让 GPT 给你写一首诗吧,试着调整格式,调整诗歌体裁,再到提高内容质量,在这个过程中体会到对大模型的掌控感。
2.2 角色扮演
- 对当前的基于角色的模型而言十分有效,能够明显提高内容质量。在网上铺天盖地的基于角色的提示词被编写出来用于大模型训练以后,又加强了这一技巧的有效性。

2.3 提供示例
- 提供示例,尤其是在需要复刻文案结构和风格的场景下,多提供几个高质量示例

2.4 复杂任务分解
- 复杂任务分解。分为人去分解和使用模型分解两个方面。如果有成熟的 sop 或者你有自己的思路,就复用 sop 你自己分解 。如果没有,让模型自动分解,给出过程。 CoT 思维链也是一种模型自动分解的方法。

2.5 使用格式符区分语义
- 使用良好的格式,能大大避免由于语义歧义、冲突的导致的性能问题,markdown格式为我们的推荐格式。

测试:文心一言效果最好
2.6 情感和物质激励
- 情感和物质激励。情感激励有点类似情感 PUA那一套,物质激励则指给AI 小费这类技巧。一句话,对人的高情商那一套,对 AI 也很有效。示例可以参考前面的提供示例部分的内容。

2.7 使用英语
- 仅仅是将一个词使用了英文代替,前后的回答就天差地别。

2.8 结构化提示词
- 相比一般提示词,将提示词这一作文题变为填空题,编写门槛降低的同时,更加清晰和强大

2.9 小结
结合我们的探索和思考,我们认为提示词具有无限可能。
这里借用 Transformer 论文的一个句式, Prompt is All You Need!原因主要为以下三点:
- 1. 提示工程本质是人机沟通的艺术,只要我们人类自己仍在学习怎么高情商表达交流,人机如何更好的交互就会继续存在。
- 2. 从调用大模型能力的接口,提示工程转变为调用**大模型生态能力**的接口。我们现在已经从调用单个大模型能力转为调用多个大模型能力(如 GPT+ DALLE), 从调用 AI 模型能力转为调用 AI+工具的能力(如 GPT+代码环境),随着未来 Agents 的生态进一步完善,我们可以使用提示词调用以 LLM 为大脑的 Agents 生态。
- 3、提示工程的局限性,它的天花板,会随着大模型能力的进化,各种工具的接入,如 GPTs 等被 OpenAI 这些大模型公司不断拉高,具备更多更大的可能性。也许始于提示工程、终于提示工程是对大模型应用最好的答案,唯一的局限性在于我们对提示词的理解和实践是否足够深刻。
需要学习 PE 吗?
- 现在 AI 的发展还比较早期,了解和学习 PE 价值相对比较大,但长远来看可能会被淘汰。这个「长远」可能是 3 年,亦或者 1 年。
- 从用户的角度看,我认为学习 prompt 可以让你更好地使用 ChatGPT 等产品。
- 从产品的角度看,对于用户来说,我认为 prompt 会是个短期过度形态,未来肯定会有更友好的交互形式,或者理解能力更强的 AI 产品。
思考
Markdown格式的长文本Prompt提示词并不适用于生产环境,因为消耗了过多的Tokens,这对于成本计算来说无异于是一个很现实的问题。目前我也在研究通过关键词提炼,去大篇幅优化不必要的词汇,达到预期效果,共同去探索Prompt的进阶优化。
参考资料
- LangGPT 结构化提示词:https://langgptai.feishu.cn/wiki/VXmowI2boiqVFVkj9vlcNkhNnce
- LangGPT github:https://github.com/EmbraceAGI/LangGPT
- ChatGPT 中文指南:https://github.com/EmbraceAGI/LangGPT/blob/main/README_zh.md
- ChatGPT Prompt 系统学习:https://learningprompt.wiki/zh-Hans/docs/chatGPT/tutorial-basics/brief-introduction
- 【文心一言】提示词功能系统学习:https://aistudio.baidu.com/projectdetail/5939683
- 中文 prompts 精选:https://github.com/yzfly/wonderful-prompts
- ChatGPT 应用开发指南:https://github.com/yzfly/awesome-chatgpt-zh/blob/main/docs/ChatGPT_dev.md#chatgpt-%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97
- 提示工程指南:https://www.promptingguide.ai/zh
- 我用这10个Prompt提示词做了产品经理AI助手,效果平替PMAI
大模型_2:Prompt Engineering的更多相关文章
- Java 内存模型_2
title: Java 内存模型_2 date: 2017-01-28 02:04:06 tags: [JMM] categories: [Programming,Java] --- Why 理解 J ...
- 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅
摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...
- 文心大模型api使用
文心大模型api使用 首先,我们要获取硅谷社区的连个key 复制两个api备用 获取Access Token 获取access_token示例代码 之后就会输出 作文创作 作文创作:作文创作接口基于文 ...
- 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00
武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...
- PowerDesigner 学习:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- PowerDesigner 15学习笔记:十大模型及五大分类
个人认为PowerDesigner 最大的特点和优势就是1)提供了一整套的解决方案,面向了不同的人员提供不同的模型工具,比如有针对企业架构师的模型,有针对需求分析师的模型,有针对系统分析师和软件架构师 ...
- AI大模型学习了解
# 百度文心 上线时间:2019年3月 官方介绍:https://wenxin.baidu.com/ 发布地点: 参考资料: 2600亿!全球最大中文单体模型鹏城-百度·文心发布 # 华为盘古 上线时 ...
- 千亿参数开源大模型 BLOOM 背后的技术
假设你现在有了数据,也搞到了预算,一切就绪,准备开始训练一个大模型,一显身手了,"一朝看尽长安花"似乎近在眼前 -- 且慢!训练可不仅仅像这两个字的发音那么简单,看看 BLOOM ...
- DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍
DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍 1. 概述 近日来,ChatGPT及类似模型引发了人工智能(AI)领域的一场风潮. 这场风潮对数字世 ...
- 图神经网络之预训练大模型结合:ERNIESage在链接预测任务应用
1.ERNIESage运行实例介绍(1.8x版本) 本项目原链接:https://aistudio.baidu.com/aistudio/projectdetail/5097085?contribut ...
随机推荐
- java使用ftp连接linux处理文件
1.Maven依赖 <!-- FTP使用包 --> <dependency> <groupId>commons-net</groupId> <ar ...
- C++原子操作与内存序 1
问题 #include<iostream> #include<thread> int main() { int sum = 0; auto f = [&sum]() { ...
- 8 CSS文本属性
8 文本属性 font-style(字体样式风格) /* 属性值: normal:设置字体样式为正体.默认值. italic:设置字体样式为斜体.这是选择字体库中的斜体字. oblique:设置字体样 ...
- #分块,懒标记#LOJ 3631「2021 集训队互测」学姐买瓜
题目传送门 分析 有一个很简单的做法就是处理出每个位置能够一次到达的最左边的右端点(后继). 然后直接从 \(l\) 开始能跳就跳,这样单次询问时间复杂度是 \(O(n)\) 的. 观察到时间复杂度因 ...
- #树套树,二维线段树#HDU 4819 Mosaic
题目 多组数据,给定一个\(n*n\)的矩阵(\(n\leq 80,a_{i,j}\leq 10^9\)) 多组询问一个以\((x,y)\)为中心,边长为\(L\)的子矩阵最大值\(mx\)和最小值\ ...
- 直播预告丨OpenHarmony标准系统多媒体子系统之音频解读
今晚19点,OpenHarmony开源开发者成长计划知识赋能第五期"掌握OpenHarmony多媒体的框架原理"的第四节直播课,即将开播! 深开鸿资深技术专家苑春鸽老师,将在Ope ...
- C++ While 和 For 循环:流程控制全解析
C++ Switch 语句 使用 switch 语句选择要执行的多个代码块之一. 语法 switch(expression) { case x: // 代码块 break; case y: // 代码 ...
- Git 01 概述
版本控制 版本控制(Revision Control)用于在开发过程中管理文件修改历史,方便查看和备份. 它的作用如下: 实现跨区域多人协同开发. 追踪和记载一个或者多个文件的历史记录. 组织和保护你 ...
- Godot.NET C#IOC重构(2):TileMap 详解
目录 前言 TileMap添加 TileMap绘制 TileMap 连续图块 修改纹理原点 统一设置 自动地形 匹配规则 修改匹配概率 修改概率前 修改概率后 随机图块 Scattering 不连续间 ...
- 基于Material Design风格开源、易用、强大的WPF UI控件库
前言 今天大姚给大家分享一款基于Material Design风格开源.免费(MIT License).易于使用.强大的WPF UI控件库:MaterialDesignInXamlToolkit. 项 ...