本攻略适合谁阅读?
- 刚使用LLM的
- 不会使用LLM高效率解决问题的
- 上手LLM不知道怎么询问的
LLM(Large Language Model,大语言模型)是一种基于深度学习的自然语言处理模型,它通过大量的文本数据进行训练,能够理解和生成复杂的自然语言。
本攻略为面向新手的扫盲攻略,能够熟练问答的大佬可以直接PASS。当然,我也非常欢迎大佬在评论区对此攻略查漏补缺来完善此攻略
自然语言处理(NLP)是关键
在探讨如何编写高效的AI提示词之前,我们需要先了解AI是如何理解和处理人类语言的。这就要谈到NLP(自然语言处理)技术,它是AI处理人类语言的核心系统。
当我们向AI提出问题时,NLP会执行一系列复杂的语言分析过程:
- 进行分词和词性分析,理解每个词的具体含义;
- 解析句子的语法结构,确定各个语言成分之间的关系;
- 分析语境和上下文信息,以准确把握说话人的真实意图。
举个例子,我向AI输入以下信息,并提交了两个附件作为上下文背景:
现在帮我实现一个功能。
现在BorrowBook.vue中,点击确定按钮不是会调用handleLendBooks方法吗?那么在handleLendBooks处理完成后,将页面倒计时改成10秒倒计时(无论之前倒计时到哪一秒)
NLP识别到有两个文件:BorrowBook.vue 和 requests 文件,并且他们的文件类型分别是TEXT和TEXT/JAVASCRIPT,由于提到了VUE,他就知道,哦!这是在讨论一个Vue项目的代码修改需求。修改位置在哪里呢?根据“那么在handleLendBooks处理完成后”,哦!修改位置是handleLendBooks方法内!
不仅如此,还会提取关键信息,比如“handleLendBooks方法”,对于NLP来说,这是一个核心方法名,因为需要达到的目标效果是“改成10秒倒计时”。另外,它还察觉到一个特殊条件,就是“无论之前倒计时到什么值,都重置为10秒”
通过这种多层次的分析过程,NLP能够将用户的自然语言描述转化为结构化的任务信息,从而帮助AI理解咱们的真实意图,并提供准确的技术解决方案。
摒弃传统网络搜索引擎的关键词问法
通过上一节的了解,我们能够知道现在的AI,或者说LLM,是通过NLP处理用户询问的。因此在使用LLM时,我们需要摒弃传统搜索引擎的关键词思维模式。
主要是因为,传统搜索引擎依赖关键词匹配,如上面我举得例子,使用关键词的话大概率要这么问:“Vue JS 点击Button 修改倒计时”。然而,这种问法放在AI中,回答是会完全脱离现在的问题背景,完全不能高效率解决当下的问题,如下图:
下面再来对比一下,不适用关键词问法的回答:
相比之下,使用简单的关键词组合导致回答偏离实际需求,降低问题解决的效率,完全没有结合我现在的问题背景去提供解决方案。
现代AI系统通过NLP,具备了理解完整语境的能力。因此,我们应该采用更自然、完整的表达方式,清晰地描述问题场景、当前状态和期望结果。
这种表达方式能够让AI充分理解问题的上下文和具体需求,从而提供更精准的解决方案。通过提供完整的上下文描述,我们可以充分发挥大语言模型的语言理解能力,获得更高质量的答案,提升问题解决的效率。
结构化语言的提示词
什么是结构化?
结构化指的是,将信息按照特定的逻辑和层次进行组织和排列的方式。就像建筑需要框架,结构化语言根据不同的场景也有其固定的组织模式,使信息更有条理、更容易理解和处理。
比如
作文的文体结构:
- 议论文的结构
- 提出论点(开篇点题)
- 论证论点(具体论述)
- 论据一
- 论据二
- 论据三
- 总结升华(深化主题)
- 记叙文的结构
- 开头(介绍背景)
- 发展(情节推进)
- 起因
- 经过
- 结果
- 结尾(深化意义)
什么是结构化提示词?
在与AI交互时,结构化提示词是指以有组织、有逻辑的方式编写的指令。它让AI更容易理解用户的意图,从而提供更准确的回答。
比如,我上次询问的一个问题:
以下代码绘制出了一个图2这样的网格布局。
现在帮我实现一个需求,要求网格中的每一块都可以长按拖动调整位置。
细节点:
- 长按后,不需要实时跟随光标或者手指
- 长按拖动时,被调整位置的按钮可以直接跟拖动位置的按钮调整位置(拖动位置的按钮以及拖动位置之前的所有按钮都往前移动一格位置,为被拖动按钮腾出空间),但是不立即生效
- 长按拖动结束时(松开时),位置的改变开始生效
- 提供了两个附件作为上下文背景
- “以下代码绘制出了一个图2这样的网格布局。”表明我附件的内容是什么
- “现在帮我实现一个需求,要求网格中的每一块都可以长按拖动调整位置。”开始步入我的需求内容,要求达到什么目的
- “细节点:”让AI注意到以下内容是要特别关注的,要求AI按照以下细节来解决我的需求
结构化提示词询问的优势
可以说结构化的提示词询问带来的优势非常多:
- 提高响应准确度:结构化的问题能让AI更准确理解需求
- 获得规范化输出:明确的格式要求能得到更有条理的答案
- 便于后续处理:结构化的提示词更容易让NLP进行整理和分析
- 减少歧义:清晰的层次结构能降低理解偏差
万金油人工智能结构化提示词框架
Po主说句实话,结构化语言提示词这个东西根据每个人情况不同,写法也大不一样。我这里只提供一个框架思路,只可意会。
-
问题背景:一定要阐述问题背景,提供上下文,否则NLP无法结合你的背景解决你目前遇到的问题(生活常识问答等除外)。比如,现在项目用的是什么框架,用的什么语言,如果用的LLM输入Token够长,甚至能直接贴代码。
-
想要解决的需求或者问题:详细阐述下你目前遇到了什么问题,遇到了什么异常。还是那句话,一定要结合第一步提供的上下文去阐述。另外,最好先自己去了解下这个问题产生的当前环境是什么样的。比如说我下面遇到的这个问题,页面中图片无法加载,我就自己先去获取这个问题更多的信息,打开控制台发现,div里面img的src标签不见了,我就可以把这个信息提供给AI去让他更精准的捕获Bug根源。
-
(尝试过的方式):可选项,可以将自己已经尝试过的方式阐述给AI,这样就能让AI规避掉你已经尝试过的方法,提供更多方法给你,更高效率的解决问题。
-
想要达到的效果:也就是达到的目的,如上一节中我所描写的:“现在帮我实现一个需求,要求网格中的每一块都可以长按拖动调整位置。”,这里不多赘述。当然,目的写的越详细越好。
-
(限制解决的方法):可选项,缩小AI的处理方法,避免AI放飞自我用现在没有用到的技术栈来解决问题,亦或者不想影响到其他内容来解决问题。比如不想影响 XX 的前提下解决,只用编写 JS 解决这个问题等等
-
……(根据实际情况来处理增加)
DLC
根据上下文优化提示词内容
ChatGPT和Claude等LLM都采用对话形式来处理用户询问,在同一个会话页面中可以包含多轮对话,那么这些对话都共享同一个上下文环境。
这时候(除了首轮对话),如果我们想解决同一个问题背景的问题,就可以不用重复描述上一个对话中的背景,直接开始阐述我们的目的。
比如:
这是首轮对话的内容
后来我发现AI提供的解决方案有Bug,那么我可以这么问:
欸?!我直接说了“有一个大Bug”,没有提供任何背景信息,这是不是不符合我上面说的框架?此言差矣,由于我是在同一个上下文中进行的对话,所以这轮对话AI可以直接捕获已经产生的背景信息(即,首轮对话中我发出的提示词内容和AI回应的内容)来回答我后续的问题。换句话说,AI已经产生了记忆。
避免上下文干扰
按照我上一节所说,也就需要避免不同背景的问题都写在同一个上下文中,可能会让AI产生不必要的误解(日常知识问答除外)
必要时添加额外描述
由于LLM自身的参数影响(比如温度等),可能会对所写的提示词(也就是人类语言)产生可能的歧义,对于可能产生歧义的地方最好加上额外的描述。
比如,我昨天问的一个问题:
这里我先说明下,问题中的文本框是:XXX 框框框框框框。也就是带标签的文本框。提示词中,我所写的是“input框要占满一整行”,这里我认为可能会产生歧义,让我们先看代码:
<el-form-item label="管理员密码" prop="adminPassword">
<el-input
v-model="loginForm.adminPassword"
placeholder="请输入管理员密码"
@focus="handleInputFocus('adminPassword')"
></el-input>
</el-form-item>
我担心input框的框子会占满一行,标签被AI处理在了框的上面,所以我在后面的括号内做了额外描述,让AI更准确的解决我遇到的问题。
有关写文章的提示词示例
就拿我当前正在写的文章为例,给大家做一个参考:
我现在正在编写一个,关于如何编写高效率处理问答的“Prompt”的博客文章,我计划首先让大家了解人工智能是使用NLP去处理任务的。那么我该如何去通俗易懂的解释什么是NLP,NLP是如何处理大家的询问的?
篇幅不要太长,150字以内就行。语气不要死板,稍微带点活泼的语气就行,但也要保持严谨的态度,因为这是一篇教学文章。
- 主题一定要有:“关于如何编写高效率处理问答的“Prompt”的博客文章”。
- 首先要写什么内容:“我计划首先让大家了解人工智能是使用NLP去处理任务的”
- 这个首先要写的内容做一个分段,内容的第一段写什么:“解释什么是NLP”
- 内容的第二段写什么呢:“NLP是如何处理大家的询问的”
- 如何去写呢:“通俗易懂的”
- 对这个要写的内容做一个限制:“篇幅不要太长,150字以内就行”
- 做个性化处理:“语气不要死板,稍微带点活泼的语气就行,但也要保持严谨的态度”
- 对内容做一个规范、做一个调整:“这是一篇教学文章”
可以看到,还是如我所说,一定要按照结构化提示词!结构化提示词!结构化提示词!来写,重要的事情说三遍!
结束
本文篇幅不长,内容均源自个人实践与思考。由于经验所限,难免存在疏漏或不准确之处,敬请谅解,欢迎各位大佬在评论区批评指正。希望大家都能善用科技的力量,让工作与生活更加便捷高效。同时也希望大家都能成为“提示词高手”。再次感谢各位阅读本文。