提示词工程
1、什么构成了一个好的提示
提示:输入给AI的问题或指令
好的提示能极大地提高AI的理解和执行的效率,让AI提供更准确和有用的回答。
提示工程(Prompt Engineering):研究如何写出好的提示
提示工程原则:
零样本:不给AI任何回应示范
小样本:给AI几个回答,作为参考的例子
言简意赅,不要啰嗦空洞不严谨
2、限定输出格式
为什么要限定输出格式:
(1)影响用户消化信息的效率
(2)当调用API时,指定输出格式能方便用代码对ai回答作进一步处理(如提取信息)。
若不指定格式,那ai每次输出的格式可能都不一样,加大了从回答中提取信息的难度。
而且还要告知ai 不要包含任何没必要的补充信息,即不要有额外文字。 这样才可以得到能直接用代码解析的数据。
示例:
JSON(JavaScript Object Notation,JavaScript的对象表示法):
{}JSON对象,相当于Python字典
(但是字典的key值可以是整数,而JSON对象的键只能是字符串类型,而且字符串必须被双引号包围,单引号不行)
[ ] JSON数组,相当于Python列表
数组里面的元素可以是一个个对象
JSON对象的值可以是:
要把ai返回的JSON字符串,转换成Python字典或列表,
可以用json库的loads方法
import json
result = json.loads(JSON字符串)
3、小样本
小样本提示:在ai回答前,给几个对话作为示例,即用样本对它进行引导。
ai 会利用上下文学习能力,先记忆那些内容作为知识,然后模仿其进行回应。就不用多费口舌对ai提要求了,因为它会自己领悟。
因此,小样本示范能让AI快速适应新任务,且不需要对模型进行任何训练,成本低又灵活。
如何做?
传给客户端实例的chat.completions.create方法的messages参数,可以包含一系列用户和AI的对话。把理想回答示范,作为前面几轮对话里AI的回答,放入messages列表里即可。
上图回答的格式是markdown。
4、思维链与分步骤思考
小样本提示有时候也会不起作用,比如在数学运算时。
所有奇数相加等于41,不是53。可见ai是胡乱算的。
问题在于,ai生成每个token所用的时间差不多,不会因为某个词需要涉及更多的思考,而花费更多的时间生成那个token。所以答案计算就被随便糊弄过去了。前面的正确示范也没什么帮助。
这时可以借助思维链,它可以显著提升大语言模型进行复杂推理(算数、常识、符号推理)的能力。
如何使用?
在给ai的小样本提示里,展示中间的推理步骤,而不仅仅给出答案。那ai在生成回答时,也会模仿着生成一些中间步骤。就像被老师点名回答问题时,把思考过程讲出来再给出答案(更多时间,更有逻辑地分步骤思考),比直接瞬间给出答案要更容易和准确。
借助思维链,ai可以把注意力集中在当前思考步骤上,减少上下文的过多干扰。
即使不用小样本提示,只在问题的后面加上一句“let's think step by step”,也能提升ai获得正确答案的概率。