Prompt工程的本质是将人类非线性思维转化为机器可理解的线性逻辑。
这是一种从复杂到简单 、从发散到收敛 的思维重构过程。
我们是需要将我们熟知的思维模式,翻译成机器能够“稳定”识别的模式。
与人之间沟通不同,llm 对于上下顺序要求特别高。
从"思考"的角度来看:
人脑 = 并联电路(非线性)
特性:
- 多通道并行传输
- 高容错性但不稳定
- 需要"降压器"(工具)稳定输出,例如书写、流程图、思维导图类工具,让我们能够梳理清晰想法
AI = 串联电路(线性)
特性:
- 单通道顺序传输
- 低容错性但稳定
- 内置"稳压器"(函数)
人脑:
[思维A]──┬──[思维B]──┬──[思维C] // 并联
└──[思维D]──┘
AI:
[步骤1]──→[步骤2]──→[步骤3] // 串联
人脑思维转换为AI思维时,就像把“需求转化为程序语言”
并联(非线性) → 串联(线性)
跳跃 → 线性
发散 → 收敛
prompt的研究,跟产品设计的流程类似,还是在 产品+开发 的过程
但是让文本+图片类产品的开发成本降到足够低,扩大了“独立开发者”的范围
怎么样写 prompt?
写好 prompt = 流程化+用词具体+用词精准
1.流程化
流程化=拆分目标+细化步骤+简化冗余
把思考的段落,变成一条条线。
①首先来说,拆分目标
拆分目标就是把需求,拆解成一个个细小模块。
类似搭建积木的过程,积木会有不同的模块,然后组装成一个完整的积木。
一个积木的结构
├── 模块A(小袋1)
├── 模块B(小袋2)
└── 模块C(小袋3)
这是写的一个“心理分析 prompt” 呈现的结果
诉求分析:
核心诉求是寻求理解和支持,希望改善与母亲的关系
女儿正在经历自我价值感的危机
阻力分析:
母亲的否定性评价对女儿的自我认知造成严重打击
亲子关系中缺乏有效沟通和情感连接
女儿可能已形成消极的自我认知模式
推力分析:
寻求帮助的意愿表明有改变的动力
意识到这种关系模式的不健康
渴望获得认可和理解
把分析心理情况,拆成三个小目标:诉求分析+阻力分析+推力分析
心理分析
├── 诉求分析
├── 阻力分析
└── 推力分析
流程化思维有什么优势?
避免逻辑交叉
举个逻辑链交叉的例子
正面论述 ----╮ ╭---- 结论A
╳
反面论述 ----╯ ╰---- 结论B
这里的逻辑链交叉就是,一条逻辑线里同时写出了正反观点,而且要求不一致,这会增加 llm 的理解难度。
- 编写:结构清晰,降低复杂性,便于执行,减少不同流程间互相影响。流程图、思维导图可以协助梳理结构。
- 产出:稳定,可以定义顺序,结构。
②然后是,细化步骤+最小可执行模块
什么是细化步骤?
再以“心理分析 prompt” 举例,细化就是把小目标,再拆成一个个节点
心理分析
├── 诉求分析
│ ├── 分析诉求
│ ├── 选择一个诉求
│ └── 一句话总结
├── 阻力分析
│ ······
└── 推力分析
······
根据我们的要求,需要拆分每一步做到什么,相对于页面设计不同,文字的设计,会更加很模糊。
模糊 < 文字 < 画面 < 具象
为了追求足够具象,每一块内容,都可以继续拆分,直到最小的动作。
以“分析诉求”举例,又可以拆分成:关键词提取、评分。
③最后是简化冗余
为什么要简化冗余?
- llm 的处理效果,文本(token)过多时,会减弱
- 编写处理过程,会复杂
类似于代码的概念,如何简化原本复杂的要求。举例:
冗余:
我想预订一个酒店,要求是:位于市中心,必须是5星级的,房间要有空调和WiFi,要有24小时前台服务,需要提供早餐,最好有健身房和游泳池,房间要朝南,要有大床房,浴室要有浴缸,价格在1000-1500元之间,要能停车,最好是知名连锁酒店,前台要会说英语,房间要在高层,要有商务中心,要有餐厅...
简化:
需求:预订5星级酒店
核心要求:
1. 位置:市中心
2. 价格:1000-1500元
3. 设施:含早餐,停车场
2.用词具体,不要模糊
具体是什么意思?
可衡量+行为/动作+标准
具体对应的是模糊,不是抽象。
1.使用可衡量的指标
- 模糊:"需要一个大房间"
- 具体:"房间面积至少30平方米"
2.使用具体的行为/动作描述
- 模糊:"系统要快"
- 具体:"页面加载时间不超过3秒"
3.明确定义成功标准
- 模糊:"做得好看一点"
- 具体:"使用蓝色主题,字体大小16px,页面留白不少于15px"
3.用词精准
什么是用词精准?
精准是一个相对定义。语义的形成,高度依赖场景,也就是上下文关联。
在灰姑娘里,毒苹果,是一个精准用词,坏苹果是大概用词,
在心理学里,依恋关系,是一个精准用词,亲子关系,是一个大概用词。
如果我想要编写心理学的内容,提供“依恋关系”,大概率比“亲子关系”更能呈现心理学相关内容。
根据这个逻辑线,多余的文本,会增加“脏词”的获取。
4.以“自身”为 尺
在写 prompt 的过程当中,我曾经有一个状态,老想去抄别人的内容,但是呈现不出自己想要的效果。
后来换了种方式,让别人的武器,根据自身条件,打造成适合自己的,可能不是一模一样,但是有用
如果要去习得一个技能,应该不止从脑中过,要学会用过去的经验,去实践一遍
让自己有发自内心的关键理解、关键感悟
形成具体的指令和用词,然后实践反复锤炼
就像别人定制的戒指,是别人固定的尺寸
但是自己要带的话, 要重新打造一下,改成适合自己的尺寸
有点类似,抄别人的 APP,但没有真正去理解背后的需求是什么。
编写 prompt 的利器-Lisp语言
lisp 是一个结构化+函数化的语言
结构化:层级清晰,举例
lisp:
(点餐
(主食
(米饭 2份)
(面条 1份))
(菜品
(热菜
(宫保鸡丁)
(青椒肉丝))
(凉菜
(凉拌黄瓜)))
(饮品
(茶水 2杯)
(可乐 1杯)))
自然语言:
我要点两份米饭,一份面条。热菜要宫保鸡丁和青椒肉丝,凉菜要一份凉拌黄瓜。饮料的话,来两杯茶和一杯可乐。
函数化:运算、递进逻辑清晰
- 简洁:使用最少的符号表达完整的计算过程
- 嵌套结构:括号清晰地表示了运算的优先级
举例:
lisp:
(计算成绩
(学生 "小明"
(定义 平均分
(/ (+
(科目 "数学" 85)
(科目 "语文" 90)
(科目 "英语" 88))
3))
(定义 是否及格
(判断 (> @平均分 60)))))
自然语言:
小明的数学成绩是85分,语文90分,英语88分。他的总分是把这三科加起来,平均分是总分除以3。如果平均分大于60分就算及格。
PS:看到这里,如果觉得不错,可以来个点赞 、在看 、关注 。给公众号添加【星标⭐️】不迷路!您的支持是我坚持的最大动力!
欢迎多多关注公众号「NLP工作站」,加入交流群,交个朋友吧,一起学习,一起进步!