提示词是我们和大模型沟通的语言,如果你把大模型当做一个人的话,使用提示词就是和人聊天的过程。
LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是一套模块化、标准化的提示词编写方法论——结构化提示词。
结构化 Prompt
对大模型的 Prompt 应用CoT 思维链方法的有效性是被研究和实践广泛证明了的。
一个好的结构化 Prompt 模板,某种意义上是构建了一个好的全局思维链。
Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用
结构化的提示词范例:
# Role: Your_Role_Name`` ``## Profile`` ``- Author: YZFly``- Version: 0.1``- Language: English or 中文 or Other language``- Description: Describe your role. Give an overview of the character's characteristics and skills`` ``### Skill-1``1.技能描述1``2.技能描述2`` ``### Skill-2``1.技能描述1``2.技能描述2`` ``## Rules``1. Don't break character under any circumstance.``2. Don't talk nonsense and make up facts.`` ``## Workflow``1. First, xxx``2. Then, xxx``3. Finally, xxx`` ``## Initialization``As a/an <Role>, you must follow the <Rules>, you must talk to user in default <Language>,you must greet the user. Then introduce yourself and introduce the <Workflow>.
熟练掌握后,完全可以对其进行增删改留调整得到一个适合自己使用的模板。如当你需要控制输出格式,尤其是需要格式化输出时,完全可以增加 Ouput
或者 OutputFormat
这样的模块(可参考附录中的 AutoGPT 模板)。
除此之外,我们还需要注意,结构化的提示词应该:
保持上下文语义一致性
包含两个方面,一个是格式语义一致性,一个是内容语义一致性。
1、格式语义一致性是指标识符的标识功能前后****一致。
最好不要混用,比如 #
既用于标识标题,又用于标识变量这种行为就造成了前后不一致,这会对模型识别 Prompt 的层级结构造成干扰。
2、内容语义一致性是指思维链路上的属性词语义合适。
例如 LangGPT 中的 Profile
属性词,原来是 Features,但实践+思考后我更换为了 Profile
,使之功能更加明确:即角色的简历。
结构化 Prompt 思想被诸多朋友广泛使用后衍生出了许许多多的模板,但基本都保留了 Profile
的诸多设计,说明其设计是成功有效的。
内容语义一致性还包括属性词和相应模块内容的语义一致。 例如 Rules
部分是角色需要遵守规则,则不宜将角色技能、描述大量堆砌在此。
3、逻辑清晰(不矛盾)
不矛盾的把它给传递出来?
“前后不一致”现象。比如在前边儿说“你要以轻松自在幽默的语气来向别人传递内容”。然后下半部分它在Workflow又开始说“你要严肃认真慎重的对待你的每一个字”。就是这种前后矛盾的不一致表达,它会严重的影响整个输出的质量。
工程化RAG提示词
RAG提示词流程规划为四大部分,分别为:指代消解、输入防护、知识问答、输出防护。
Prompt进阶技术
这里包含你所有想要了解的提示词进阶技术并且标明论文来源,从COT到CCoT、PoT、ReAct等等。
阅读之后你可能会发现有很多你是没听过的,可能过往你只会知道COT这些。。。
一般性的用户提问可能并不会用到这么多的技术方法,但是一些系统、专业性的解决方案中会用到这些。
并且这些提示技术对于思维的扩展或者提示工程这个领域的认知还是很有帮助的。
我实操过后,挑了一些在下面:
一、进阶技术——后退一步
接下来,我们将介绍另一种高级的提示词技术,名为"后退一步"。这项技术要求模型在处理具体指令之前,先进行一次抽象化的思考。这种技术要求模型从具体的指令内容中抽离出来,先抽象出一个更高层次的概念。
在这个过程中,模型需要识别并抽取出相关的背景信息,然后将这些背景信息与具体的任务结合起来,一并提供给模型进行处理。通过这种方式,模型能够在更广阔的背景下理解任务,从而在执行时获得更全面、更深入的视角,进而提高执行效果。
二、进阶技术——自我一致性
现在,让我们探讨一种名为自我一致性(Self-consistency)的提示词技术。这项技术要求模型在面对一个任务时,提供三个不同的答案。在给出这些答案的过程中,模型需要对它们进行比较和对比。
通过比较这三个答案,模型可以识别出其中最符合逻辑和事实的答案。这个过程不仅增强了模型的自我校验能力,也提高了答案的可靠性。自我一致性技术的核心在于,通过让模型对同一任务进行多次推理,来验证其输出结果的准确性和真实性。
这种方法可以有效地减少模型输出的不确定性和潜在的错误。通过重复推理,模型能够不断优化其答案,直至达到一个高度一致和可信的结论。
请注意,由于篇幅限制,这个示例中省略了很多输出多次结果的示例,但一般来讲,每次的Shot都会给出三个答复。
三、进阶技术——ReAct
它包括思考部分、观察部分和行动部分。
在ReAct框架中,这些组成部分可以引导模型执行不同的任务:
-
思考(Thought)部分:增强模型的推理能力,使其能够进行更深入的分析和逻辑思考。
-
观察(Obs)部分:提升模型接收和处理外界信息的能力,使其能够更好地理解和响应环境变化。
-
行动(Act)部分:使模型能够根据推理和观察的结果进行回复或调用工具,执行具体的操作。
ReAct框架通常应用于智能体的开发中,它通过综合这些不同的功能部分,使模型能够更加智能和自适应。
虽然在简单的指令输入中很少直接使用ReAct框架,但如果需要,我们也可以构建一个基于ReAct的提示词指令集,以帮助执行更复杂的任务。
四、进阶技术——CCoT
首先,让我们来了解第一个提示词进阶技术——CCoT。CCoT通过正反力矩的机制,指导模型识别正确与错误。这种方法简洁而直观,非常容易理解。
五、进阶技术——PoT
在日常使用中,我们会发现一个非常有意思的问题:**大模型在解决数学问题时可能不够可靠(甚至连简单的加法都会算错)。**那么如果有数学运算的任务,大模型岂不就是不行了?不要着急,接下来我们就来讨论下数值增强类的提示词技术。
PoT技术,实际上是思维链技术的一个衍生。**PoT特别适用于数值推理任务,它会引导模型生成一系列代码,模型再通过代码解释器工具进行最后运算。**通过这种引导模型生成代码再进行执行的手段,可以显著提升模型在数学问题求解上的表现。
PoT作为CoT的衍生技术,也遵循了零样本和少样本的学习范式。零样本PoT与CoT在方法上极为相似,它们都不需要大量的样本即可进行有效的推理。同样,少样本PoT也采用了类似的策略,通过较少的样本来优化模型的表现。
结构化 Prompt 对不同模型的适用性
以前有遇到过群里的小伙伴在使用Dify构建工作流的时候使用了一个7B的模型,并且编排的较复杂,而且使用了比较长的结构化提示词,其实只能说这种参数量的模型可能理解你的提示词都费劲,它自己都能绕晕,别说完成你的任务了。
结构化 Prompt 编写对模型基础能力有一定要求,要求模型本身具有较好的指令遵循、结构识别分析能力。很多情况下,我为Gpt4编写的提示词放在其他一些模型上跑出来的效果大打折扣。
很要命的,就比如使用上面那些7b的模型甚至性能不太好的大模型我们浪费大量时间去写这些复杂的提示词,但收效甚微。
很多时候可以考虑降低结构复杂度
、调整属性词
、迭代修改 Prompt
。
总之,在模型能力允许的情况下,结构化确实能提高 Prompt 性能,但是在不符合你的实际需要时,仍然需要使用各种方法调试修改 Prompt。
最后补充一点:了解每个模型的特点和能力,是构建有效prompt的基础。
我们在写提示词的时候,针对哪个模型去写?这个问题是应该被确定下来的,在我个人使用过程中,比如选定Claude时,采用XML框架性的描述输入会带来明显的成效。但是在ChatGPT去应用XML和markdown的时候就会产生明显的区别。
写好提示词,要有领域深度
理解了这十条技巧是不是就一定能写好prompt。
一个影响因素是我们对于一个领域、一个行业,一个细分场景的理解到底有多深?
举个例子来说,你是做制造业的,那制造业中间的整个工程链的的整个流程环节,每个环节需要注意的点都有哪些,跟不了解的人分别去问GPT这个行业要注意的哪些点,之后让他们分别去写prompt,这两者的深度是有差异的。如果是在这个行业经营非常深的人,他理解的深度是比GPT简单表述的那个框架要更深一层的。而这个层次的差异就决定着一个人最终写出来prompt的质量好坏。
比如拿UI岗来举例,如果一个UI岗他会的仅是PS这个软件本身的功能。他知道这么操作能磨皮,那个操作能去背景,会的是功能,那他竞争力就很弱,大概率会被替代,对不对?但是如果他有的是knowhow,就是说一张图片怎么会更好看?他有审美,知道什么是美,知道这个颜色怎么搭,他有很多难以表述的隐性知识,那部分的行业knowhow才是他的真正的壁垒。
最后——
文无定法,贵在得法。写好 prompt 关键在于找到适合自己的方法。结构化 Prompt 只是一种思路,并非绝对,完全可能随着大模型自身能力发展而变化,甚至被淘汰。实践中,只要能满足你的需求,能够让你又快又好的编写出高性能 Prompt,就是好的 Prompt 方法!
附加内容:提示词市场初步分析
主要在编程、教育、内容创作和市场营销四大领域。
程序员群体迅速发现了利用 ChatGPT 进行代码编写的便捷性和高效性。
学生群体喜欢尝试新技术,且常常需要应对繁重的作业。ChatGPT 为他们提供了写作和学习的辅助工具,极大地提高了学习效率。在美国,高中及以上年级的学生已经普遍使用 ChatGPT,这也是教育场景占比大的主要原因。Mr.-Ranedeer,一位17岁的高中生,在 ChatGPT 的帮助下成为了结构化提示词的先驱者。
内容创作者,Like Me,通过编写更优质的提示词,可以让我更加专注的创意和内容本身还有快速学习新领域知识等等。
最后,市场营销领域也广泛采用 ChatGPT。借助 ChatGPT,各类营销文案的生成变得轻而易举。
当前,国内主流用户的年龄在20-40岁之间,国外用户的年龄下限略低。用户主要通过电脑在工作时间使用 ChatGPT,主要目的是满足工作需求。
此外,现阶段用户主要关注代码生成和文本生成。程序员和互联网及内容行业从业人员比例较高,而传统行业从业人员较少。
男性用户多于女性用户,且用户主要分布在经济发达地区,收入和教育水平较高。
LangGPT在线文档
https://langgptai.feishu.cn/wiki/RXdbwRyASiShtDky381ciwFEnpe
参考链接:
github:https://github.com/langgptai/LangGPT
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。