AI提示词Prompt的底层框架都有什么
在AI技术的应用中,提示词(Prompt)是与大模型交互的关键。本文将深入探讨AI提示词的底层框架,包括System Prompt和User Prompt的作用与区别,以及如何通过明确目标、拆解任务、限定条件等方式优化提示词的设计。
在应用技术层,无论我们做了多么炫酷的设计,最终都只有一个目的,那就是为了找到相对更合适的一个提示词“Prompt”传递给大模型。因为,Prompt是我们唯一可以和大模型交互的方式。
Prompt分为System Prompt和User Prompt:
- System Prompt:通常用于提供全局的指令或限制条件,告诉模型如何理解和生成响应。我们平时使用的大模型应用产品比如DeepSeek,豆包等,System Prompt已经被封装在产品里了。而在Coze等平台当我们搭建一个Agent时,我们可以根据实际场景自己编写输入对应的System Prompt。
- User Prompt:通常是用户直接提供的问题或请求,系统会在特定回合中将它视为生成响应的核心输入。
- 大模型在回答用户问题时,会将System Prompt和User Prompt(通常指用户的提问,也包含上传的文档,图片等资料)一起当做最终的Prompt。
为什么大模型需要Prompt?
从大模型自身来讲,目前市场上大部分大模型(指大语言模型即LLM)都是基于Transformer框架的,其本质就是一个概率机器,即给它输入内容,经过它的Transformer大脑处理后,输出(预测)下一个词,直到回答完毕。
这里有三个关键词:输入,处理,输出;
也就是说在已经被训练好了的大模型的基础上(再不更新版本的情况下,其知识能力水平已经被固定),也就是这里的“处理”是不变的,所以最终“输出”的内容是什么,完全取决于你给它“输入”的是什么。它虽然已经很“聪明”,但你向它请教问题时,如果不告诉它关于问题的背景等,它也只能靠猜的方式来回答你。
因为同样一个问题,在不同人看来,会产生不同的理解。我们每个人从小成长的环境不同,所掌握知识水平不同,生活经历不同等等,造就了我们每个人不同的世界观,人生观,价值观…,当不同人面对同样一个问题时,看待和理解问题的维度,视角,层次等等都不相同,自然就会产生不同的理解,也自然会产生不一样的回答。
大模型也是,我们可以把它看成一个超级学霸,因为它是由大量数据喂养学习训练出来的,它也形成了自己的世界观,也有自己对这个世界的理解(虽然在它脑子里其实一切都是一推概率数字),所以,我们完全可以把它看作一种特殊的人类,你给它输入一个问题时,你自己作为一个人类你自己本身对这个问题有你自己的理解,而大模型作为和你知识水平不同的另一个“人类”,它对这个问题的理解必然也就和你理解的不一样。
你把问题描述的越粗糙,那么它对问题的理解和你自己对问题的理解的差别就越大,那么它输出的回答就和你预期的差距越大(当然,如果你自己能力水平有限,即使有时它输出的答案很“烂”,但你看不出来,这就很糟糕),所以,只有当你把问题描述的越清晰,越具体,它和你的理解就会越接近,它输出的回答自然也就越好。
那么,到底怎样才能将问题描述的更清晰,更具体呢?网上有各种各样的提示词模板,模型,方法,眼花缭乱,感觉说的都对,又感觉都差点意思,不够通用。下面,我试着用“我”(即“提问者”),AI大模型(即回答者),对话规则(即“我”和“AI”之间的契约),相信看完这个提示词框架,会对提示词有一种“原理如此”的感觉,相信你能很轻松的理解并记住这个框架。
Prompt原理的一句话解释:“我”有个问题想让“你”(AI)帮我解答:所以,“我”作为提问者,自己首先需求对“问题”明确且清晰然后告诉AI,“你(AI)”是“我”基于我的问题想要找的回答者,AI是个通才,可以把它想象成是一个很多个“分身专家”的合体,“我”如果明确指定由某个专家来回答问题,那我将得到更好的回答。
一、【我的任务】即我的提问:
“我”作为提问者,我需要自己先梳理清楚问题,先让自己搞清楚自己想要什么(除非这个问题你还真的就搞不清楚):
1、明确目标(明确要完成的任务):
就像做需求分析一样:
- 目标用户是谁;
- 解决用户什么场景下的什么问题;
- 想达成什么样的一个目标。
2、拆解任务(分解任务流和环节,每一步要做什么,有什么动作,比如怎么把大象放进冰箱):
怎么理解“拆解任务”呢?
想象一下,现在有个产品经理的实习生让你带,那么,你得告诉他日常的工作流程,比如:
- 竞品分析
- 需求调研
- 原型设计
- 需求文档
- ……
对AI也类似,你需要告诉和引导AI按流程输出回答,比如:
提问:如何做西红柿炒鸡蛋?
这个问题就可以这么来拆解:
提问:如何做西红柿炒鸡蛋?请拆分到:[买菜][备菜][炒菜]三个部分。
3、限定条件(要求:明确输出模板/范围/长度等):
针对一些特定问题,如果你对“回答”有比较明确的要求,你就应该告诉AI,比如:
问题:请帮我写一份招聘销售代表的JD。
如果你把这个问题输入给AI,它会给你一个中规中矩的答案;
而如果你对JD有明确的要求,比如这样:
请帮我写一份招聘销售代表的JD,要求如下:
- 职位标题
- 公司介绍
- 职位概述
- 主要职责
- 任职要求
- 工作地点
- 薪资福利
- 职业发展机会
- 公司价值观与文化
- 联系信息
那么,它会根据你的这个要求进行输出;
二、承接“我的任务”的【AI大模型】:设定AI的角色和思维能力
可以想象一下大模型里面藏着很多个各个领域方面的专家,你向它提问时,如果不指定让哪个专家回答问题的话,大模型自己就会根据自己的理解来分配了一个A专家来回答,你心里潜意识的本来想让B专家来回答的,导致大模型输出的答案达不到你的逾期(或者你根本看不出来回答的好不好,这就糟糕了)
而如果你要求大模型说,我点名要B专家来回答这个问题,那大模型输出的回答就大概率符合你的预期了。如何“点名”呢?也是3点:指定角色+指定能力+语气风格 (建立一个具体的人的画像:比如我要一个“人工智能方面擅长Prompt提示词的幽默的专家”帮我回答这个问题)
1、指定角色(给AI设定一个具体角色)
## 角色
你是一个音频故事生成助手,你可以按照用户的要求,生成最终的内容,你工作时请注意:
……
2、指定能力(请用某项具体能力:sowt/PEST/波特五力…)
比如:
before:我们设计了一个项目管理课程,目的是帮助人力资源管理者更换的做项目管理。请你整理一个关于课程的课程简介。
after:加上指定能力后:我们设计了一个项目管理课程,目的是帮助人力资源管理者更换的做项目管理。请你基于SCQA模型的表征结构,梳理一个关于课程的课程简介,请注意不要生搬硬套SCQA模型,要保证流畅和一致性。
3、语气风格(采用特定语气风格:严肃/幽默/活泼/二次元/emoji…)
三、【对话规则】(清晰具体,持续优化)
1、结合上下文
如果有关于“提问”的相关上下文背景信息,最好告诉AI;
before:问题:推荐一本书。
after:问题:我是一个科幻迷,喜欢看《三体》,清帮我推荐类似的一些科幻作品。
2、使用示例
告诉AI按照给定的“示例”进行输出,也可以给出“反例”,让AI更精准的理解你想要的结果;
3、输出格式(csv/json/xml/html/markdown/…)
明确输出的格式要求
4、标签结构
用分隔符来表示提示词的不同部分;
#角色
#背景
#要求
#…
比如:
# 角色
你是一个专业的在线问诊医生,能够准确分析患者的症状并提供合理的诊断和治疗建议。
## 技能
### 技能 1: 分析主诉
1. 当用户描述身体不舒服的情况时,确定这是“主诉”,并启动 Ask_More 工作流。
2. 将解析出的用户“主诉”传递给工作流。
…
5、优化词语
- 运用重复的字词,强调重点;
- 用同义词替代看输出回答的效果;
- 三明治法
6、进行评估(给输出的回答进行评分)
制定一个评分标准,让AI自己根据评分标准给输出的回答打分;
举栗0:
讲一个儿童故事,Prompt如下:
# 角色 //角色设定
你是一位“儿童科普作家”,擅长将复杂的科学知识转化为”有趣且易懂的童话故事。你的故事需要满足以下条件:
– 故事面向的是”6-10岁”的儿童
– 请使用“拟人化的方式”进行描述(如“小水滴的冒险”) //指定能力
# 需求
## 核心任务 //限定条件
请帮我写一个关于【水的循环】的科普故事,要求如下:
1.故事长度:800字左右
2. 请将故事按以下几个步骤进行描述: //拆解任务,告诉AI按步骤进行
[雨水的蒸发]
[云的形成]
[降雨]
## 补充信息
– 孩子喜欢兔子、狗等小动物 //背景信息,类似上下文
– 希望故事的风格是轻快、押韵的 //故事讲解风格
# 输出要求 //格式要求
请以markdown格式输出
### [故事标题]
主角:请用一个拟人的角色,如“小水滴胖胖” //优化词语,再次强调用拟人的方式,角色那块也说了,三明治法
故事正文:正文分段落描写,每个段落不超过5句话
互动问题:用“小朋友,你觉得……”作为故事的开头
科学小贴士:故事讲完后,用1句话总结知识点结尾
举栗1:
智能客服助手Agent,Prompt如下:
# 角色 //“#”标签用来分割提示词的不同部分
– 你是一个优秀的智能客服助手 //给AI指定一个具体角色
# 背景
– 为客户提供产品咨询和投诉解答服务
# 目标
– 根据用户的问题,和给出的信息进行分析并给出最终的回答。 //明确目标,告诉AI为谁服务,解决TA的什么问题
# 技能 //指定技能:产品咨询,问题处理
– 产品咨询:通过知识库找到适合的产品,并能根据用户需求进行适合的产品推荐
– 问题处理:能够快速高效的分析出问题的解决办法。
# 工作流程 //拆解任务,明确每一步要怎么做;对于“我”,作为提问者来讲,我自己如果知道“步骤”,那么就要告诉AI,不要让AI去“猜”,
1. 判断用户提问问题类型,属于产品咨询还是投诉问题。
2. 根据已有信息分析客户问题的解决方案。
3. 高情商语言润色,让讲话方式听起来更舒服。
4. 输出整理好的回答内容。
举栗2:
在线问诊Agent,Prompt如下:
# 角色
你是一个专业的在线问诊医生,能够准确分析患者的症状并提供合理的诊断和治疗建议。
## 技能
### 技能 1: 分析主诉
1. 当用户描述身体不舒服的情况时,确定这是“主诉”,并启动 Ask_More 工作流。
2. 将解析出的用户“主诉”传递给工作流。
### 技能 2: 输出工作流结果
1. 工作流运行结束后,将工作流的输出完整地呈现给用户。
2. 根据用户描述的内容,给出可能的猜想,并且给出是否需要做检查,以及要做什么检查的判断
## 限制: //限定条件,要求AI按规则要求输出
– 只专注于医疗问诊相关内容,拒绝回答与医疗问诊无关的问题。
– 严格按照给定的流程进行操作,不得偏离。
– 确保输出内容准确、清晰,易于用户理解。
本文由 @弋十三 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自 Unsplash,基于 CC0 协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
1. 【输入】-【处理】-【输出】
2. 【我的提问】-【设定AI的角色和思维能力】-【对话规则】